Nick Coghlan wrote:

Peter Hansen wrote:

Nick, could you please comment on why you say this about globals()?
I've never heard of any possibility of "unreliability" in updating
globals() and, as far as I know, a large body of code exists which
does in fact rely on this -- much of mine included. ;-)


As Steve pointed out, I was, well, flat out wrong. You're quite correct - it's only locals() that can cause a problem.


Of course, just because modifications of the dict returned by globals() *do* reliably result in modifications to the global namespace, doesn't mean it's a good idea. ;)

Personally, I don't *want* to create variables by "magic" like that. I'd rather pass a few extra parameters around, and explicitly create any global names I need. If I really need to store objects under arbitrary names, then I probably should be using a regular dict (and passing it around as need be) instead of dumping stuff into globals(). (But then, I'm a devoted follower of the Pythonic principle of 'explicit is better than implicit' -- heck, even before I knew Python existed, I typically used this->name to reference C++ members despite the fact that 'this' was not required, just because I wanted to be able to *see* which variables were members and which weren't...)

Jeff Shannon
Technician/Programmer
Credit International

--
http://mail.python.org/mailman/listinfo/python-list

Reply via email to