Найти в Дзене

Python. Инструкция def. Аргументы функций, операторы *args и **kwargs.(85)

Когда в программе необходимо делать одно и тоже действие несколько раз, то для того что бы сократить код и упростить программу прибегают к функции. Из повторяемого действия делают функцию (описывают функцию) и вызывают эту функцию, когда она нужна. Процесс создания функции называется – описание функции, а процесс использования функции называется –вызовом функции. Описание функции начинается с инструкции def В примере функция складывает три аргумента и выводит результат на экран. Как правило вывод на экран не используют, а функция возвращает в программу какое то значение. Делается это с помощью оператора return. Аргументы у функции могут быть позиционными (стоящими на определенной позиции 1, 2, 3 ….) или именованными (т.е имеющими имя). Именованные аргументы всегда имеют значение по умолчанию. При вызове в функцию необходимо передать все позиционные аргументы, если аргументов не будет хватать , то будет возбуждена ошибка, с сообщением сколько аргументов не хватает, а вот именованны

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

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

Описание функции начинается с инструкции def

В примере функция складывает три аргумента и выводит результат на экран. Как правило вывод на экран не используют, а функция возвращает в программу какое то значение. Делается это с помощью оператора return.

-2

Аргументы у функции могут быть позиционными (стоящими на определенной позиции 1, 2, 3 ….)

-3

или именованными (т.е имеющими имя). Именованные аргументы всегда имеют значение по умолчанию.

-4

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

-5

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

-6

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

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

-7

В случае если в функции, будет использовано неизвестное количество аргументов ,то при определении функции используются операторы * - для позиционных аргументов и оператор ** - для именованных аргументов. Оператор * делает из всех значений позиционных аргументов, не перечисленных при определении функции кортеж(tuple) состоящий из этих значений, стоящие после оператора * литеры будут именем переменной(как правило используются литеры args), которой будет присвоен этот кортеж.

Оператор ** делает словарь(dict) из значений позиционных аргументов, не перечисленных при определении функции, стоящие после оператора ** литеры будут именем переменной, которой будет присвоен этот словарь(как правило используются литеры kwargs).

-8

По ссылкам можно почитать мои конспекты:

Книги и курсы по Python
Книги и курсы по Python год спустя.
Встроенные функции (Built-in)
Методы словаря (Dict methods)
Методы списков (List methods)
Строковые методы (String Methods)
Библиотека os
Спецификаторы
Итерируемый тип данных
Инструкции continue, break и pass
Цикл for … in
Цикл while
Условная инструкция if
Индексация
Переменные
Инструкция def
Встроенные функции print() и input()
Оператор присваивания
Основные типы данных
Утилита PIP
Коротко о языке