2012-06-16 21 views
5

Powiedzmy, że istnieje funkcja func(), która przyjmuje dwa argumenty: a i b. Czy w Pythonie jest jakaś technika, która przekazuje pojedynczą listę mylist, która zamiast tego ma obie wartości do funkcji?przekazywanie jednej listy wartości zamiast wielu argumentów do funkcji?

def myfunc(a, b): 
    return a+b 

myfunc([1, 2]) 

Jeśli ktoś był całkowicie pewien, że zawsze nazywając tę ​​samą funkcję i wiedział, jak wiele argumentów potrzeba, można zrobić coś takiego:

mylist = [1, 2] 
a, b = mylist 

myfunc(a, b) 

ale co jeśli masz list trzeba podawać określone funkcje, a każda z nich ma różną liczbę argumentów? Można napisać osobne wiersze kodu dla każdej z jego funkcji, aby rozpakować listy na zmienne i przekazać je do odpowiednich funkcji, ale jeśli Python ma coś wbudowanego, aby przekazać pojedynczą listę zamiast pojedynczych wartości argumentów (przy pewności wcześniej ta lista ma odpowiednią ilość wartości), wtedy wyglądałaby znacznie lepiej i co najważniejsze wymagałoby znacznie mniej linii kodu.

Odpowiedz

8

Można użyć * do unpack the list into arguments:

myfunc(*mylist) 
+3

Wiedziałem Python miałby coś takiego! –

+3

@ user975135 Można to również zrobić z dyktami, które są użyteczne dla argumentów słów kluczowych lub wywołujących funkcje z wieloma argumentami: 'mydict = {'a': 1, 'b': 2}' 'myfunc (** mydict)' – Darthfett

4
def myfunc(a, b): 
    return a+b 

mylist = [1, 2] 
myfunc(*mylist) 

Tutaj mylist może być list, tuple, string etc długości 2.

+0

+1, może być dowolną sekwencją, a nie tylko listą – PaulMcG

Powiązane problemy