все Python 3Встроенные типыпонятие
None
особые значения
Единственный экземпляр NoneType — «значения нет». Его возвращает функция без return, его берут значением по умолчанию; сравнивают через is.
Синтаксис
None
None нельзя переприсвоить, и он один на весь процесс, поэтому x is None точен, а x == None зависит от чужого __eq__. Частая ловушка — методы, меняющие объект на месте: a = a.sort() кладёт в a None, и следующий a.append() падает с AttributeError «'NoneType' object has no attribute». Не путайте None с ложью: if not x: сработает и на 0, и на пустую строку — если нужен именно None, пишите is None.
Примеры
def f():
pass
print(f() is None) # → True — функция без return
a = [3, 1, 2]
a = a.sort()
print(a) # → None — sort() меняет список на месте
a.append(4) # → AttributeError
class Always:
def __eq__(self, other):
return True
x = Always()
print(x == None, x is None) # → True False — == можно переопределить
print(type(None).__name__) # → NoneType
print(None < 1) # → TypeError
См. также
Частые ошибки
Открыть в полном глоссарииdocs.python.orgСообщить о неточности