python中可变数据类型和不可变数据类型

  • Post author:
  • Post category:python


可变类型(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]

引用原文:

https://www.cnblogs.com/sea-stream/p/11188732.html



版权声明:本文为kokodudu原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。