我搜索答案为什么a is None
比工作更快a == None
.我使用这段代码测量时间:
>>> timeit.timeit("1 is None", number=10000000)
0.4035069934390217
>>> timeit.timeit("1 == None", number=10000000)
0.8190256083633187
Run Code Online (Sandbox Code Playgroud)
该文件说,a is b
具有功能equialent is_(a, b)
和a == b
具有同等功能eq(a, b)
.那么,为什么is_
功能更快eq
?
我读了一些is_()
只比较对象标识符的文章,并进行了eq()
"深度比较".但我在文档中找不到这些信息.这些信息是否正确?我可以在哪里阅读更多相关信息?
对identity(is
)的测试就像简单的指针比较(两个值是同一个对象).
对平等的测试需要做更多的工作; 例如,对于列表,它确实需要测试两个列表中每个元素的相等性,直到某些东西测试为相等为负,或者测试了最短列表中的所有元素.
请注意,两个运算符的测试结果完全不同:
>>> lsta = []
>>> lstb = lsta
>>> lsta is listb
True
>>> lstc = []
>>> lsta is listc
False
>>> lsta == listc
True
Run Code Online (Sandbox Code Playgroud)
仅仅因为两个对象相等并不意味着它们是同一个对象; is
测试后者.
归档时间: |
|
查看次数: |
123 次 |
最近记录: |