Подтвердить что ты не робот

Сравнение с "Нет" приведет к созданию элементарного объекта

Очевидно, что он (в будущем) не сможет больше использовать следующее:

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>

Какие еще возможности позволяют использовать ленивую инициализацию?

4b9b3361

Ответ 1

Вы ищете is:

if a is None:
    a = something else

Проблема заключается в том, что, используя оператор ==, если входной элемент a является массивом numpy, numpy попытается выполнить элементное сравнение и скажет вам, что вы не можете его сравнить.

Для a массива numpy, a == None дает ошибку, np.all(a == None) не выполняет (но не делает то, что вы ожидаете). Вместо этого a is None будет работать независимо от типа данных a.