变量、对象和引用:
a = 3(不需要提前声明变量)
变量在赋值的时候才被创建,它可以引用任何类型的对象,并且必须在引用之前赋值。
他们三者之间的关系:
变量是一个系统表的元素,拥有指向对象的连接的空间;
对象是分配的一块内存,有足够的空间去表示他们所代表的值;
引用是自动形成的从变量到对象的指针;
变量名没有类型,类型属于对象而不是变量名,赋值只是将变量修改为不同对象的引用。
共享引用:
>>>a = 3
>>>b = a
这两句话执行之后的效果就是a指向了对象3,b也指向了对象3;
>>>a = ‘spam’
这句话执行 之后的效果就是a指向了对象spam;
>>>L1 = [2,3,4]
>>>L2 = L1
现在L1和L2都指向了同一个列表[2,3,4],如果这个时候修改了L1中的某个值;
>>>L1[0] = 24
>>>L2
[24,3,4]
因为L1和L2都指向了同一个对象,所以对L1的修改也会修改掉其他的引用;
如果我们不想这样的情况发生,就需要Python去拷贝对象,而不是创建引用。拷贝的方法有很多,其中最常用拷贝列表的方法就是从头到尾的分片。
>>>L2 = L1[:]
这样修改了以后,L1的修改就不会对L2有影响,因为L2引用的是L1的一个拷贝,也就是他们指向了不同的内存区域。
==和is:
==表示的是检测的两个被引用对象是否含有相同的值,而is表示的是两个被引用对象是否精确的同一(例如,两个变量名精确的指向同一个对象)