对可变对象的疑虑点,请各位大佬指点迷津,多谢!
tuple
的元素只能容纳不可变对象,且其中的元素可以是列表list
,因为实际存放的是列表(可变对象)的地址,只要这个可变列表的地址不变,就算列表中的元素变化了,也不能说是元组元素的变动。dict
的key不能是可变元素,因为需要用key去hash取值。如果此时key为列表(可变对象),则字典会报错:TypeError: unhashable type: 'list'
。 那么问题来了:
同样是可变元素list
,为什么在元组tuple
里面作为元素值是合法的、是取地址
的、是不可变的,但是在字典dict
里面作为key的值就是非法的、是取值
的、是可变的。
这样的设计,感觉不符合使用上的一致性或直观的理解性吧,因为规则不一致。
烙印99
慕虎7371278
相关分类