在阅读 Python 的执行模型文档时,我意识到 Python 的自由变量似乎没有严格的后期绑定属性,即任何代码块中出现的名称绑定都可以用于名称解析。确实,执行:
def f():
return x
def g():
x = 0
return f()
print(g())
提出:
NameError: name 'x' is not defined
它们具有松散的后期绑定属性,其中只有出现在引入自由变量的代码块的外部代码块中的名称绑定才能用于名称解析。确实在执行
def f():
return x
x = 0
print(f())
印刷:
0
与严格的后期绑定属性相比,松散的后期绑定属性有哪些优点和缺点?
慕标5832272
江户川乱折腾
相关分类