Bonjour,
Je tapotais tranquillement la console Python 3.5 quand j'ai fait ceci:
Intrigué j'ai refait:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>> def foo(kwarg1="GA", kwarg2="BU", kwarg3="BAZ"): ... pass >>> print(foo.__kwdefaults__) None
Sur le coup je n'ai pas compris: pourquoi dans le premier bout de code, l'appel de __kwdefaults__ renvoi None alors que la fonction a bien des keyword arguments ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 >>> def foo(arg1, arg2, arg3, *args, kwarg1="FOO", kwarg2="BAR", kwarg3="BAZ"): ... pass ... >>> print(foo.__kwdefaults__) {'kwarg1': 'FOO', 'kwarg3': 'BAZ', 'kwarg2': 'BAR'}
Alors j'ai regardé la doc : __kwdefaults__ doit renvoyer les keywords arguments de la fonction, un point c'est tout.
Pourquoi cela n'est t-il pas le cas lorsque la fonction ne possède pas d'arguments sans valeurs par défaut ?
Je n'ai pas la compétence d'aller fouiller les sources de Python mais quelqu’un pourrait t-il m'expliquer ?
Accessoirement comment pourrais-je faire pour être sur de récupérer tous les arguments de ma fonction dans ce cas ?
Je vous souhaites une bonne journée.
Partager