当你创建一个对象并给它赋一个变量的时候,这个变量仅仅引用那个对象,而不是表示那个对象本身!也就是说,变量名只是指向计算机中存储那个对象的内存。这被称作名称到对象的绑定。
#!/usr/bin/python
#-*- coding=utf-8 -*-
print'-----------简单的赋值-----------'
shoplist =['apple','mango','carrot','banana']
mylist = shoplist # 简单的赋值 只是引用变量名
del shoplist[0]
del mylist[0]
print'shoplist 列表:',shoplist
print'mylist 列表:',mylist
print'完整切片是真正的复制:'
mylist = shoplist[:]
del mylist[0]
print'shoplist 列表:',shoplist
print'mylist 列表:',mylist
输出结果为:
-----------简单的赋值-----------
shoplist 列表:['carrot','banana']
mylist 列表:['carrot','banana']
完整切片是真正的复制:
shoplist 列表:['carrot','banana']
mylist 列表:['banana']
很明显,普通引用只是名称的绑定,而只有完整切片才是真正意义上的复制。所以我们在简单引用后一定要考虑是否可以更改,因为操作可能影响到源对象。