✏Сравнение *args и **kwargs. Когда, что использовать?
Когда вы работаете с функциями в Python, вы можете столкнуться с двумя специальными параметрами: *args и **kwargs. Оба эти параметра позволяют передавать переменное количество аргументов в функцию.
*args: передача произвольного числа аргументов
Параметр *args позволяет передавать произвольное количество позиционных аргументов в функцию. Когда вы используете *args, все переданные аргументы будут собраны в кортеж. Вы можете использовать этот кортеж внутри функции для обработки переданных значений.
Одним из примеров использования *args может быть функция, которая суммирует все переданные числа. Предположим, у нас есть функция sum_numbers, принимающая произвольное количество аргументов. Мы можем вызвать эту функцию с разным количеством чисел и получить их сумму.
def sum_numbers(*args):
total = 0
for num in args:
total += num
return total
print(sum_numbers(1, 2, 3)) # Output: 6
print(sum_numbers(10, 20, 30, 40)) # Output: 100
📌 **kwargs: передача произвольного числа именованных аргументов
Параметр **kwargs позволяет передавать произвольное количество именованных аргументов в функцию. В отличие от *args, аргументы передаются в виде пар ключ-значение, и они собираются в словарь. Вы можете использовать этот словарь внутри функции для доступа к переданным значениям.
Одним из примеров использования **kwargs может быть функция, которая выводит информацию о переданных пользователях. Предположим, у нас есть функция print_users, которая принимает именованные аргументы в виде пары ключ-значение, где ключ - это имя пользователя, а значение - его возраст. Мы можем вызвать эту функцию с разными пользователями и получить информацию о них.
def print_users(**kwargs):
for name, age in kwargs.items():
print(f"User {name} is {age} years old")
print_users(john=25, alice=30, bob=35)
# Output:
# User john is 25 years old
# User alice is 30 years old
# User bob is 35 years old
📌Когда что использовать?
- *args следует использовать, когда вы хотите передать произвольное количество позиционных аргументов в функцию и работать с ними как с кортежем. Например, это может быть полезно, когда вам необходимо суммировать числа или склеить строки.
- **kwargs следует использовать, когда вы хотите передать произвольное количество именованных аргументов в функцию и работать с ними как с словарем. Это может быть полезно, когда вам необходимо обрабатывать различные параметры или настройки.