Позиционные аргументы и аргументы ключевых слов

  • Когда мы вызываем функцию и НЕ передаем имена параметров вместе со значениями, они называются позиционными аргументами.
  • Когда мы вызываем функцию и ДЕЙСТВИТЕЛЬНО передаем имена параметров вместе со значениями, они известны как аргументы ключевого слова.

Арги и Кварги

Если вы работали с 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 г.