我有一个变量a,我希望用b添加一个,就像这样:
a = a + b
现在,我的程序设置如下:
a = 2
b = 3
def add() :
a = a + b
print(str(a))
add()
每次我跑这个,我都会
Traceback (most recent call last):
File "<stdin>", line 8, in <module>
File "<stdin>", line 5, in add
UnboundLocalError: local variable 'a' referenced before assignment
而不是
5
请解释我正在犯的明显错误。
答案 0 :(得分:1)
这是因为有一个名为scope的东西。您可以阅读它,但实际上它意味着在函数内部,您可能无法访问外部定义的内容。
要使函数知道这些变量,您需要将它们传入。试试这个:
a = 2
b = 3
def add(x, y) :
x = x + y
print(str(x))
add(a, b)
值得注意的是,这些值正在传递给函数,但实际上并没有自行修改。我不会进入complexities surrounding the way variables are passed to functions,但只需说明在此处调用add(a, b)
之后,a和b的值将分别为2和3。
答案 1 :(得分:0)
我想你只是在学习如何做这些事情,你真的不想让一切都变得全球化,否则你将陷入一团糟。
此处,a
和b
被传递到函数中。在函数内部,a
和b
是局部变量,并且与您在函数外声明的那些不同
a = 2
b = 3
def add(a, b) :
a = a + b
print(str(a))
return a
a = add(a, b)
return a
是函数返回本地a
所以你可以用它做点什么