Объявление функций и return

Тема дорожной карты · Python Programming

Функции в Python — это первоклассные объекты, которые можно объявлять с помощью ключевого слова def. Они предназначены для выполнения конкретных задач и могут быть вызваны многократно. Результат работы функции можно вернуть с помощью ключевого слова return. Если функция не содержит явного return, она возвращает значение None.

Для создания функции следует придерживаться принципа "одна функция — одна задача". Это упрощает тестирование и поддержку кода. Имена функций должны быть глаголами, что помогает лучше понять их назначение. Также рекомендуется использовать аннотации типов, которые служат как документацией, так и подсказками для проверки типов с помощью mypy или pyright.

Значения по умолчанию для параметров вычисляются один раз при определении функции. Это означает, что если вы используете изменяемые типы данных, такие как списки или словари, как значения по умолчанию, они будут общими для всех вызовов функции. Поэтому важно избегать использования изменяемых типов данных в качестве значений по умолчанию, особенно если эти значения будут изменяться.

Как это работает

Объявление функций и использование ключевого слова return осуществляется с помощью синтаксиса def name(params): body. Параметры могут быть позиционными, keyword, default-значимыми, variadic (*args, **kwargs) или positional-/keyword-only (PEP bk 570/3102). Ключевое слово return используется для возврата значения из функции. Если значение не указано, функция возвращает None. Функции в Python являются first-class объектами, что означает, что их можно присваивать переменным, передавать как аргументы другим функциям и возвращать из других функций.

Кроме того, в Python есть возможность использовать анонимные функции или lambda-функции, которые полезны для создания коротких однострочных функций. lambda-функции могут быть использованы в качестве ключей для сортировки, функций для map и filter.

Когда применять

Функции следует объявлять, когда код выполняет повторяющиеся задачи или когда он может быть дано осмысленное имя. Это позволяет изолировать и тестировать его независимо от остальной части программы. Чистые функции, которые не имеют побочных эффектов и всегда возвращают одно и то же значение при одинаковых входных данных, являются предпочтительными, так как они легче тестируются и лучше композируются.

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

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

Ещё одной распространённой ошибкой является затенение встроенных имён локальными переменными, что может привести к непредсказуемому поведению программы. Например, если вы объявите переменную list и присвоите ей список значений, вы не сможете использовать встроенную функцию list для преобразования итерируемого объекта в список.

Связанные понятия

Полезные ресурсы