为什么要将元组设计成不可变序列?
在多任务环境下,同时操作对象时不需要加锁,因此在程序中尽量使用不可变序列。
注意事项:
元组中存储是对象的引用:
①如果元组中对象本身不可变对象,则不能再引用其他对象;
②如果元组中的对象是可变对象,则可变对象的引用不允许改变,但数据可以改变。
例如:元组里面有列表和整数数据元素,列表是可以改变的,而整数元素是不可变的。
代码如下:
#打工人:朱乔栋
#革命尚未成功,同志仍需努力
t=(10,[20,30],9)
print(t)
print(type(t))
print(t[0],type(t[0]),id(t[0]))
print(t[1],type(t[1]),id(t[1]))
print(t[2],type(t[2]),id(t[2]))
'''尝试将t[1]修改为100'''
print(id(100))
#t[1]=100 #元组是不允许修改元素的
'''由于[20,30]列表,而列表是可变序列,所以可以向列表中添加元素,而列表的内存地址不变'''
t[1].append(100) #向列表中添加元素
print(t,id(t[1]))
运行结果:
(10, [20, 30], 9)
<class 'tuple'>
10 <class 'int'> 1540121840
[20, 30] <class 'list'> 19678672
9 <class 'int'> 1540121824
1540123280
(10, [20, 30, 100], 9) 19678672
Process finished with exit code 0