页面

2010-03-13

Python名字绑定

对复合类型,记住一点:同是等号(“=”),赋值是赋值,计算是计算。赋值把一个对象(同一块内存)绑定到多个名字;计算是把一个名字绑定的对象复制一下,然后绑定到其它名字。

例如,现在有个序列m = [0, 1, 2],下面这个是赋值:
k = m
k.remove(2)后:m = [0, 1]。下面这个是计算:
k = list(m) # 或
k = m[ : ]
k.remove(2)后m不变化:m = [0, 1, 2]
对字符串、数字等基本的、不可变类型,每次赋值都是创建副本的操作:
a = 0
b = a
执行a = 1后:b = 0。

没有评论: