11 votes

Est-ce qu'un paramètre par défaut écrase les indications de type pour mypy ?

Le code suivant est rejeté par mypy comme prévu :

def foo(value: int) -> None:
    print(value, type(value))
foo(None)

sortie :

error: Argument 1 to "foo" has incompatible type "None"; expected "int"

Mais après avoir introduit un paramètre par défaut de None il n'y a plus d'erreur :

def foo(value: int=None) -> None:
    print(value, type(value))
foo(None)

Je m'attendrais mypy pour n'autoriser que None (en tant qu'argument et par défaut) si nous modifions value de int a Optional[int] mais il semble que cela ne soit pas nécessaire. Pourquoi ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X