可变类型(mutable):变量进行append、+=等这种操作后 == 改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。
- list
- dict
- set
- bytearray
- user-defined classes (除非是特别定义的不可变)
a = [1,2] b = [1,2] print(id(a)) print(id(b))
不可变类型(immutable):改变了变量的值 == 新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象(一个地址), python的
id()
方法让你明白
- int
- float
- decimal
- complex
- bool
- string
- tuple
- range
- frozenset
- bytes
例子
a = 3 b = 3 print(id(a)) print(id(b)) # mem addr is same with a a = 5 print(id(a)) boolx = True print(id(boolx)) boolx = False print(id(boolx))
输出
533780592600 533780592600 533780592664 533780191712 533780191744 [Program finished]
版权声明:本文为kokodudu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。