在python中变量名相当于一个指针,为变量赋值相当于是将指针指向了这个值的内存空间。
那么如果执行foo1=foo2=4.3的时候相当于(参考《Python核心编程》第二版4.5.2)
foo1 = 4.3
foo2 = foo1
按照这种理解,那么是不是如果继续执行
foo1=5.0
foo2 也会变成5.0呢?当然不会。(详细程序验证在下面)
但是,如果变量不是整型呢?
我们执行
foo1=foo2=[1,2,3]
foo1[1]=5
这时候foo2 的值是多少?当然也是[1,5,3](和foo1一样)。为什么呢?
有一种解释:Python在处理整型、字符型的时候使用值传递,所以foo2的值只是和foo1的值相等,但不是同一个内存空间。而在处理浮点型、列表等类型是使用的是地址传递,也就是说foo2和foo1指向的是同一个内存空间。(《Pyt