【问题标题】:Incrementing integer variable of global scope in Python [duplicate]在Python中递增全局范围的整数变量[重复]
【发布时间】:2015-09-06 23:47:26
【问题描述】:

我正在尝试从另一个函数范围内更改全局值 x,如下面的代码所示,

x = 1
def add_one(x):
    x += 1

然后我在 Python 的交互式终端上执行如下语句序列。

>>> x
1
>>> x += 1
>>> x
2
>>> add_one(x)
>>> x
2

为什么x 还是 2 而不是 3?

【问题讨论】:

标签: python function scope integer increment


【解决方案1】:

因为x 是一个本地(所有函数参数都是),而不是全局,而且整数不是可变的。

所以x += 1x = x + 1 相同,产生一个新的整数对象,x 反弹到那个对象。

您可以在函数中将x标记为全局:

def add_one():
    global x
    x += 1

在这里传递x 作为参数是没有意义的。

【讨论】:

    猜你喜欢
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 2012-11-05
    • 2014-09-17
    • 1970-01-01
    • 1970-01-01
    • 2016-11-13
    • 2018-09-02
    相关资源
    最近更新 更多