problem with exec and locals()

Peter Otten __peter__ at web.de
Fri Jul 11 04:08:58 EDT 2008


Uwe Schmitt wrote:

>> Apparently, exec in locals() knows nothing about slots (because locals()
>> is the only dictionary in the universe where slots would be involved ? --
>> perhaps not, but close).
>>
>> Mel.
> 
> Thanks for your answer. I wonder if this is a bug, or did I miss
> something in the docs ???
 
Hm, the documentation has an explicit warning:

http://docs.python.org/lib/built-in-funcs.html#l2h-47

"""
locals(  )
 Update and return a dictionary representing the current local symbol table.
Warning: The contents of this dictionary should not be modified; changes
may not affect the values of local variables used by the interpreter.
"""

By the way, the local namespace is affected if you don't provide it
explicitly:

>>> def f():
...     exec "a=42"
...     print a
...     a = "whatever"
...
>>> f()
42

Peter




More information about the Python-list mailing list