2

我有一个变量 a,我希望将 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

请解释我正在犯的明显错误。

4

2 回答 2

1

这是因为一个叫做scope的东西。您可以阅读它,但本质上它意味着在函数内部,您可能无法访问外部定义的内容。

要让函数知道这些变量,您需要将它们传入。试试这个:

a = 2
b = 3

def add(x, y) :
    x = x + y
    print(str(x))

add(a, b)

值得注意的是,这些值被传递到函数中,但实际上并没有自己修改。我不会讨论将变量传递给函数的方式的复杂性,但我只想说,在你add(a, b)在这里调用之后,a 和 b 的值仍将分别为 2 和 3。

于 2013-10-31T01:36:43.977 回答
0

我猜你只是在学习如何做这些事情,你真的不想让一切都全球化,否则你会陷入大混乱。

在这里,ab被传递到函数中。在函数内部,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所以你可以用它做一些事情

于 2013-10-31T01:42:20.643 回答