Что возвращает функция Python, если в ней отсутствует оператор `return`?

Ответ

Если функция в Python не содержит оператора return или оператор return используется без указания возвращаемого значения (например, просто return), то по умолчанию она всегда возвращает объект None.

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

Пример:

def greet(name: str):
    """
    Эта функция печатает приветствие, но не возвращает явного значения.
    """
    print(f"Hello, {name}!")

def do_nothing():
    """
    Эта функция не делает ничего и не имеет оператора return.
    """
    pass

def explicit_none_return():
    """
    Эта функция явно возвращает None.
    """
    return None

def simple_return():
    """
    Эта функция использует return без значения.
    """
    return

# Вызов функции greet
result_greet = greet("Alice")
print(f"Результат greet: {result_greet} (тип: {type(result_greet)})")
# Ожидаемый вывод: Hello, Alice!
# Результат greet: None (тип: <class 'NoneType'>)

# Вызов функции do_nothing
result_nothing = do_nothing()
print(f"Результат do_nothing: {result_nothing} (тип: {type(result_nothing)})")
# Ожидаемый вывод: Результат do_nothing: None (тип: <class 'NoneType'>)

# Вызов функции explicit_none_return
result_explicit = explicit_none_return()
print(f"Результат explicit_none_return: {result_explicit} (тип: {type(result_explicit)})")
# Ожидаемый вывод: Результат explicit_none_return: None (тип: <class 'NoneType'>)

# Вызов функции simple_return
result_simple = simple_return()
print(f"Результат simple_return: {result_simple} (тип: {type(result_simple)})")
# Ожидаемый вывод: Результат simple_return: None (тип: <class 'NoneType'>)

Как видно из примера, во всех случаях, когда функция не возвращает явного значения, Python автоматически возвращает None.