Python变量未按预期递增问题求助
Python变量递增问题的解决方案
问题代码
def increment(n): n += 1 return n a = 1 increment(a) print(a) # 实际输出1,预期输出2
问题原因
Python采用传对象引用的参数传递方式,对于整数这类不可变类型,函数内执行n += 1时,会创建一个新的整数对象并让局部变量n指向它,而非修改原对象。因此外部变量a仍然指向初始的整数1,函数的返回值如果不重新赋值给a,不会改变a的值。
有效解决方案
将函数调用语句修改为a = increment(a),把函数返回的新值赋值给a,此时a将指向新的整数对象。修改后的代码:
def increment(n): n += 1 return n a = 1 a = increment(a) print(a) # 输出2
内容的提问来源于stack exchange,提问作者Phoenix IV
相关产品推荐
相关产品推荐

