142 votes

Python: développe la liste des arguments de fonction

Ok, question stupide de python: Existe-t-il une syntaxe qui vous permet de développer une liste dans les arguments d'un appel de fonction?

Exemple:

 # trivial example function, not meant to do anything useful.
def foo(x,y,z):
   return "%d, %d, %d" %(x,y,z)

# List of values that I want to pass into foo
values = [1,2,3]

#I want to do something like this, and get the result "1, 2, 3":
foo( values.howDoYouExpandMe() )
 

171voto

Daenyth Points 11297

Cela existe, mais c'est difficile à rechercher. Je pense que la plupart des gens l'appellent l'opérateur " splat ".

C'est dans la documentation en tant que " Déballage des listes d'arguments ".

Vous l'utiliseriez comme ceci: foo(*values) . Il y en a aussi un pour les dictionnaires:

 d = {'a': 1, 'b', 2}
def foo(a, b):
    pass
foo(**d)
 

61voto

varunl Points 2425

Vous devez utiliser l'opérateur *, comme foo(*values) Lisez les listes d'arguments de dépaquetage de la documentation Python.

Lisez également ceci: http://www.saltycrane.com/blog/2008/01/how-to-use-args-and-kwargs-in-python/

 def foo(x,y,z):
   return "%d, %d, %d" %(x,y,z)

values = [1,2,3]

# the solution.
foo(*values)
 

11voto

Andrew Clark Points 77748

Essayez ce qui suit:

 foo(*values)
 

Cela se trouve dans les documents Python sous la forme de listes d'arguments décompactées .

10voto

Ikke Points 31517

Cela peut être fait avec:

 foo(*values)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X