Dans ce tutoriel, je vais me concentrer sur les arguments (* args
) et des arguments de mots clés (* kwargs
) en Python.
Je vais vous apprendre ce que sont les arguments et les kwargs et, plus important encore, comment les utiliser. C'est comment intégrer un nombre illimité d'arguments et d'arguments de mots clés dans des fonctions..
* args
sont utilisés pour passer mot-clé arguments. Exemples de non-mot-cléles arguments sont fun (3,4), fun ("foo", "bar")
.
* args
sont généralement utilisés comme mesure pour empêcher le programme de planter si nous ne savons pas combien d'arguments seront passés à la fonction. Ceci est utilisé en C ++ ainsi que dans d'autres langages de programmation.
** kwargs
est un dictionnaire d'arguments de mots clés. le **
nous permet de passer n'importe quel nombre d'arguments de mots clés. Un argument de mot clé est fondamentalement un dictionnaire.
Un exemple de mot clél'argument est amusant (foo = 2, bar = 7)
.
** kwargs
sont comme * args
sauf que vous déclarez les variables et le montant dans la fonction arguments.
Les args et les kwargs sont utiles lorsque vous voulez:
Regardons comment kwargs et args sont utilisés dans des fonctions.
La fonction ci-dessous prend trois arguments. Les trois arguments ont été explicitement définis, donc plus ou moins provoquera une erreur dans le programme.
def add (a, b, c): print (a + b + c) print add (2,3,4)
Lançons la fonction. La fonction ajoutera les trois nombres, donnant le résultat suivant:
Sortie 9
Et si nous passions quatre arguments dans la fonction au lieu des trois requis? Nous allons recevoir une erreur comme indiqué ci-dessous.
En effet, seuls trois paramètres ont été définis dans la fonction, mais nous avons passé quatre arguments de position lors de l'appel de la fonction..
def add (a, b, c): print (a + b + c) print add (2,3,4,5)
TypeError en sortie: add () prend 3 arguments de position mais 4 ont été donnés
Dans le deuxième exemple ci-dessous, le *
est pour mot-clé arguments et est passé dans la fonction. Au lieu d'avoir des arguments définis, nous remplaçons une
, b
et c
avec un seul paramètre (* args
).
Remarquez comment l'utilisation de * args
il est facile d'utiliser n'importe quel nombre d'arguments sans avoir à changer votre code. * args
fournissez plus de flexibilité à votre code car vous pouvez avoir autant d'arguments que vous le souhaitez à l'avenir.
def add (* args): total = 0 pour arg dans args: total + = arg affiche le total
Scénario 1 print add (1,2,5) Output 8
Scénario 2 print add (1,2,5,6) output 14
Scénario 3 ajouter add (1,2,5,8) Sortie 16
Créez une fonction simple comme indiqué:
def func (* args): # * args signifie quel que soit le nombre d'arguments pris, il les intercepte tous pour arg dans les arguments: print arg
Testez la fonction en utilisant une combinaison d'entiers et de chaînes:
def func (* args): # * args signifie quel que soit le nombre d'arguments que vous prenez, il les intercepte tous pour arg en arguments: print arg print func (11,3,4,5, "tuts")
Sortie 11 3 4 5 tuts
Et si on passait une liste comme argument? Testez la fonction avec une liste en remplaçant les arguments précédents par une liste, l = [11,3,4,5, "tuts"
.
def func (* args): # * args signifie quel que soit le nombre d'arguments que vous prenez, il les intercepte tous pour arg dans les arguments: print arg l = [11,3,4,5, "tuts"] print func (l )
Ceci imprime la liste dans son ensemble, car il interprète la liste comme un élément. Sortie [11,3,4,5, "tuts]
À partir de l'exemple ci-dessus, vous pouvez également utiliser * args
pour décompresser les arguments qui sont déjà dans une liste ou un tuple afin que tous les éléments de la liste soient passés en tant que paramètres différents.
En utilisant la même fonction:
def func (* args): # * args signifie quel que soit le nombre d'arguments que vous prenez, il les intercepte tous pour arg dans les arguments: print (arg) l = [11,3,4,5, "tuts"] print ( func (* l))
Le * décompactera la liste et affichera chaque élément de la liste. Sortie 11 3 4 5 tuts
Kwargs vous permettent de passer des arguments de mots clés à une fonction. Ils sont utilisés lorsque vous n'êtes pas sûr du nombre d'arguments de mots clés qui seront passés dans la fonction..
Écrire une fonction mon_fonc
et passer dans (x = 10, y = 20)
comme mot clé arguments comme ci-dessous:
def my_func (x = 10, y = 20): affiche x, y
Ceci affiche les valeurs de x et y. Sortie 10,20
Kwargs peut être utilisé pour décompresser des clés de dictionnaire, des paires de valeurs. Ceci est fait en utilisant la notation double astérisque (**
). Il est important de noter que chaque clé doit être associée à une valeur.
Voici un exemple typique de la façon dont c'est fait. La fonction ci-dessous prend les pays comme clés et leurs capitales comme valeurs. Il imprime ensuite une déclaration qui itère sur les kwargs et mappe chaque mot clé à la valeur qui lui est attribuée..
def capital_cities (** kwargs): # initialise une liste vide pour stocker le résultat result = [] pour la clé, la valeur dans kwargs.items (): result.append ("La capitale de est .format (clé , valeur) retourne le résultat
Vous pouvez appeler la fonction avec les arguments de votre choix.
def capital_cities (** kwargs): # initialise une liste vide pour stocker le résultat result = [] pour la clé, la valeur dans kwargs.items (): result.append ("La capitale de est .format (clé , valeur) retourne le résultat print capital_city (China = "Beijing", Cairo = "Egypt", Rome = "Italy"))
sortie ['La capitale de la Chine est Beijing', 'La capitale du Caire est l'Egypte', 'La capitale de Rome est l'Italie']
Pour un exemple plus complexe, supposons que nous ayons un modèle pour un client qui ressemble à ceci:
classe Customer (models.Model): prenom = models.CharField (max_length = 100, null = True) last_name = models.CharField (max_length = 100) username = models.Charfield (max_length = 100) email = models.EmailField (max_length = 100) password = models.CharField (max_length = 100)
Vous pouvez utiliser kwargs pour effectuer à la fois des entrées de données et des requêtes de données à partir d'objets de modèle. Ecrivons une vue de fonction pour créer un nouveau client.
kwargs = "first_name": "John", "last_name": "Doe", "nom d'utilisateur": "johndoe", "email" [email protected] "," mot de passe ":" 1234 " new_user = User (* * kwargs) new_user.save ()
Voici comment effectuer une requête sur le client que nous venons de créer avec kwargs.
filter_customer = 'email': [email protected], 'nom d'utilisateur': johndoe, Customer.objects.filter (** filter_customer)
Lors de l'utilisation des arguments arg et kwargs dans la même définition de fonction, * args
doit se produire avant ** kwargs
.
class MyFunction (Foo): def __init __ (self, * args, ** kwargs): affiche 'ma fonction' super (MyFunction, self) .__ init __ (* args, ** kwargs)
Exemple:
def Func (* args, ** kwargs): pour arg dans args: print arg pour item dans kwargs.items (): print item
Rappelles toi args
devrait venir avant Kwargs
.
def Func (* args, ** kwargs): pour arg dans args: print arg pour item dans kwargs.items (): print item print Func (1, x = 7, u = 8)
Sortie 1 ('x', 7) ('u', 8)
J'espère que ce tutoriel vous a aidé à comprendre les arguments et les kwargs.
Vous trouverez ci-dessous quelques indications à prendre en compte lors de l’utilisation d’args et de kwargs:
* args
et ** kwargs
syntaxe spéciale utilisée dans les fonctions pour transmettre un nombre variable d'arguments à une fonction.* args
se produire avant ** kwargs
dans une définition de fonction.* args
et ** kwargs
sont mieux utilisés dans des situations où le nombre d'entrées restera relativement petit.args
et Kwargs
ne sont que par convention et non une exigence. Par exemple, vous pouvez utiliser * foo
au lieu de * args
ou ** foo
au lieu de ** kwargs
.La documentation officielle de Python offre de nombreuses informations à approfondir. De plus, n'hésitez pas à voir ce que nous avons disponible à la vente et à étudier sur le marché, et n'hésitez pas à poser des questions et à fournir vos précieux commentaires en utilisant le flux ci-dessous.