TL; DR:我想要一个在包含范围内查找的locals().
大家好.
我正在向一些化学家朋友讲授Python编程课程,我想确保我真正了解范围.
考虑:
def a():
x = 1
def b():
print(locals())
print(globals())
b()
Run Code Online (Sandbox Code Playgroud)
Locals打印一个空的环境,globals打印通常的全局变量.如何访问存储x的环境?很明显,口译员知道它,因为我可以参考它.
相关:什么时候发生范围?仅当包含x = 3时,a = x + 2上的以下nameErrors:
def a():
x = 1
def b():
a = x+2
x = 3
b()
Run Code Online (Sandbox Code Playgroud)
如果您注释掉x = 3,则代码可以正常工作.这是否意味着python在解释代码之前会对代码进行词法范围传递?