gpt4 book ai didi

python - 为什么 is_(a,b) 函数在 python 2.7.3 中比 eq(a,b) 运行得更快?

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

我搜索了为什么 a is Nonea == None 工作得更快的答案。我使用这段代码测量时间:

>>> timeit.timeit("1 is None", number=10000000)
0.4035069934390217
>>> timeit.timeit("1 == None", number=10000000)
0.8190256083633187

The documentation表示 a is b 具有等价的函数 is_(a, b) 并且 a == b 具有等价的函数 eq(a , b)。那么,为什么 is_ 函数比 eq 更快?

我在一些文章中看到is_()只比较对象的标识符,而eq()做的是“深度比较”。但我无法在文档中找到此信息。这些信息是否正确?我在哪里可以阅读更多相关信息?

最佳答案

身份测试()就像简单的指针比较(两个值是同一个对象)。

平等性测试需要做的工作远不止于此;例如,对于列表,它确实需要测试两个列表中的每个元素是否相等,直到某些测试是否相等或测试了最短列表中的所有元素。

请注意,这两个运算符的测试内容完全不同:

>>> lsta = []
>>> lstb = lsta
>>> lsta is listb
True
>>> lstc = []
>>> lsta is listc
False
>>> lsta == listc
True

仅仅因为两个对象相等并不意味着它们是同一个对象; 对后者的测试。

关于python - 为什么 is_(a,b) 函数在 python 2.7.3 中比 eq(a,b) 运行得更快?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14631681/

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