Ответ
None — это уникальный объект-синглтон в Python, представляющий отсутствие значения. Он является единственным экземпляром класса NoneType.
Основные характеристики:
- Обозначение "ничего": Используется, когда функция не возвращает явного значения или для инициализации переменных.
- Ложное значение: В булевом контексте (например, в
if)Noneприводится кFalse. - Синглтон: В системе всегда существует только один объект
None, что позволяет проверять его через оператор идентичностиis.
Правильная проверка на None
Проверку следует выполнять с помощью оператора is, а не ==.
- Почему
is? Операторisпроверяет идентичность объектов (что они ссылаются на одну и ту же область памяти). Так какNone— синглтон, эта проверка надежна и очень быстра. Оператор==проверяет на равенство, и его поведение может быть переопределено в пользовательских классах, что может привести к ошибкам.
value = None
# Правильно и идиоматично
if value is None:
print("Значение отсутствует")
# Не рекомендуется
if value == None:
print("Эта проверка работает, но она медленнее и не является идиомой Python")
Частый пример использования — значение по умолчанию:
def log_message(message, level=None):
if level is None:
level = "INFO"
print(f"[{level}] {message}")
log_message("User logged in") # Вывод: [INFO] User logged in
log_message("File not found", "WARNING") # Вывод: [WARNING] File not found