2016-11-17 12 views
-2

Я знаю, что * args используются, когда вы не знаете, сколько аргументов используется внутри вызова функции. Однако, что мне делать, когда я хочу, чтобы одна группа из * args делала X и одну группу из * args делать y?Python 3.X с использованием нескольких аргументов для разных вещей

+1

Вы не можете. Существует только один набор * args для каждой функции. –

+0

вы можете изложить? это ваша функция, что вы пытаетесь сделать? что такое «одна группа аргов» - определенное количество или определенное время или что-то еще? – depperm

+0

группирует аргументы в две группы до или после вызова функции. –

ответ

1

Вы не можете передать два *args в пределах одной функции. Вам необходимо пройти args1 и args2 как простой list, и вы можете передать эти списки в арг к функциям делают X и Y. Например:

def do_X(*args): 
    # Do something 

def do_Y(*args): 
    # Do some more thing 

def my_function(list1, list2): 
    do_X(*list1) # Pass list as `*args` here 
    do_Y(*list2) 

И ваш призыв к my_function будет, как:

args_1 = ['x1', 'x2'] # Group of arguments for doing `X` 
args_2 = ['y1', 'y2'] # Group of arguments for doing `Y` 

# Call your function 
my_function(args_1, args_2) 
0

В этом случае вы принимаете аргументы как два отдельных списка, которые по умолчанию могут иметь пустой список или None.