- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我搜索了为什么 a is None
比 a == 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/
我正在阅读 Elixir 的命名约定。它指出: The names of predicate functions that cannot be used within guards should ha
在优化 PHP 中的函数时,我改变了 if(is_array($obj)) foreach($obj as $key=>$value { [snip] } else if(is_object($obj
在动态类型的 PHP 中,我们可以创建可以接受多种数据类型作为参数的函数。然后我们可以根据变量的类型对数据进行操作。有两种方法可以做到这一点: 方法一 : function doSomething1(
我搜索了为什么 a is None 比 a == None 工作得更快的答案。我使用这段代码测量时间: >>> timeit.timeit("1 is None", number=10000000)
根据 is_destructible 的定义( http://eel.is/c++draft/meta.unary.prop#lib:is_destructible ), is_destructib
我是一名优秀的程序员,十分优秀!