Dans cet article, nous verrons ce que ** (double étoile/astérisque) et * (étoile/astérisque) font pour les paramètres dans Python , Ici, nous couvrirons également Exemples d'arguments et de kwargs en Python. Nous pouvons transmettre un nombre variable d'arguments à une fonction à l'aide de symboles spéciaux.
Il existe deux symboles spéciaux :
*args et **kwargs en Python
Symboles spéciaux utilisés pour passer des arguments en Python :
- *args (arguments non liés à des mots clés)
- **kwargs (Arguments de mots clés)
Note: Nous utilisons la notation générique ou * comme celle-ci – *args OU **kwargs – comme argument de notre fonction lorsque nous avons des doutes sur le nombre d’arguments que nous devons transmettre dans une fonction.
Qu'est-ce que Python *args ?
La syntaxe particulière *arguments dans les définitions de fonctions en Python est utilisé pour transmettre un nombre variable d'arguments à une fonction. Il est utilisé pour transmettre une liste d'arguments sans mot-clé et de longueur variable.
- La syntaxe consiste à utiliser le symbole * pour prendre un nombre variable d'arguments ; par convention, il est souvent utilisé avec le mot args.
- Quoi *arguments vous permet de prendre plus d'arguments que le nombre d'arguments formels que vous avez défini précédemment. Avec *arguments , n'importe quel nombre d'arguments supplémentaires peuvent être ajoutés à vos paramètres formels actuels (y compris zéro argument supplémentaire).
- Par exemple, nous voulons créer une fonction de multiplication qui prend n'importe quel nombre d'arguments et est capable de les multiplier tous ensemble. Cela peut être fait en utilisant *args.
- En utilisant le *, la variable que nous associons au * devient itérable, ce qui signifie que vous pouvez faire des choses comme parcourir dessus, exécuter certaines fonctions d'ordre supérieur telles que la carte et le filtre, etc.
Exemple 1:
Programme Python pour illustrer *args pour un nombre variable d'arguments
np.sumpython
def myFun(*argv): for arg in argv: print(arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Sortir:
Hello Welcome to techcodeview.com>
Exemple 2 :
Programme Python pour illustrer *args avec un premier argument supplémentaire
Python3 def myFun(arg1, *argv): print('First argument :', arg1) for arg in argv: print('Next argument through *argv :', arg) myFun('Hello', 'Welcome', 'to', 'techcodeview.com')>
Sortir:
First argument : Hello Next argument through *argv : Welcome Next argument through *argv : to Next argument through *argv : techcodeview.com>
Qu'est-ce que Python **kwargs ?
La syntaxe particulière **kwargs dans les définitions de fonctions en Python est utilisé pour transmettre une liste d'arguments avec mots-clés et de longueur variable. Nous utilisons le nom kwargs avec la double étoile. La raison en est que la double étoile nous permet de passer en revue les arguments de mots-clés (et n'importe quel nombre d'entre eux).
- Un argument mot-clé est l'endroit où vous fournissez un nom à la variable lorsque vous la transmettez à la fonction.
- On peut penser au kwargs comme étant un dictionnaire qui mappe chaque mot-clé à la valeur que nous lui transmettons. C'est pourquoi, lorsque nous parcourons le kwargs il ne semble y avoir aucun ordre dans lequel ils ont été imprimés.
Exemple 1:
Programme Python pour illustrer les *kwargs pour un nombre variable d'arguments de mots-clés. Ici, **kwargs accepte les arguments de longueur variable avec mot-clé transmis par l'appel de fonction. pour first='Geeks' first est la clé et 'Geeks' est une valeur. en termes simples, ce que nous attribuons est une valeur, et à qui nous attribuons est la clé.
Python def myFun(**kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun(first='Geeks', mid='for', last='Geeks')>
Sortir:
first == Geeks mid == for last == Geeks>
Exemple 2 :
Programme Python pour illustrer **kwargs pour un nombre variable d'arguments de mots-clés avec un argument supplémentaire. Tout de même, mais un changement est que nous passons un argument non-mot-clé qui est acceptable par un argument de position (arg1 dans myFun). et les arguments de mots-clés que nous transmettons sont acceptables par **kwargs. simple non ?
Python def myFun(arg1, **kwargs): for key, value in kwargs.items(): print('%s == %s' % (key, value)) # Driver code myFun('Hi', first='Geeks', mid='for', last='Geeks')>
Sortir:
first == Geeks mid == for last == Geeks>
Utiliser à la fois *args et **kwargs en Python pour appeler une fonction
Exemple 1:
Ici, nous passons *args et **kwargs comme argument dans la fonction myFun. Passer *args à myFun signifie simplement que nous transmettons les arguments de position et de longueur variable contenus dans args. ainsi, les Geeks passent au arg1 , pour passer au arg2, et les Geeks passent au arg3. Lorsque nous passons **kwargs comme argument à myFun, cela signifie qu'il accepte les arguments de mots-clés. Ici, arg1 est la clé et la valeur est Geeks qui est transmise à arg1, et juste comme ça pour et Geeks passent respectivement à arg2 et arg3. Après avoir transmis toutes les données, nous imprimons toutes les données en lignes.
python def myFun(arg1, arg2, arg3): print('arg1:', arg1) print('arg2:', arg2) print('arg3:', arg3) # Now we can use *args or **kwargs to # pass arguments to this function : args = ('Geeks', 'for', 'Geeks') myFun(*args) kwargs = {'arg1': 'Geeks', 'arg2': 'for', 'arg3': 'Geeks'} myFun(**kwargs)>
Sortir:
arg1: Geeks arg2: for arg3: Geeks arg1: Geeks arg2: for arg3: Geeks>
Exemple 2 :
Ici, nous passons *args et **kwargs comme argument dans la fonction myFun. où 'geeks', 'pour', 'geeks' est passé en tant que *args, et premier = Geeks, milieu = pour, dernier = Geeks est passé comme **kwargs et impression dans la même ligne.
python def myFun(*args, **kwargs): print('args: ', args) print('kwargs: ', kwargs) # Now we can use both *args ,**kwargs # to pass arguments to this function : myFun('geeks', 'for', 'geeks', first='Geeks', mid='for', last='Geeks')>
Sortir:
args: ('geeks', 'for', 'geeks') kwargs: {'first': 'Geeks', 'mid': 'for', 'last': 'Geeks'}>
Utiliser *args et **kwargs en Python pour définir les valeurs de l'objet
- *args reçoit les arguments sous forme de tuple .
- **kwargs reçoit des arguments sous forme de dictionnaire .
Exemple 1 : utiliser Python *args
Python # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, *args): # access args index like array does self.speed = args[0] self.color = args[1] # creating objects of car class audi = Car(200, 'red') bmw = Car(250, 'black') mb = Car(190, 'white') # printing the color and speed of the cars print(audi.color) print(bmw.speed)>
Sortir:
red 250>
Exemple 2 : utiliser Python **kwargs
Python # defining car class class Car(): # args receives unlimited no. of arguments as an array def __init__(self, **kwargs): # access args index like array does self.speed = kwargs['s'] self.color = kwargs['c'] # creating objects of car class audi = Car(s=200, c='red') bmw = Car(s=250, c='black') mb = Car(s=190, c='white') # printing the color and speed of cars print(audi.color) print(bmw.speed)>
Sortir:
red 250>