Пропустить до содержимого

Как использовать и исправлять 'null' в Python?

CodeMDD.io

Null в Python: Понимание объекта NoneType в Python

by Wolf basics python

Python использует ключевое слово None для определения null объектов и переменных. Хотя None выполняет некоторые из тех же функций, что и null в других языках, он представляет собой совершенно другой объект. В Python None является объектом, который является полноценным и важным элементом!

В этом руководстве вы узнаете:

  • Что такое None и как его проверить
  • Когда и почему использовать None в качестве параметра по умолчанию
  • Что означают None и NoneType в ваших трассировках
  • Как использовать None в проверке типов
  • Как работает null в Python под капотом

Бесплатное бонусное предложение: Нажмите здесь, чтобы получить Python Шпаргалку и научиться основам Python 3, таким как работа с типами данных, словарями, списками и функциями Python.

Понимание Null в Python

None - это значение, которое функция возвращает, если в ней нет оператора return:

Python

def has_no_return():
pass
has_no_return()
print(has_no_return())

Выполнение:

None

При вызове has_no_return() вы не увидите вывода. Однако, если вы попытаетесь распечатать этот вызов, то увидите скрытое значение None.

Собственно, None так часто используется в качестве возвращаемого значения, что интерпретатор Python не будет его печатать, если вы явно не указали это:

Python

None
print(None)

Выполнение:

None

Результатом простого вызова None на мате является пустоц в выводе консоли.

Интересно, что print() сам по себе не имеет возвращаемого значения. Если вы попытаетесь распечатать вызов print(), то получите None:

Python

print(print("Hello, World!"))

Выполнение:

Hello, World!
None

Это может выглядеть странно, но print(print("...")) показывает None, который возвращает внутренний вызов print().

None также часто используется как сигнал для отсутствующих или значений по умолчанию. Например, None указан дважды в документации для list.sort:

Python

help(list.sort)

Выполнение:

Help on method_descriptor:
sort(...)
L.sort(key=None, reverse=False) -> None -- stable sort *IN PLACE*

Использование объекта Null None в Python

Часто вы будете использовать None в качестве null объекта или переменной. Например, в следующем коде None используется для присвоения переменной пустого значения:

Python

my_variable = None
print(my_variable)

Выполнение:

None

None также может использоваться в качестве значения по умолчанию для параметров функции. Это позволяет функции иметь необязательные аргументы, которые могут быть опущены при вызове функции:

Python

def greet(name=None):
if name is None:
name = "Guest"
print(f"Hello, {name}!")
greet()
greet("John")

Выполнение:

Hello, Guest!
Hello, John!

При вызове функции greet() без аргументов, переменной name присваивается значение None, а затем выводится приветствие со значением по умолчанию. Если же при вызове функции передан аргумент name, то он будет использован для вывода приветствия.

Ключевая особенность None заключается в том, что он является единственным экземпляром класса NoneType. Вы можете использовать оператор is для проверки, является ли переменная None:

Python

x = None
y = None
print(x is None) # True
print(x == None) # True
print(x is y) # True

Выполнение:

True
True
True

Объявление переменных Null в Python

Объявление переменных в Python, которые соответствуют null, может быть достигнуто путем присваивания им значения None. Например:

Python

x = None
y = None

Теперь переменные x и y могут рассматриваться как null значения. Можно использовать эти переменные для обозначения отсутствия или пустоты.

Использование None в качестве значения по умолчанию

None также может использоваться в качестве значения по умолчанию для параметров функции. Это позволяет вам определить значения аргументов функции, которые могут быть не указаны при вызове функции.

Python

def greet(name=None):
if name is None:
name = "Guest"
print(f"Hello, {name}!")
greet()
greet("John")

Выполнение:

Hello, Guest!
Hello, John!

При вызове функции greet() без аргументов, переменной name присваивается значение по умолчанию None, а затем выводится приветствие со значением по умолчанию. Если же при вызове функции передан аргумент name, то он будет использован для вывода приветствия.

Вместо использования None в качестве значения по умолчанию вы также можете использовать другие значения, такие как "" (пустая строка) или 0, в зависимости от вашей конкретной задачи.

Использование None как нулевого значения в Python

None также может использоваться в качестве нулевого значения в Python. Это особенно полезно при работе с переменными, используемыми для хранения информации, поскольку None может быть использован для обозначения отсутствия значения или пустоты.

Python

user_profile = {
"name": "John",
"age": None,
"email": None
}

В этом примере мы создали словарь user_profile, в котором None используется для обозначения, что значения age и email отсутствуют или не определены.

Расшифровка None в трассировке

Python может также использовать None в трассировочной информации как отметку отсутствия значения. Если в трассировке вы видите None, значит это указывает на то, что значения соответствующих переменных еще не были установлены или не были присвоены в этой точке выполнения программы.

Python

def divide(a, b):
try:
result = a https://codemdd.io/ b
except ZeroDivisionError:
result = None
return result
print(divide(5, 2)) # 2.5
print(divide(5, 0)) # None

Выполнение:

2.5
None

В этом примере мы использовали блок tryhttps://codemdd.io/except для перехвата исключения ZeroDivisionError, которое возникает при делении на ноль. Если исключение было перехвачено, мы устанавливаем значение result в None и возвращаем его.

Это позволяет нам обрабатывать ошибки при делении на ноль и возвращать None вместо того, чтобы вызывать исключение.

Проверка на Null в Python

Есть несколько способов проверить, является ли переменная None в Python. Один из наиболее распространенных способов - использование оператора is:

Python

x = None
y = 5
print(x is None) # True
print(y is None) # False

Выполнение:

True
False

Здесь мы сравниваем переменные x и y с None с помощью оператора is. Если переменная является None, результатом будет True, в противном случае - False.

Кроме того, вы можете использовать операторы == и != для сравнения переменных с None:

Python

x = None
y = 5
print(x == None) # True
print(y != None) # True

Выполнение:

True
True

Обратите внимание, что is более предпочтителен для проверки на None, так как он проверяет, является ли переменная тем же самым объектом None, в то время как == сравнивает значения переменных.

Взглянем под капот

В Python None - это одно единственное значение, которое всегда определено. Это происходит потому, что None - это объект NoneType. Интерпретатор Python предварительно создает этот объект при запуске программы и все ссылки на None указывают на этот объект.

Так что, когда вы присваиваете переменной None, вы просто присваиваете ссылку на существующий объект NoneType. Это позволяет использовать оператор is для проверки на None, так как он проверяет, указывает ли переменная на тот же самый объект или нет.

Заключение

В этом уроке вы узнали о None в Python и как использовать его для обозначения отсутствия значения или пустоты. None является важным концептом, который приносит пользу в различных ситуациях, таких как значения по умолчанию, отсутствующие аргументы функции и проверка на None. Вы теперь обладаете знаниями, которые помогут вам лучше понимать и использовать None в своих программах на Python.