Écrire des fonctions qui n’acceptent que des arguments de mots-clés en Python

Vous voulez qu’une fonction n’accepte que certains arguments mot-clé. Cette fonctionnalité est facile à implémenter si vous placez les arguments mot-clé après un argument * ou un seul paramètre sans nom *. Par exemple:

def recv(taillemax, *, bloc):
    'Recevoir un message'
    pass

recv(1024, True)        # TypeError
recv(1024, bloc=True)   # Correct

Cette technique peut également être utilisée pour spécifier des arguments de mots-clés pour des fonctions qui acceptent un nombre variable d’arguments positionnels. Par exemple:

def mininum(*valeurs, clip=None):
    m = min(valeurs)
    if clip is not None:
        m = clip if clip > m else m
    return m

minimum(1, 5, 2, -5, 10)          # Retourne -5
minimum(1, 5, 2, -5, 10, clip=0)  # Retourne 0

Les arguments uniquement de mots-clés sont souvent un bon moyen de renforcer la clarté du code lors de la spécification d’arguments de fonction optionnels. Par exemple, considérez un appel comme celui-ci:

msg = recv(1024, False)

Si quelqu’un n’est pas intimement familier avec le fonctionnement de la fonction recv(), il se peut qu’il n’ait aucune idée de ce que signifie l’argument False. D’un autre côté, il est beaucoup plus clair si l’appel est écrit comme ceci:

msg = recv(1024, bloc=False)

L’utilisation d’arguments uniquement par mots-clés est aussi souvent préférable aux astuces impliquant **kwargs, puisqu’ils apparaissent correctement lorsque l’utilisateur demande de l’aide:

>>> help(recv)
Help on function recv in module __main__:

recv(taillemax, *, bloc)
    Recevoir un message

Les arguments uniquement par mots-clés sont également utiles dans des contextes plus avancés. Par exemple, ils peuvent être utilisés pour injecter des arguments dans des fonctions qui utilisent la convention *args et **kwargs pour accepter toutes les entrées.

LAISSER UN COMMENTAIRE

Please enter your comment!
Please enter your name here