考虑以下代码:
a = {...} # a is an dict with arbitrary contents b = a.copy()
如何检查类型在Python中是否可变?
1)密钥不能是可变的, 除非 您具有可哈希且可变的用户定义类。这就是强迫您执行的所有操作。 但是,使用可哈希的可变对象作为dict键可能不是一个好主意。
2)不共享两个字典的值。共享密钥是可以的,因为它们必须是不可变的。从copy模块意义上来说,复制字典绝对是安全的。这里调用构造函数字典工作,也:b = dict(a)。您也可以使用不可变值。
copy
b = dict(a)
3)所有内置的不可变类型都是可哈希的。所有内置的可变类型都不可哈希。为了使对象可哈希化,即使对象被突变,它在整个生命周期中也必须具有相同的哈希值。
4)不是我所知道的;我正在描述2.x。
如果类型是不可变的,则它是可变的。A型是不可变的,如果它是一个内置的不可变类型:str,int,long,bool,float,tuple,,也许一对夫妇别人,我忘了。用户定义的类型始终是可变的。
str
int
long
bool
float
tuple
如果对象是不可变的,则该对象是可变的。如果对象仅由不可变类型的子对象递归组成,则它是不可变的。因此,列表的元组是可变的;您不能替换元组的元素,但是可以通过列表界面修改它们,从而更改整体数据。