Pip*_*p S 3 python integer scope function increment
我试图x从另一个函数范围内更改全局值,如下面的代码所示,
x = 1
def add_one(x):
x += 1
Run Code Online (Sandbox Code Playgroud)
然后我按如下方式在Python的交互式终端上执行语句序列.
>>> x
1
>>> x += 1
>>> x
2
>>> add_one(x)
>>> x
2
Run Code Online (Sandbox Code Playgroud)
为什么x仍然是2而不是3?
因为x是本地的(所有函数参数都是),不是全局的,并且整数不可变.
所以x += 1就像x = x + 1生成一个新的整数对象一样,并且x反弹到那个.
您可以x在函数中标记全局:
def add_one():
global x
x += 1
Run Code Online (Sandbox Code Playgroud)
在x这里作为一个论点是没有意义的.
| 归档时间: |
|
| 查看次数: |
17410 次 |
| 最近记录: |