这个问题是因为我的一个学生问了一个关于以下代码的问题,我真的完全被难住了。任何帮助都将不胜感激。你知道吗
当我运行此代码时:
#test 2
a = 1
def func2(x):
x = x + a
return(x)
print(func2(3))
它工作得很好。它能够获取全局范围内的变量a并使用其值执行计算并返回值4。你知道吗
但是,如果我将其改为:
# test 3
a = 1
def func3(x):
a = x + a
return(x)
print(func3(3))
然后我得到一个错误:
local variable 'a' referenced before assignment
为什么只有当我想将函数中a的值更新为基于其原始值的新值时才会出现此错误?我不明白什么?我觉得这第二段代码应该很好用。你知道吗
提前感谢您的帮助和见解。你知道吗
现在应该可以了。你知道吗
当您将语句
a=x+a
放在函数中时,它会创建一个新的局部变量a
,并尝试引用它的值(这显然是以前没有定义过的)。因此,您必须在更改全局变量的值之前使用global a
,以便它知道引用哪个值。你知道吗编辑:
在a=x+a(因此,x+a)的右侧,“x”作为变量传递,其中“a”不作为变量传递,因此是一个错误。 不使用全局变量:
回报:5
相关问题 更多 >
编程相关推荐