型ヒントを使用するときに関数にデフォルトパラメータを追加するにはどうすればいいですか? 質問する

型ヒントを使用するときに関数にデフォルトパラメータを追加するにはどうすればいいですか? 質問する

次のような関数があるとします。

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

パラメータに型ヒントを追加したいのですが、どうすればよいですか? 私が想定した方法では構文エラーが発生します:

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

以下は構文エラーをスローしませんが、このケースを処理する直感的な方法ではないようです。

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

何も見つからないtypingドキュメンテーションまたは Google 検索で。

編集: Python でデフォルト引数がどのように機能するかは知りませんでしたが、この質問のために上記の例を残しておきます。一般的には、次のようにする方がはるかに良いでしょう。

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

ベストアンサー1

2番目の方法が正しいです。

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

print(foo.__annotations__)

これは出力します

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

それはリストに載っていないのは事実ですペップ484ただし、型ヒントは関数アノテーションの応用であり、PEP 3107 で文書化されています。構文セクションキーワード引数が関数アノテーションでこのように機能することを明確にします。

可変キーワード引数の使用は強くお勧めしません。詳細情報ここ

おすすめ記事