|  | 
 
 发表于 2021-7-11 17:29:23
From FishC Mobile
|
显示全部楼层
|阅读模式 
 
| 
这是一个数字只能存在一个id嘛?
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  有什么办法可以改变这些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 地址
 
 | 
 |