我说的是一般情况。这是一个例子:
c = 1
def a():
def b():
print(c)
b()
c = 2
a()
此代码将返回以下错误:
NameError: free variable 'c' referenced before assignment in enclosing scope
. 虽然逻辑假设是输出应该是1
. 这个问题的 Pythonic 解决方案是什么?使用global
ornonlocal
语句(我不喜欢)?也许只是避免这种情况,多个作用域共享具有相同名称的变量?