我正在阅读 python 参考名称解析,它读取
类定义是可以使用和定义名称的可执行语句。这些引用遵循名称解析的正常规则,例外是在全局命名空间中查找未绑定的局部变量。
基于此,我希望以下代码
x = 10
def f():
x = 5
class Test:
y = x
return Test
print(f().y)
Run Code Online (Sandbox Code Playgroud)
打印10,但它打印5。这是参考文献中的错误,还是我误解了什么?
在这种情况下,“正常”规则适用:
x = 'global'
def f():
x = 'defined in f'
class Test:
print(x) # not local, normal rules apply
f()
# defined in f
Run Code Online (Sandbox Code Playgroud)
在第二种情况下,UnboundLocalError: local variable 'x' referenced before assignment如果我们在函数内部,我们会期望一个:
x = 'global'
def f():
x = 'defined in f'
class Test:
print(x) # unbound local at this time
x = 'assigned in Test'
print(x)
Run Code Online (Sandbox Code Playgroud)
但是对于第一个print(x),x将从全局命名空间中获取:
f()
# global
# assigned in Test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
98 次 |
| 最近记录: |