⚠️ Типичные ошибки

⚡ Кратко: ошибки

Функция - именованный блок кода, который можно вызывать много раз.

def создаёт функцию, pass временно оставляет обязательный блок пустым.

При вызове функции позиционные аргументы сопоставляются по порядку, именованные - по названию параметра.

Аргументы по умолчанию пишутся после обязательных параметров.

*args собирает лишние позиционные аргументы в tuple, **kwargs - именованные аргументы в dict.

return завершает функцию и возвращает значение; без return результатом будет None.

LEGB описывает поиск имён: Local, Enclosing, Global, Built-in.

global нужен только для изменения глобальной переменной, но чаще лучше передавать данные параметрами.

Топ-3 ошибки: передавать не то количество аргументов; ожидать значение от функции, где нет return; менять global там, где достаточно параметров и return.

Скобки при передаче функции

Передать func() вместо func означает передать результат вызова, а не функцию.

Если нужно передать саму функцию, пишите имя без скобок.

def square(x):
    return x * x

def apply(func, value):
    return func(value)

print(apply(square, 5))

Неверный порядок default-аргументов

Параметр со значением по умолчанию не может стоять перед обязательным.

Сначала обязательные параметры, затем параметры со значениями по умолчанию.

def greet(name, greeting="Hello"):
    return f"{greeting}, {name}"

print(greet("Alice"))

Ожидание результата без return

print внутри функции выводит текст, но не возвращает значение вызывающему коду.

Для вычислений возвращайте результат через return.

def add(a, b):
    return a + b

result = add(2, 3)
print(result)