*args
используется для передачи произвольного количества позиционных аргументов в функцию. Они передаются как кортеж.
**kwargs
используется для передачи произвольного количества именованных аргументов (ключевых слов) в функцию. Они передаются как словарь.
*args
и **kwargs
- это специальные синтаксические конструкции в Python, которые позволяют функциям принимать переменное количество аргументов.
*args
(позиционные аргументы):*args
используется для передачи переменного количества позиционных аргументов в функцию.args
представляет собой кортеж (tuple), содержащий все переданные позиционные аргументы.args
- это общепринятое соглашение, можно использовать другое имя, но звездочка *
обязательна. Например, *my_args
.*args
, доступны в функции по индексу.Пример:
def my_function(*args):
for arg in args:
print(arg)
my_function(1, 2, 3, "hello") # Вывод: 1, 2, 3, hello
**kwargs
(именованные аргументы):**kwargs
используется для передачи переменного количества именованных (ключевых) аргументов в функцию.kwargs
представляет собой словарь (dictionary), где ключи - это имена аргументов, а значения - соответствующие им значения.kwargs
- это общепринятое соглашение, можно использовать другое имя, но двойная звездочка **
обязательна. Например, **my_kwargs
.**kwargs
, доступны в функции по имени (ключу).Пример:
def my_function(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
my_function(name="Alice", age=30, city="New York") # Вывод: name: Alice, age: 30, city: New York
*args
принимает позиционные аргументы, **kwargs
принимает именованные аргументы.*args
представляет собой кортеж, **kwargs
представляет собой словарь.*args
передаются по порядку, аргументы для **kwargs
передаются в виде ключ=значение
.Когда использовать:
*args
полезен, когда заранее неизвестно количество позиционных аргументов, которые нужно передать в функцию. Например, при создании функции, которая принимает любое количество чисел и возвращает их сумму.**kwargs
полезен, когда нужно передать в функцию дополнительные параметры, которые не были определены в ее сигнатуре. Например, для передачи конфигурационных параметров.Комбинирование:
Можно использовать *args
и **kwargs
одновременно. В этом случае они обычно указываются в конце списка параметров функции. Важно помнить, что порядок важен: сначала идут обычные позиционные аргументы, затем *args
, и в конце **kwargs
.
Пример комбинирования:
def my_function(arg1, arg2, *args, **kwargs):
print(f"arg1: {arg1}")
print(f"arg2: {arg2}")
print(f"args: {args}")
print(f"kwargs: {kwargs}")
my_function(1, 2, 3, 4, name="Alice", age=30)
# Вывод:
# arg1: 1
# arg2: 2
# args: (3, 4)
# kwargs: {'name': 'Alice', 'age': 30}