← Назад к вопросам

Может ли функция ничего не возвращать в 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 помогает явно обозначить функции для побочных эффектов и улучшает читаемость кода.

Может ли функция ничего не возвращать в Python? | PrepBro