gpt4 book ai didi

python 对象 : digging deeper

转载 作者:太空宇宙 更新时间:2023-11-03 12:40:30 24 4
gpt4 key购买 nike

大家好,我知道这段代码的作用:

1.]我的第一个问题

x = 4 
y = x

但是这个呢。为什么即使在这种情况下也使用相同的地址?

x = 4
y = 4
id(x)
12345678
id(y)
12345678

2.]我的第二个问题

x = 42 
y = x
x = x + 1
print x # Prints 43
print y # Prints 42


x = [1, 2, 3]
y = x
x[0] = 4
print x # Prints [4, 2, 3]
print y # Prints [4, 2, 3]

但为什么在列表的情况下,xy 都被命令 x[0] = 4 一起突变了>.
在这种行为中,列表有何不同?
是什么让他们有这样的行为?
最重要的是,这种行为有什么好处?
为什么列表、变量、元组不能具有彼此的所有属性?

最佳答案

  1. 小整数是cached in CPython ,这就是他们的 ID 相同的原因。
  2. 整数是不可变的,因此修改(即将其分配给新对象)不会影响其他引用。
  3. 列表是可变的,因此修改对可变对象的任何引用(就地修改)也会影响其他引用。
  4. 小字符串可以有same id's too :

整数示例:

>>> x = 100
>>> y = x
>>> id(x),id(y)
(165193204, 165193204)
>>> x += 1
>>> id(x), id(y) #`x` now points to a new object, `y` still points to the old object
(165193192, 165193204)

关于 python 对象 : digging deeper,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18526251/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com