Сравнение с "Нет" приведет к созданию элементарного объекта
Очевидно, что он (в будущем) не сможет больше использовать следующее:
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>
Какие еще возможности позволяют использовать ленивую инициализацию?
Ответы
Ответ 1
Вы ищете is
:
if a is None:
a = something else
Проблема заключается в том, что, используя оператор ==
, если входной элемент a
является массивом numpy, numpy попытается выполнить элементное сравнение и скажет вам, что вы не можете его сравнить.
Для a
массива numpy, a == None
дает ошибку, np.all(a == None)
не выполняет (но не делает то, что вы ожидаете). Вместо этого a is None
будет работать независимо от типа данных a
.