您遇到了标识符和值之间的差异。
num += 1
正在创建一个新的
int
对象并指定
num
标识符来指向它。这并不会改变现状
智力
标识符已指向的对象。(对于较小的值
智力
对象被缓存,但这是一个实现细节)
在下面的代码中,您可以看到对对象进行变异的操作的区别:
def y():
l = []
try:
raise Exception
except Exception:
print("except")
l.append(1)
return l
finally:
print("finally")
l.append(2)
print(y())
# except
# finally
# [1, 2]