Я оказался в ситуации, когда было бы полезно определить функцию с различными наборами * аргументов. Нечто похожее на это:
def sum(*list1, *list2):
list1sum = 0
list2sum = 0
for item in list1:
list1sum += item
for item in list2:
list2sum += item
return list1sum, list1sum
Это просто дает синтаксическую ошибку, поэтому кажется, что python не принимает такое определение. Как я могу обойти это? Самый простой способ:
def sum(*lists):
list1sum = 0
list2sum = 0
for item in lists[0]:
list1sum += item
for item in lists[1]:
list2sum += item
print(list1sum, list2sum)
sum(*(list1, list2))
Но он не похож на python. Должен ли я определить словарь с аргументами, которые я хочу передать функции, и передать ее как kwargs? Это было бы:
def sum(**lists):
list1sum = 0
list2sum = 0
for item in lists['list1']:
list1sum += item
for item in lists['list2']:
list2sum += item
print(list1sum, list2sum)
dict = {'list1': [1, 2],
'list2': [3, 4]}
sum(**dict)
Что определенно чувствует себя лучше. Есть ли альтернативы? Заранее спасибо.