在python中,我可以写:
def func(): x = 1 print x x+=1 def _func(): print x return _func test = func() test()
当我运行它时,输出是:
1
2
由于_func可以访问func中定义的"x"变量.对...
但如果我这样做:
def func(): x = 1 print x def _func(): x+=1 print x return _func test = func() test()
然后我收到一条错误消息:UnboundLocalError:在赋值之前引用的局部变量'x'
在这种情况下,似乎_func不能"看到""x"变量
问题是:为什么在第一个例子中打印x"看到""x"变量,而数学运算符x + = 1抛出异常?
我不明白为什么......
检查这个答案:https://stackoverflow.com/a/293097/1741450
可以访问除本地函数变量之外的范围中的变量,但如果没有进一步的语法,则无法将其重新转换为新参数.相反,赋值将创建一个新的局部变量,而不是影响父范围中的变量.例如: