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

Как использовать Python: руководство по базовым операциям

[

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

Автор: Wolf

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

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

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

Когда вы вызываете has_no_return(), у вас нет вывода для просмотра. Однако, если вы печатаете этот вызов, то увидите скрытое значение None, которое он возвращает.

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

None
print(None)

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

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

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

Может показаться странным, но print(print("...")) показывает вам значение None, которое возвращает внутренняя функция print().

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

help(list.sort)

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

Часто, вам может потребоваться создать переменные со значением None, чтобы присвоить им значения позднее. В Python это делается следующим образом:

x = None

Теперь переменная x имеет значение None и может быть использована в вашей программе.

Одним из практичных случаев использования значения None является использование его в качестве по умолчанию для параметров функции. Рассмотрим следующий пример:

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

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

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

Значение None также может использоваться в качестве нулевого значения для пустых переменных. Например:

x = None
y = 5
z = x + y
print(z)

В этом примере, переменная x присваивается значение None, а переменная y присваивается значение 5. Затем, значения x и y суммируются и результат присваивается переменной z. Поскольку значение x равно None, сумма будет равна None. При печати z будет выведено значение None.

Декодирование None в трассировочном сообщении

Значение None также появляется в трассировочных сообщениях при отсутствии возвращаемого значения. Например:

def divide(a, b):
try:
result = a / b
return result
except ZeroDivisionError:
print("Error: Division by zero")
result = divide(10, 0)

В этом примере, функция divide() возвращает результат деления двух аргументов, a и b. Если деление на 0 возникает ошибка ZeroDiivisionError, и сообщение об ошибке будет напечатано. При вызове функции divide(10, 0), возникнет исключение деления на нуль, и переменной result будет присвоено значение None.

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

Чтобы проверить, является ли переменная равной None, вы можете использовать оператор is. Например:

x = None
if x is None:
print("x is None")
else:
print("x is not None")

В этом примере, переменная x проверяется на равенство с None с помощью оператора is. Если переменная x равна None, тогда будет выведено “x is None”. В противном случае, будет выведено “x is not None”.

Взгляд под капот None в Python

Когда вы объявляете переменную со значением None, на самом деле создается ссылка на специальный объект None. В Python этот объект можно получить с помощью функции id(). Например:

x = None
print(id(x))

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

Заключение

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