显然(在“未来”中)将不再可能使用以下内容:
import numpy as np
np.array([0,1,2]) == None
> False
> FutureWarning: comparison to `None` will result in an elementwise object comparison in the future.
这也破坏了NumPy数组的惰性加载模式:
import numpy as np
def f(a=None):
if a == None:
a = <some default value>
<function body>
还有哪些可能性让你仍然可以使用延迟初始化?
is
被认为是一个引用检查,而==
被认为是一个equals()
检查(它可以被重写,如果没有被重写,它只是一个引用检查)。 - Matthias==
会触发 Java 的.equals
,而在numpy
中被重写为执行逐元素检查。Python 的is
相当于在 Java 中检查引用(类似于使用字符串的==
)。然而,对于 Python 中的字符串(即a ='hello'; b ='hello'
),a is b
仍将返回 true,因为它们都是相同的常量('hello'
)。 - Imanol Luengois
运算符的更多细节:https://dev59.com/8WYr5IYBdhLWcg3wdqCv。 - Imanol Luengo