La signification de / et * est autorisée dans les paramètres de fonction après python3.8

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.
 

Je suppose que tu aimes

Origine blog.csdn.net/zilan23/article/details/109963021
conseillé
Classement