Найти в Дзене
Дойти до IT

Python - *args и **kwargs

В языке программирования Python *args и **kwargs — это специальные синтаксические конструкции, которые позволяют работать с переменным количеством аргументов при вызове функции. Они полезны в ситуациях, когда заранее неизвестно, сколько аргументов будет передано функции. *args используется для передачи в функцию переменного количества позиционных аргументов, которые собираются в кортеж. Это удобно, когда нужно обработать несколько значений, не зная их количества заранее. **kwargs, в свою очередь, позволяет передавать переменное количество именованных аргументов, которые собираются в словарь. Это полезно, когда необходимо передать в функцию набор параметров, которые могут меняться в зависимости от ситуации. *args позволяет функции принимать произвольное количество позиционных аргументов. Когда вы определяете функцию с *args в качестве параметра, все позиционные аргументы, переданные функции, собираются в кортеж с именем args. Это даёт возможность работать с переменным числом аргументов
Оглавление

*args и **kwargs

В языке программирования Python *args и **kwargs — это специальные синтаксические конструкции, которые позволяют работать с переменным количеством аргументов при вызове функции. Они полезны в ситуациях, когда заранее неизвестно, сколько аргументов будет передано функции.

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

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

*args

*args позволяет функции принимать произвольное количество позиционных аргументов. Когда вы определяете функцию с *args в качестве параметра, все позиционные аргументы, переданные функции, собираются в кортеж с именем args. Это даёт возможность работать с переменным числом аргументов в функции, не зная их количества заранее.

Пример:

def print_args(*args):
____for arg in args:
________print(arg)
print_args(1, 2, 3, 'hello', 'world')

В этом примере функция print_args принимает любое количество аргументов и выводит их. Аргументы передаются в виде кортежа args.

**kwargs

**kwargs работает так же, как и *args, но вместо кортежа используется словарь.

Пример:

def print_kwargs(**kwargs):
____for key, value in kwargs.items():
________print(f"{key}: {value}")
print_kwargs(name='Alice', age=30, city='New York')

В этом примере функция print_kwargs принимает любое количество именованных аргументов и выводит их в виде ключ-значение. Аргументы передаются в виде словаря kwargs.

Комбинация *args и **kwargs

Вы можете использовать *args и **kwargs вместе в одной функции. Важно помнить, что *args должен идти перед **kwargs в списке параметров функции.

def print_all_args_and_kwargs(*args, **kwargs):
____print("Positional arguments:")
____for arg in args:
________print(arg)
____print("\nKeyword arguments:")
____for key, value in kwargs.items():
________print(f"{key}: {value}")
print_all_args_and_kwargs(1, 2, 3, name='Alice', age=30)

В этом примере функция print_all_args_and_kwargs принимает как позиционные, так и именованные аргументы и выводит их по категориям.