>>> l = [1, 2, 3] >>> ll = l >>> ll.remove(1)
>>> l [2, 3] >>>
>>> l = [1, 2, 3] >>> ll = l[:] >>> ll.remove(1)
>>> l [1, 2, 3] >>>
是否是有点大吃一惊,跟c 语言怎么不一样呢?!
>>>a = [1]
>>>b = a
>>>b[0] = 2
>>>a
[2]
列表是可变象对型类,因此传递的时候,量变名b绑定的内存地址与a绑定的内存地址是统一地址。
>>> x = 1
>>> y = 1
>>> x is y True >>>
数值为不可变型类,x与y指向的是数值为1的统一内存地址。
对于类说来也是如此:
class b: x = [] def set(self):
self.x.append(1)
def get(self):
return self.x
for i in range(3): a = b() print b.__dict__
a.set()
print a.get()
结果:
{'x': [], '__module__': '__main__', 'set': <function set at 0x7f89a319bcf8>, '__doc__': None, 'get': <function get at 0x7f89a319bd70>}
[1]
{'x': [1], '__module__': '__main__', 'set': <function set at 0x7f89a319bcf8>, '__doc__': None, 'get': <function get at 0x7f89a319bd70>}
[1, 1]
{'x': [1, 1], '__module__': '__main__', 'set': <function set at 0x7f89a319bcf8>, '__doc__': None, 'get': <function get at 0x7f89a319bd70>}
[1, 1, 1]