Позиционные аргументы и аргументы ключевых слов
- Когда мы вызываем функцию и НЕ передаем имена параметров вместе со значениями, они называются позиционными аргументами.
- Когда мы вызываем функцию и ДЕЙСТВИТЕЛЬНО передаем имена параметров вместе со значениями, они известны как аргументы ключевого слова.
Арги и Кварги
Если вы работали с Python, возможно, вы сталкивались с такой функцией
def func(*args, **kwargs):
pass
Функция func имеет пару параметров *args и **kwargs. Слова args и kwargs — это просто соглашения об именах, важны операторы «*» и «**». Они также известны как операторы распаковки.
Аргументы
args означает аргументы. Если параметром функции является *args, она может принимать любое количество позиционных аргументов. args в основном похож на кортеж, и мы можем перебирать его, используя оператор in. Поскольку это кортеж, он неизменяем.
Как упоминалось выше, «args» — это просто соглашение об именах. Мы можем использовать «числа» или что-то еще.
Кварги
**kwargs аналогичен *args. Единственное отличие состоит в том, что он принимает несколько аргументов ключевого слова. Отсюда и название «кварги».
kwargs похож на словарь. «kwargs» также является соглашением об именах и может называться как угодно.
Порядок параметров
Во-первых, у вас должны быть нормальные параметры, за которыми следует «*args», а затем «**kwargs».
- 1 и 2 назначаются num1 и num2 соответственно.
- Остальные позиционные аргументы (3,4,5,6) назначаются *args.
- parameter1 и parameter2 назначаются **kwargs
Примечание о порядке параметров
Это не имеет ничего общего с «args» или «kwargs». Это правило необходимо соблюдать при работе с любой функцией в Python.
В Python вы не можете передавать позиционные аргументы после передачи аргументов ключевого слова.
# Error
func(num1 = 1,num2 = 2,3,4,5,6,parameter1 = 10, parameter2 = 20 )
Вы получите следующую ошибку, если сделаете это
SyntaxError: positional argument follows keyword argument
В приведенном выше вызове функции мы передаем num1 и num2 как аргументы ключевого слова, но затем передаем (3,4,5,6) как позиционные аргументы. Это не разрешено в Python и приведет к упомянутой выше синтаксической ошибке.
Однако мы можем передать аргументы ключевого слова после позиционных аргументов.
# Correct
func(1,2,3,4,5,6,parameter1 = 10, parameter2 = 20 )
Приведенный выше фрагмент кода будет правильным, поскольку после аргументов ключевого слова нет позиционных аргументов.
Первоначально опубликовано на https://www.realpythonproject.com 6 апреля 2021 г.