在 python 2.7 中编码时,我遇到了关于函数内部环境的问题。这是简单的示例代码:
m=3
def f(x):
return m*x
当我在Python控制台中输入f(5)时,它返回15,这符合我的预期。但是,当我将代码编辑为:
m=3
def f(x):
m=m+1
return m*x
控制台返回UnboundLocalError:赋值前引用的局部变量'm',我不明白为什么。
我认为这两种情况下变量 m 没有区别。然而,一个是正确的,另一个则不正确。
最佳答案
发生这种情况是因为在第一种情况下,m
没有歧义,即它是一个全局
。然而,在第二种情况下,在 m=m+1
中使用 m
会抛出错误,因为 python 会查找名为 m
的本地变量,并且它没有找到任何。您必须明确声明您正在使用全局
。以下将起作用。
m=3
def f(x):
global m
m=m+1
return m*x
关于python - 函数#python的内部环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38047127/