Bonjour,
pourriez vous m'éclairez sur la signification de l'étoile * ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part def add(d,*p):
Bonjour,
pourriez vous m'éclairez sur la signification de l'étoile * ici :
Code : Sélectionner tout - Visualiser dans une fenêtre à part def add(d,*p):
Cela veut dire que ta fonction prend un tuple en paramètre, c'est utile pour créer une fonction qui prend en paramètre un nombre variable d'arguments
Code Python : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 def fn(*args): print 'Nombre de paramètres : ' + str(len(args)) fn(2, 1, 6) # affiche 'Nombre de paramètres : 3' fn(3) # affiche 'Nombre de paramètres : 1'
Cela ne signifie pas que la fonction prend un tuple en paramètre, cela signifie l'argument p (dans l'exemple donnée par le PO) recevra un tuple contenant les arguments positionnels surnuméraires. Cela permet effectivement d'implanter une fonction qui prend un nombre variable d'argument. A noter qu'il existe la même chose pour les arguments 'keywords' surnuméraires:
Ainsi l'appel:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 def ma_fonction(a, b, c, *pargs, **kargs): print a, b, c, pargs, kargs
affiche:
Code : Sélectionner tout - Visualiser dans une fenêtre à part ma_fonction(1, 2, 3, 4, 5, d=6, e=7, f=8)
Thierry
Code : Sélectionner tout - Visualiser dans une fenêtre à part 1 2 3 (4, 5) {'e': 7, 'd': 6, 'f': 8}
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
On peut aussi utiliser * et ** lors d'un appel de fonction pour effectuer l'opération inverse: décomposer un tuple en arguments positionnels ou un dictionnaire en arguments nommés:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 >>> def f(a,b,c,d): ... print a,b,c,d ... >>> t = (2,3) >>> d = {'c':8, 'd':9} >>> f(*t,**d) 2 3 8 9
Merci tous les trois, c'est très clair maintenant !!
Partager