Python Glossary English

все 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Сообщить о неточности