|
发表于 2021-7-11 17:29:23
From FishC Mobile
|
显示全部楼层
|阅读模式
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这是一个数字只能存在一个id嘛?
有什么办法可以改变这些id?
>>> a = [i for i in range(0,10)
... ]
>>> b = a
>>> id(a) == id(b)
True
>>> id(a)
4091694776
>>> a.pop(0)
0
>>> id(a)
4091694776
>>> a
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> id(1)
4102403432
>>> id(0)
4102403416
>>> for i in a:
... print(id(i))
...
4102403432
4102403448
4102403464
4102403480
4102403496
4102403512
4102403528
4102403544
4102403560
>>> c = 0
>>> id(c)
4102403416
>>> 0
0
>>> import copy
>>> d = copy.deepcopy(a)
>>> for i in d:
... print(id(i))
...
4102403432
4102403448
4102403464
4102403480
4102403496
4102403512
4102403528
4102403544
4102403560
>>> id(a) == id(d)
False
>>> 0 = a
File "<stdin>", line 1
SyntaxError: can't assign to literal
>>> 0 = 1
File "<stdin>", line 1
SyntaxError: can't assign to literal
>>> id(0) = id(1)
File "<stdin>", line 1
SyntaxError: can't assign to function call
>>>
id 是 Python 开辟内存时的地址,你新建个数据时候就可以新建 id 地址了呀
只不过 Python 的不可变数据在创建相同数据内容时不会开辟新的内存,会共用一个内存地址
而可变数据每次重新对变量赋值具体数据,不管是否与其他数据内容相同,总会开辟一个新的地址
数值型数据属于不可变类型数据,所以当数值大小相同时,会共用一个 id 地址
|
|