f(a, b, option1=10, option2=20)
À propos de la chose de base que vous souhaitez spécifier l'argument avec un mot-clé comme. L'option n'est pas spécifiée à chaque fois et je souhaite que la valeur par défaut soit utilisée si elle n'est pas spécifiée.
f(a, b) # option1,option2 ne doit pas être spécifiée
**kwargs
Quand je recherche, je trouve souvent quelque chose qui s'appelle «** kwargs».
def f(a, b, **kwargs):
option1 = kwargs.get('option1', 1)
option2 = kwargs.get('option2', 2)
kwargs
est un dictionnaire contenant des noms et des valeurs de mots-clés, et la valeur par défaut est spécifiée par la méthode get
.
Cependant, «** kwargs» est «n'importe quoi», donc si vous l'orthographiez par inadvertance, une valeur par défaut involontaire sera utilisée.
f(a, b, opton1=10) #Option1 par défaut à 1 en raison d'une faute d'orthographe
En premier lieu, Python appelle les arguments par leur nom, vous ne devriez donc pas utiliser ** kwargs
si vous connaissez les mots-clés.
def f(a, b, option1=1, option2=2):
pass
f(a, b, option1=10, option2=20)
f(a, b, opton1=10) #Il n'y a pas de mot clé pour l'erreur opton1
Cependant, ʻoption1` est aussi un argument fixe, donc si vous faites une erreur par inadvertance dans le nombre d'arguments, vous écraserez l'option.
f(a, b, c) #Mauvais nombre d'arguments, option non intentionnelle1=c
*
Argument (Python3)En Python3, en insérant «*», les variables suivantes ne peuvent être appelées que par des mots-clés.
def f(a, b, *, option1=1, option2=2):
pass
f(a, b, option1=10, option2=20)
f(a, b, c) #Deux variables fixes d'erreur
f(a, b, opton1=10) #Mot-clé qui n'existe pas
C'est pourquoi Python3 le recommande.
http://stackoverflow.com/questions/1419046/python-normal-arguments-vs-keyword-arguments
Recommended Posts