x = 2
def my_func():
print(x)
print(dir())
my_func()
语句
print(dir())
的输出是一个空列表 []
.是否创建了本地命名空间但不包含任何名称,或者根本没有创建?
最佳答案
x
在您的情况下是全局的一部分,您可以通过以下方式检查它
x = 2
def my_func():
print(x)
print(locals())
print(globals())
my_func()
print(locals())
输出{}
和
print(globals())
输出{'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x004FC230>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'C:/Users/leeron.arad/Documents/test-proj/venv/t.py', '__cached__': None, 'x': 2, 'my_func': <function my_func at 0x0058E978>}
在全局字典中,您可以看到
'x': 2
打印在 my_func
中范围。x
values 不是在函数中创建的,它仅来自全局范围。
关于python - 使用自由变量时是否创建了命名空间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62114369/