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

2024-10-02 22:29:09 发布

您现在位置:Python中文网/ 问答频道 /正文

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时,一切正常。你知道吗


Tags: 代码foolocaldefbarcodevariableprint
1条回答
网友
1楼 · 发布于 2024-10-02 22:29:09

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

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

相关问题 更多 >