【问题标题】:Adding Variables Inside Functions for Python [duplicate]在 Python 的函数中添加变量 [重复]
【发布时间】:2013-10-31 01:34:07
【问题描述】:

我有一个变量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

请解释我犯的明显错误。

【问题讨论】:

  • 在该行之前添加行global a

标签: python function variables addition


【解决方案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。

【讨论】:

  • 我喜欢这个答案,因为它向 OP 展示了如何 使用全局变量,而不是展示如何 to 使用它们。但最好在最后添加一条注释,说明当您确实需要使用全局变量时,您可以使用,以及如何使用。
  • 您将无法访问外部定义的内容。这有点不正确。事实上,你可以访问它,但你不能修改它。
  • 公平、准确。我已经将该行稍微更新为“您可能无法访问外部定义的内容”。值得向 OP 指出,“范围”的规则因语言而异。 Python 确实允许您读取但不能更改函数范围之外的变量。
【解决方案2】:

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

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

a = 2
b = 3

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

a = add(a, b)

return a 是函数返回本地 a 以便你可以用它做一些事情

【讨论】:

    猜你喜欢
    • 2015-10-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-25
    • 2019-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-03-02
    相关资源
    最近更新 更多