← Назад к вопросам
Может ли функция ничего не возвращать в Python?
1.3 Junior🔥 131 комментариев
#Python Core
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
# Может ли функция ничего не возвращать в Python?
Кратко: Да, может
В Python функция всегда что-то возвращает. Если явно не указан return, функция возвращает None. Это неявный возврат значения None.
def function_without_return():
print("Hello")
result = function_without_return()
print(result) # None
print(type(result)) # <class NoneType>
Как это работает
Каждая функция в Python имеет неявный return None в конце:
def example1():
x = 5 + 3
# Эквивалентно:
def example2():
x = 5 + 3
return None
print(example1()) # None
print(example2()) # None
Практические примеры
Функции без возврата (для побочных эффектов)
# Функция пишет в базу, но ничего не возвращает
def save_user_to_db(name: str) -> None:
# Выполняем побочный эффект
print(f"Saving {name} to database...")
# Явно указываем -> None для ясности кода
save_user_to_db("Alice") # Выводит сообщение, возвращает None
# Функция отправляет письмо
def send_email(to: str, subject: str) -> None:
"""Sends email and returns nothing."""
# логика отправки
pass
Функции с условным возвратом
def validate_email(email: str) -> str | None:
if "@" in email:
return email
# Если условие не выполнено, неявно возвращает None
print(validate_email("test@example.com")) # test@example.com
print(validate_email("invalid")) # None
Type Hints и None
В современном Python используют type hints для обозначения функций, возвращающих None:
# Python 3.10+ (PEP 604)
def process_data(data: dict) -> None:
"""Processes data without returning anything."""
for key, value in data.items():
print(f"{key}: {value}")
# Или старый синтаксис
from typing import None as NoneType
def old_style() -> NoneType:
pass
Важные моменты
1. None vs нет возврата — это одно и то же:
def func():
return
print(func()) # None
2. Функции с побочными эффектами обычно возвращают None:
def increment_counter(counter: list) -> None:
counter[0] += 1 # Побочный эффект — мутация аргумента
my_list = [5]
increment_counter(my_list)
print(my_list) # [6]
3. Проверка на None:
def get_value(key: str, data: dict) -> str | None:
return data.get(key) # Может вернуть None
value = get_value("name", {})
if value is not None:
print(f"Got: {value}")
else:
print("Key not found")
Вывод
Функция в Python всегда возвращает значение. Если явного return нет, она возвращает None. Это фундаментальное свойство языка, и использование -> None в type hints помогает явно обозначить функции для побочных эффектов и улучшает читаемость кода.