为python函数添加变量

Adding Variables Inside Functions for Python

本问题已经有最佳答案,请猛点这里访问。

我有一个变量a,我希望a加上b,就像这样:

1
a = a + b

现在,我的程序设置如下:

1
2
3
4
5
6
7
8
a = 2
b = 3

def add() :
    a = a + b
    print(str(a))

add()

每次我运行这个,我都会

1
2
3
4
Traceback (most recent call last):
File"<stdin>", line 8, in <module>
File"<stdin>", line 5, in add
UnboundLocalError: local variable 'a' referenced before assignment

而不是

1
5

请解释一下我犯的明显错误。


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

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

1
2
3
4
5
6
7
8
a = 2
b = 3

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

add(a, b)

值得注意的是,这些值正被传递到函数中,但实际上它们本身并没有被修改。我不讨论变量传递给函数的方式的复杂性,但可以说,在这里调用add(a, b)之后,a和b的值仍然分别是2和3。


我猜你只是在学习如何做这些事情,你真的不想把所有事情都变成全球性的,或者你会陷入一个大混乱。

这里,ab被传递到函数中。在函数内部,ab是局部变量,与在函数外部声明的变量不同。

1
2
3
4
5
6
7
8
9
a = 2
b = 3

def add(a, b) :
    a = a + b
    print(str(a))
    return a

a = add(a, b)

return a的函数返回本地a以便您可以使用它