Есть ли способ использовать более 1 аргументов переменной длины (* args) в функции Python? - PullRequest
0 голосов
/ 08 октября 2011

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

def my_func(*args1, *args2):
    for i in args1:
        do stuff
    for j in args2:
        do stuff

Есть ли в Python способ использовать более одного *args? Заранее спасибо за помощь.

Ответы [ 5 ]

6 голосов
/ 08 октября 2011

Нет, поскольку нет способа определить, означает ли

my_func(a, b)

args = [], args2 = [a,b] # or ..
args = [a], args2 = [b]  # or ..
args = [a,b], args2 = []

Вместо этого просто позвольте функции принимать два списка в качестве аргументов.

1 голос
/ 08 октября 2011

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

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])
0 голосов
/ 08 октября 2011

Нет, это даже не имеет смысла.Что будет определять, что идет в первом списке, а что во втором?Вы также можете передать ключевые аргументы (если вы еще этого не знали):

def func(*args **kwargs):
    pass

Чего именно вы пытаетесь достичь?

0 голосов
/ 08 октября 2011

Как бы вы хотели вызвать функцию? почему бы не использовать два arrys или dicts?

0 голосов
/ 08 октября 2011

Вы можете использовать массив (или любое другое имя Python для массива) для каждого аргумента.В противном случае Python не сможет узнать, где разбить каждый набор аргументов переменной длины.

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