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