我在一本书上看到,说是 a=b,若a改变,b也跟着改变,我实际测试是,不是这样子的

代码如下:

#测试一:
a = 55
b = a
b = 9
print('id(a):'+str(id(a)))
print('id(b):'+str(id(b)))
print('a:'+str(a))
print('b:'+str(b))

output:
id(a):140718576206592
id(b):140718576205120
a:55
b:9  #  我的理解,应该a和b应该都是一样的都是9才对啊?

#测试二:

a = 55
b = a
a = 88
# b = 9
print('id(a):'+str(id(a)))
print('id(b):'+str(id(b)))
print('a:'+str(a))
print('b:'+str(b))

output:

id(a):140718576207648
id(b):140718576206592
a:88
b:55   # 我的理解,应该a和b应该都是一样的都是88才对啊?

不知是我哪里理解得不对啊?

实验才是真理

理论上讲是这样的,因为python都是引用传递,在c++中,引用就相当于起别名,改变对象的值,被赋值的变量也会改变,但是在python中需要注意他是不是可变变量,如果是可变变量,那么一个变量改变,另一个也会改变,如果不是可变变量,则对象改变,接受变量是不会变得,还是原来的。回到本题,你给a的赋值是常量,常量是不可变变量,所以你改变了a得值,那么b得值是不会变得,还是原来的值。不懂的话可以继续问我

我的意思是能否给出 比较官方的文档,这样我也好理解,不知可否?中文或英文都行,希望能给出比较详细的链接,谢谢。我是B站上看到ppt里面这么说的,人家也没给出出处。