繁体   English   中英

列表的变量是 Python 中的 object 吗?

[英]Is list's variable is an object in Python?

a = [1,2,3]
b = [1,2,3]

我知道a is b是假的,但我不明白a is [1,2,3]是假的

我了解到变量就像x = 2id(x) == id(2)这样的对象的昵称

id(a)id(b)不同...

在这种情况下,a 是 object? 不是变量?

变量是对对象的引用。 a没有引用与b相同的 object 。 尽管这两个对象相同,但它们在 memory 中具有唯一的地址,并且不相互依赖。

>>> a = b = [1,2,3]
>>> c = [1,2,3]
>>> print(a is b)
True
>>> print(a is c or b is c)
False
>>> a.remove(1)
>>> print(a)
[2, 3]
>>> print(b)
[2, 3]
>>> print(c)
[1, 2, 3]

x = 2id(x) == id(2)的情况下,整数是不可变的,而在 CPython 中, id只是 memory 中 object 的位置。 整数总是相同的,因此在不同的地址多次存储相同的 integer 将浪费 memory。

但是,通常不要将整数与is运算符一起使用,因为它可能导致不同 python 实现的结果不同。

Python 中的所有内容都是 object。 a is b评估为假,因为如您所知,它们与 object 不同。 它们都是List class 的实例,因此在 memory 中具有不同的位置,并且除了它们的 class 结构或蓝图外,它们在各个方面都是完全独立的。 id(a)id(b)将反映这一点,它们不是同一个 object,因此不会共享一个 ID。 这是对它们在 memory 中位置的引用,虽然 ID不是引用的指针,但它们的相似之处在于它们描述了它们的不同之处。

>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> id(a) == id(b)
False
>>> # the below is an example, every session will result in a different ID,
>>> # as it's being stored at a unique mem location each time
>>> id(a)
2770873780160
>>> id(b)
2770873412800
>>> id(a) - id(b)  # simply to show the difference in location.
367360

双等于 vs 在 python

https://www.tutorialspoint.com/difference-between-and-is-operator-in-python

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM