Wenn ich eine Funktion wie diese:Hinzufügen von Standardparameterwert mit Typ-Hinweis in Python
def foo(name, opts={}):
pass
Und ich mag Typen Hinweise auf die Parameter hinzuzufügen, wie kann ich es tun? Die Art, wie ich angenommen gibt mir einen Syntaxfehler:
def foo(name: str, opts={}: dict) -> str:
pass
Den folgenden keine Syntaxfehler werfen, aber es scheint nicht, wie die intuitive Art und Weise, diesen Fall zu behandeln:
def foo(name: str, opts: dict={}) -> str:
pass
ich kann Finde nichts in der typing
documentation oder in einer Google-Suche.
Edit: Ich wusste nicht, wie Standardargumente in Python funktionierte, aber um dieser Frage willen werde ich die obigen Beispiele behalten. Im Allgemeinen ist es viel besser, Folgendes zu tun:
def foo(name: str, opts: dict=None) -> str:
if not opts:
opts={}
pass
Die letzte Funktion ist der richtige Weg. Es ist die selbe Art, wie es die "skalare" Sprache auch macht. –
Sie haben einen veränderlichen Standard-Typ - das wird zu Problemen führen –
siehe meine Update-Antwort, @josh –