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 !!
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager