a = 100 # 指在内存开了一个空间这个空间存了100,然后找了一个变量名a 》》》》这个a只是指向100的地址而已 b = a # 指的是b也指向了100那个地址
可以用函数id() 来验证他们地址是否相同
a = 100 # 指在内存开了一个空间这个空间存了100,然后找了一个变量名a 》》》》这个只是存着100的地址而已 b = a # 指的是b也指向了100那个地址 print(id(a)) # id >>>4506684544 print(id(b)) # id >>>4506684544 # 这个id也就是100的内存地址 他们引用的是同一份,这个就是引用
也就是在Python中a等于多少,b等于多少,c等于多少,就是变量名指向了那个引用的数据地址而已
a=b也就是把b的引用也指向了b而已,而不是a也赋值为了b
举例
A = [1, 2, 3, 4] B = A A.append(5) print(B) # 此时b也会跟改变
# a = 1000 a = [1] def c(a): a += a; # 当a是数字,是不可变类型,当你强行修改的时候他自己就会新建一个局部变量来赋值 print(a); # 当a是列表的时候此时是可变类型,他就会直接引用全局变量所以就修改了 c(a) print(a) # 所以打印的a和,函数打印的a区别和修改取绝于a的是可变类型,还是不可变类型 # 列子交换两个变量的值 w = 1 z = 2 # 方式一 c = 0 c = w w = z z = c # 交换方式二 w = w + z z = w - z w = w - z # 方式三 w, z = z, w
python中
a+=a 和 a=a+a 不是等价的,其他语言是等价的
a+=a 可以直接修改引用的值