为什么内部函数不能在python的外部作用域中获得变量

why the inner function can't get variable in outer scope in python

本问题已经有最佳答案,请猛点这里访问。
1
2
3
4
5
6
7
def foo():
    m = 3
    def bar():
        print(m) # code 1
        m=4 # code 2
    bar()
foo()

UnboundLocalError: local variable 'm' referenced before assignment

我为什么要买UnboundLocalError?我知道bar不能改变m的价值,但bar不能仅仅得到m的价值吗?

当我分别尝试代码1/code 2时,一切都正常。


由于内部函数bar有一个赋值m=4,因此m被认为是整个函数的局部变量。但在调用print(m)时,m尚未创建。所以你得到了错误UnboundLocalError: local variable 'm' referenced before assignment

要修复它,可以将m声明为全局变量。或者避免在bar内分配