Зачем использовать упакованные * args / ** kwargs вместо списка передачи / dict?

Если я не знаю, сколько аргументов будет передано функции, ямог напишите функцию, используя упаковку аргументов:

def add(factor, *nums):
    """Add numbers and multiply by factor."""
    return sum(nums) * factor

В качестве альтернативы, я мог бы избежать упаковки аргументов, передав список чисел в качестве аргумента:

def add(factor, nums):
    """Add numbers and multiply by factor.

    :type factor: int
    :type nums: list of int
    """
    return sum(nums) * factor

Есть ли преимущество в использовании упаковки аргументов*args пройти список номеров? Или есть ситуации, когда кто-то более уместен?

Ответы на вопрос(3)

Ваш ответ на вопрос