Autour du codeDevelopper toujours mieux
Posté le

Les definitions de fonctions, forcer les mots clefs

Les fonctions permettent de faire passer les arguments de plusieurs façons. De manière très classique, les un après les autres.

def foo(a, b):
    print(a, b)

foo(5, 6) # 5 6

On appelle cela des arguments de position.

L'autre façon est de nommer les arguments ce qui permet de les passer dans l'ordre que l'on veut.

foo(b=6, a=5)

On peut également mélanger les deux, mais les arguments de positions doivent être en premier.

foo(5, b=6)

Mais on peut également forcer l'utilisateur à utiliser uniquement des arguments mots clef comme ceci:

def foo(*, a, b):
    print(a, b)

foo(a=4, b=6) # OK
foo(4, 6) # TypeError: foo() takes 0 positional arguments but 2 were given*

En fait, tous les arguments à gauche de l'étoile doivent être passés explicitement.

def foo(a, *, b):
    pass

foo(5) # TypeError: foo() missing 1 required keyword-only argument: 'b'
foo(5, b=6) # OK

@ vos IDE et bon code wink