引用变量
在大多数编程语言中,值的传递通常可以分为两种形式“ 值 传递 与 引用 传递”,但是在Python中变量的传递基本上都是引用传递。
变量在内存底层的存储形式
a = 10
第一步:首先在计算机内存中创建一个数值10(占用一块内存空间)
第二步:在栈空间中声明一个变量,如 a
第三步:把 数值10 的 内存地址 赋予给 变量 a,形成所谓的“引用关系”
验证Python中变量的引用关系
可以使用内置方法id(),其参数就是要显示的变量信息 => id(变量名称)
a = 10 print(id(a))
把一个变量 赋予给 另外一个变量 的影响
a = 10 b = a # 把变量 a 赋予给另外一个变量 b 的影响-------内存地址不变 print(id(a)) print(id(b))
运行结果:
说明:
由以上运行结果可知,当把一个变量赋予给另外一个变量时,其两者指向的内存地址相同。
就说明a和b指向了同一块内存空间,原理图如下:
思考:
如果在b = a以后,我们改变了变量a的值,问变量b是否会受到影响?
a = 10 b = a # 把变量 a 赋予给另外一个变量 b 的影响-------内存地址不变 a = 100 # 把变量 a 重新赋值-----内存地址变 -----新的内存地址 print(b) # 所以打印出,是 10 还是 100????----是 10 print(id(a)) print(id(b))
原理图:
总结:
不可变数据类型 ( ----数值-----) 在赋值以后,其中一个值的改变不影响另外一个变量,因为两者指向空间地址不同。