gpt4 book ai didi

javascript - 在 Python 中比较字典与在 JavaScript 中比较对象之间的区别

转载 作者:行者123 更新时间:2023-11-28 15:45:22 25 4
gpt4 key购买 nike

阅读这本非常酷的在线书籍,Speaking JS ,我遇到了一个巧妙的怪癖,说明了 JavaScript 中的比较是如何工作的:

原始值是“按值比较”:

> 3 === 3
true
> 'abc' === 'abc'
true

但是,对象是“通过引用比较”:

> {} === {}  // two different empty objects
false
> var obj1 = {};
> var obj2 = obj1;
> obj1 === obj2
true

我和一位同事正在讨论这个问题,想知道这个原理是否适用于 Python。

因此,我们打开了一个 Python 解释器,看看这种比较在该语言中是否有不同的效果。

>>> 3 == 3
True
>>> {} == {}
True

事实证明,如果两个字典的内容相同,则它们在 Python 中解析为相等。

这是否意味着 Python 字典是“按值比较”?

有没有办法通过引用来比较 Python 字典?

最佳答案

在 Python 中,== 运算符按值进行比较。根据the Python 2.7 documentation :

The operators is and is not test for object identity.

请参阅以下示例:

print({} is {}) # False
print({} == {}) # True

Ignacio Vazquez-Abrams说,请注意,这并不一定适用于所有值。例如,9 is 9 在某些实现中是正确的,但不要指望它。基本上,原因是数值可能只是对同一值的所有引用的单个对象的引用,或者单独的对象。例如,CPython 使用 -5 到 256 之间的数字引用(包含 -5 和 256)(有关更详细的说明,请参阅 this question)。

print(9 is 9) # dependent on implementation
print(9 == 9) # True

关于javascript - 在 Python 中比较字典与在 JavaScript 中比较对象之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22570871/

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