683 votes

Ajout de la valeur de paramètre par défaut avec l'indicateur de type en Python

Si j'ai une fonction comme ceci:

def foo(name, opts={}):
  pass

Et je veux ajouter un type de conseils pour les paramètres, comment dois-je faire? La façon dont j'ai supposé me donne une erreur de syntaxe:

def foo(name: str, opts={}: dict) -> str:
  pass

Les éléments suivants ne jette pas une erreur de syntaxe, mais il ne semble pas que cette façon intuitive pour gérer ce cas:

def foo(name: str, opts: dict={}) -> str:
  pass

Je ne peux pas trouver quelque chose dans l' typing de la documentation ou sur une recherche Google.

Edit: je ne savais pas comment les arguments par défaut travaillé en Python, mais pour les besoins de cette question, je vais garder les exemples ci-dessus. En général, il est beaucoup mieux de faire ce qui suit:

def foo(name: str, opts: dict=None) -> str:
  if not opts:
    opts={}
  pass

720voto

Votre deuxième voie est correct.

def foo(opts: dict = {}):
    pass

print(foo.__annotations__)

ce sorties

{'opts': <class 'dict'>}

C'est vrai que c'est pas répertorié dans la PPE 484, mais le type de conseils sont d'une application de fonction des annotations, qui sont documentées dans le PEP 3107. La syntaxe de l'article indique clairement que le mot-clé arguments fonctionne avec la fonction annotations de cette façon.

Je déconseille fortement d'utiliser mot-clé mutable arguments. Plus d'informations ici.

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