Я хотел бы создать функцию, которая использует два аргумента переменной длины. Например:
def my_func(*args1, *args2): for i in args1: do stuff for j in args2: do stuff
Есть ли в Python способ использовать более одного *args? Заранее спасибо за помощь.
*args
Нет, поскольку нет способа определить, означает ли
my_func(a, b)
args = [], args2 = [a,b] # or .. args = [a], args2 = [b] # or .. args = [a,b], args2 = []
Вместо этого просто позвольте функции принимать два списка в качестве аргументов.
Вы должны использовать списки. Таким образом, очевидно, какой элемент идет в каком аргументе:
def my_func(args1, args2): for a in args1: print a for b in args2: print b my_func([1, 2, 3], [4, 5, 6])
Нет, это даже не имеет смысла.Что будет определять, что идет в первом списке, а что во втором?Вы также можете передать ключевые аргументы (если вы еще этого не знали):
def func(*args **kwargs): pass
Чего именно вы пытаетесь достичь?
Как бы вы хотели вызвать функцию? почему бы не использовать два arrys или dicts?
Вы можете использовать массив (или любое другое имя Python для массива) для каждого аргумента.В противном случае Python не сможет узнать, где разбить каждый набор аргументов переменной длины.