# coding=utf-8
import traceback
if __name__ == '__main__':
# Python 的可变tuple
# 对于tuple,它和list一个最大的不同点就是tuple是不可变的,
# tuple里面的元素,也是不可替换的。
# 但是这针对的是仅包含基础数据类型(数字类型、布尔类型、字符串类型)的数据,
# 对于组合数据类型,则不受这个约束。
T = (1, 'CH', [3, 4])
L = T[2]
print(L)
# 替换L中的元素
L[1] = 40
print(L)
print(T)
# 可以发现结果 tuple中的数据也发生了改变
# 这是因为虽然tuple中list的元素改变了,但是tuple本身指向的list任然是同一个list
# list本身并没有改变,改变的只是list里面的一个元素,这是tuple所约束不到的范围
# 验证:如果我们直接替换tuple中的list,是会报错的
L2 = [1, 2]
try:
T[2] = L2
except Exception as e:
traceback.print_exc()
结果:
[3, 4]
[3, 40]
(1, 'CH', [3, 40])
Traceback (most recent call last):
File "D:/python/workspace/lixingren/test/demo64.py", line 23, in <module>
T[2] = L2
TypeError: 'tuple' object does not support item assignment