正如预期的那样,此代码引发了 UnboundLocalError。
x = 3
def f():
print("locals: " + str(locals()))
if x==3:
print("x is 3!")
x = 1
f()
然而,从输出中我们可以看到,locals() 开头是一个空字典:locals: {}
Traceback (most recent call last):
File "C:/Users/user/PycharmProjects/try/scatch.py", line 10, in <module>
f()
File "C:/Users/user/PycharmProjects/try/scatch.py", line 6, in f
if x==3:
UnboundLocalError: local variable 'x' referenced before assignment
根据我收集的信息,locals 字典包含 Python 知道的有关函数内变量的所有信息。显然,情况并非如此:除了 locals() 之外,函数内部必须有一些关于变量的信息。我的问题是——这些信息到底是什么?我们可以在函数的开头访问其中的变量列表吗?
最佳答案
您在 CPython 中寻找的答案是 f.__code__.co_varnames
记录在 inspect
模块。
>>> def f():
... print(f.__code__.co_varnames)
... x = 1
... y = 2
>>> f()
('x', 'y')
关于python - 除了 locals() 字典之外的函数内变量的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65621315/