Определение функции с несколькими * аргументами - PullRequest
0 голосов
/ 11 января 2020

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

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)

Что определенно чувствует себя лучше. Есть ли альтернативы? Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...