Après python3.8, / et * sont autorisés dans les paramètres de fonction. / Est utilisé pour indiquer que certains paramètres de fonction doivent utiliser des paramètres de position au lieu de paramètres de mot-clé. La première signification de * apparaît dans les paramètres de fonction peut être exprimée comme les paramètres de variable sont généralement écrits comme * args; pour les * paramètres qui apparaissent seuls dans les paramètres, cela signifie que les paramètres après le * doivent être sous la forme de paramètres de mots-clés. Ensuite, nous expliquerons l'utilisation en détail:
1 / Utilisation des paramètres
Si vous souhaitez que l'appelant de la fonction n'utilise que des paramètres de position à une certaine position de paramètre et n'utilise pas de paramètres de mot-clé pour transmettre des paramètres, il vous suffit de mettre un / après la position souhaitée.
def f1(a, b, /):
return a + b
Pour la fonction ci-dessus, lors de l'appel de f1, les paramètres a et b ne peuvent être que des valeurs spécifiques et ne peuvent pas être passés par mots-clés, c'est-à-dire que f1 (2, 3) est exécuté correctement et f1 (a = 2, 3) et f1 (2, b = 3) Une erreur sera exécutée.
2 * Utilisation des paramètres
La première utilisation de * est plus courante, donc je n'entrerai pas dans les détails ici, et j'expliquerai principalement la deuxième utilisation de * en détail ici. Si vous voulez forcer l'appelant à utiliser certains paramètres et que vous devez les transmettre sous forme de paramètres de mots-clés, il vous suffit de placer un * à la position avant la position souhaitée.
def f1(a, *, b, c):
return a + b + c
Pour la fonction ci-dessus, le paramètre a peut être n'importe quelle valeur lors de l'appel, mais les paramètres b et c doivent être passés en tant que paramètres de mot-clé, tels que f1 (1, b = 4, c = 5), sinon une erreur sera signalée.
def f2(a, *, b, c=5):
return a + b + c
Si la fonction est appelée dans ce cas, le paramètre a peut être n'importe quelle valeur, mais le paramètre b doit être passé comme paramètre de mot-clé, tel que f2 (2, b = 3), mais si vous souhaitez passer le paramètre c , puis le paramètre c Les exigences des paramètres et b se présentent sous la forme de paramètres de mots clés, tels que f2 (2, b = 3, c = 4).
3 / et * apparaissent tous les deux dans les paramètres de fonction
Par exemple, nous définissons une fonction f
def f(a, b, /, c, *, d, e):
print(a, b, c, d, e)
Lorsque nous appelons la fonction f, les paramètres a et b peuvent être les valeurs supportées par n'importe quel type de python, c'est-à-dire que les paramètres ne peuvent pas être passés sous forme de mots-clés; c peut être les valeurs supportées par n'importe quel type de python, et d, e ne peuvent être paramétrés que par des mots-clés Passer la référence. Les méthodes d'appel suivantes lèveront toutes des exceptions
f(a=1, 2, c=3, d=4, e=5) # a不能以关键字参数传参
f(1, 2, 3, 4, e=5) # d只能以关键字参数传参
4 résumé
Si vous voulez que l'appelant utilise la fonction pour ne pas utiliser de paramètres de mot-clé pour passer des paramètres, il vous suffit de placer ces paramètres devant /; si vous voulez que l'appelant utilise la fonction, certains paramètres doivent être utilisés, et ils doivent be keywords Les paramètres sont passés, il vous suffit de les mettre après *.
Auteur: Yang Hangfeng
lien: https: //www.zhihu.com/question/287097169/answer/453193254
Source: savoir presque sous
copyright par l'auteur. Pour les réimpressions commerciales, veuillez contacter l'auteur pour l'autorisation. Pour les réimpressions non commerciales, veuillez indiquer la source.