← Все вопросы
Что такое *args и **kwargs в Python простыми словами?
21
Постоянно вижу в чужом коде функции вида def f(*args, **kwargs):. Что это за звёздочки и зачем они? Объясните, пожалуйста, на простом примере.
3 ответа
34
✓ Принятый ответ — помог автору
Коротко:
*args— собирает все «лишние» позиционные аргументы в кортеж.**kwargs— собирает все «лишние» именованные аргументы в словарь.
Это нужно, когда заранее не знаешь, сколько аргументов передадут.
def summa(*args):
return sum(args)
print(summa(1, 2, 3)) # 6
print(summa(1, 2, 3, 4)) # 10
А **kwargs ловит пары ключ=значение:
def info(**kwargs):
for k, v in kwargs.items():
print(k, '=', v)
info(name='Аня', age=20)
# name = Аня
# age = 20
Имена args и kwargs — это просто соглашение, важны именно звёздочки * и **.
Хайрутин Штанчаев вот теперь дошло, спасибо 🙏 · 3 месяца назад
Ксения Ковалёва а можно их вместе использовать? def f(*args, **kwargs) · 2 месяца назад
Кирилл Андервуд автор коммента: да, можно, сначала *args, потом **kwargs · 2 месяца назад
11
Запомнить просто: одна звёздочка — список аргументов без имён, две звёздочки — словарь аргументов с именами.
4
Кортеж и словарь.
Ваш ответ
Войдите, чтобы ответить на вопрос.