Сообщить об ошибке.

Краткий обзор раздела: Определение функции в Python

Содержание с кратким описанием:

ОБЗОР: Определение функции в Python.
Ключевое слово def вводит определение функции . За ним должно следовать имя функции и заключенный в скобки список формальных параметров. Операторы, которые формируют тело функции, начинаются со следующей строки и должны иметь отступ.
Функции это объекты.
В Python функции являются объектами первого класса . Это означает, что функции можно передавать и использовать в качестве аргументов , как и любой другой объект (string, int, float, list и т. Д.)
Функции могут иметь атрибуты.
У объектов функций и методов, есть специальный атрибут `__dict__`. Это словарь атрибутов функции. В него можно устанавливать и получать какие-то значения с помощью точечной нотации.
Функции могут храниться в структурах данных.
Так как функции являются объектами первого класса, их можно хранить в структурах данных, как и в случае с другими объектами.
Функции могут быть вложенными.
Вложенные функции не определены до тех пор, пока не будет вызвана родительская функция. Они локально ограничены родительской функцией
Передача функции в качестве аргумента другой функции.
Возможность передавать функциональные объекты в качестве аргументов другим функциям является мощной фишкой. Это позволяет абстрагироваться от функционала и передать поведение.
Область видимости переменных функции в Python.
Область видимости или scope определяет контекст переменной, в рамках которого ее можно прочитать или изменить. В Python есть два типа контекста: глобальный и локальный.
Операторы global и nonlocal в Python.
Операторы global и nonlocal используются в области видимости той функции, где будет изменяться переменная; оператор nonlocal используются только во вложенных функциях; с помощью оператора global можно определить глобальную переменную
Параметры (аргументы) функции в Python.
Параметры представляют собой локальные переменные функции, которым присваиваются значения в момент ее вызова. Аргументы функции передаются в локальную область видимости с использованием вызова по значению, где значение всегда является ссылкой
Ключевые аргументы в определении функции Python.
При вызове функции ключевые слова должны следовать за позиционными аргументами. Все передаваемые ключевые слова должны соответствовать одному из аргументов, указанных в определении функции Порядок ключевых слов не важен.
Значение аргумента по умолчанию в функциях Python.
Полезно указывать значение по умолчанию для одного или нескольких аргументов. Это создает функцию, которую можно вызывать с меньшим количеством аргументов, чем предписано
Варианты передачи аргументов в функцию Python.
По умолчанию аргументы могут передаваться в функцию Python либо по положению, либо явно по ключевому слову. Для удобочитаемости и производительности Python ограничивает способ передачи аргументов.
Переменные аргументов *args и **kwargs в функции Python.
*args - произвольное число позиционных аргументов, передается список аргументов, заключенных в кортеж. **kwargs - произвольное число именованных аргументов, передается список аргументов, заключенных в словарь..
Распаковка аргументов для передачи в функцию Python.
Одна звездочка распаковывает последовательности в качестве элементов которых одно значение. Две звездочки распаковывают последовательности в качестве элементов которых имеется ключ и значение
Как оцениваются аргументы при вызове функции?.
Во первых - объект func должен оцениваться как *вызываемый объект* и все переданные в него *выражения аргументов* оцениваются перед попыткой его вызова. Если в функцию при вызове передаются ключевые аргументы, то они сначала преобразуются в позиционные аргументы, затем создается список незаполнен
Строгие правила передачи аргументов в функцию Python.
Параметры функции не объясняют, *как* передавать в нее аргументы. Передача аргументов, полностью зависит от вызывающей стороны. Если код распространен, то гарантировано, что кто-то будет делать это не так, как предполагалось. Материал рассказывает как избежать этой проблемы.
Инструкция return в Python.
В Python инструкция return может встречаться лишь в теле функции, и за ней может следовать необязательное выражение. Выполнение инструкции return приводит к прекращению работы функции, а значение выражения, если оно имеется, возвращается в качестве р
Анонимные функции (lambda-выражения) в Python.
Лямбда-функции можно использовать везде, где требуются функциональные объекты. Они синтаксически ограничены одним выражением. Как и определения вложенных функций, лямбда-функции могут ссылаться на переменные из содержащей области
Строки документации в функциях Python.
Соглашения о содержании и форматировании строк документации.
Рекурсия в Python.
Python поддерживает рекурсию, когда функция может вызывать саму себя. Однако на глубину вложения рекурсивных вызовов наложены ограничения. По умолчанию Python прерывает рекурсию и бросает исключение, если глубина вызовов превышает 1000.
Замыкания в функциях Python.
Замыкание запоминает значения из своей заключительной лексической области, даже если поток программы больше не находится в этой области.
Перегрузка функций в Python.
Перегрузка функций - это распространенный шаблон программирования, статически типизированных, компилируемых языков. Python является динамически типизированным языком и следовательно, перегрузка функций здесь невозможна, тем не менее, есть простой способ реализовать такое поведение в Python.