在 Mark Lutz 的“Learning Python”中,我读到:“函数可以自由使用在语法封闭函数和全局范围内分配的名称,但它们必须声明这样的非局部变量和全局变量才能更改它们”我未能在 Python 2.7 中测试它们
def f1():
f1_a = 'f1_a'
def f2():
# global f1_a
# nonlocal f1_a
f2_a = 'f2_a'
print 'f2_a={:s}'.format(f2_a)
print 'f1_a={:s}'.format(f1_a)
f1_a = 'f1f2_a'
f2()
print 'f1_a={:s}'.format(f1_a)
>>> f1()
给出错误:
UnboundLocalError: local variable 'f1_a' referenced before assignment
'global' (NameError: global name 'f1_a' is not defined) 和 'nonlocal' (nonlocal f1_a , SyntaxError: invalid syntax) 不起作用。这是否意味着无法将外部函数中引入的变量从内部(直接封闭的)变量中更改?