В python отсутствие значений у переменной/объекта может отражаться как NaN, <NA> или None. Попробуем разобраться, чем они различаются и зачем нужны (см. табл. 1).
None - это объект класса NoneType, который встроен в python и может использоваться без импорта иных библиотек. None показывает отсутствие значения или состояния у объекта. Поскольку это объект нечислового типа, его обработка замедляет работу кода при больших объемах данных по сравнению с nan и NA.
Пример проверки переменной на отсутствие значения (None) для типа str (текстовое значение).
value = None
вариант 1
if isinstance(value, (str, type(None))):
...
вариант 2
If value is None or isinstance(value, str):
...
NaN относится к вещественным числам класса float (стандарт IEEE 754) и используется в т. ч. в библиотеках math (math.nan), numpy (numpy.nan).
NA совместим с NaN и используется в библиотеке pandas (pandas.NA) для работы с большими наборами данных.
Давайте посмотрим на табл. 2 (ниже).
Посмотрите, как заметно отличается None от др. типов, т.к. относится к др. классу объектов.
Еще несколько интересных моментов на примере float('nan')
Что означает этот код:
1. float('nan') == float('nan') - объекты НЕ совпадают по значению;
2. float('nan') is float('nan') - объекты НЕ совпадают по указателю;
3. id(float('nan')) == id(float('nan')) - адрес в памяти одинаковый.
Вот такой казус. Почему так?
Если наберется 10 лайков, мы опубликуем объяснение и продолжение статьи.
#питон #python #python3 #pythonснуля #pythonсекреты #секреты #технологии