Hi,

Steven D'Aprano wrote:
On Fri, 31 Oct 2008 07:10:05 +0100, Tino Wildenhain wrote:

Also, locals() already returns a dict, no need for the exec trickery.
You can just modify it:

 >>> locals()["foo"]="bar"
 >>> foo
'bar'


That is incorrect. People often try modifying locals() in the global scope, and then get bitten when it doesn't work in a function or class.


def foo():
...     x = 1
...     locals()['y'] = 2
...     y
...
foo()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 4, in foo
NameError: global name 'y' is not defined

You cannot modify locals() and have it work. The fact that it happens to work when locals() == globals() is probably an accident.

Ah thats interesting. I would not know because I usually avoid
such ugly hacks :-)

Cheers
Tino

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature

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

Reply via email to