[Python-Dev] locals() different behaviour when tracing?

Anders Waldenborg anders at 0x63.nu
Thu Oct 8 15:43:44 CEST 2009


Is it intentional that locals() returns a copy/snapshot of the local 
variables sometimes, and sometimes a reference? Like when enabling 
tracing, such as in the code pasted below. The documentation ("Update 
and return a dictionary containing the current scope's local 
variables.") is pretty unclear.

import sys

def X():
     l = locals()
     i = "foo"
     print "Is 'i' in stored locals()? ", ('i' in l)

print "Running normally"
X()

print "Enabling tracing"
def t(*a):
     return t
sys.settrace(t)
X()



More information about the Python-Dev mailing list