1. ホーム
  2. python

コロン[重複]付きファンクションパラメータ

2023-09-09 06:09:50

質問

この機能に出会いました。

def splitComma(line: str):
    splits = Utils.COMMA_DELIMITER.split(line)
    return "{}, {}".format(splits[1], splits[2])

のように、パラメータを , で区切ったり、パラメータの中に値を設定できることは承知しています。 a=39 のようにコロンで区切っているのを見たことがありません。 line:str . ネットで関数の定義を調べてみましたが、このようなものは見つかりませんでした。このコロンは何を意味するのでしょうか?

どのように解決するのですか?

関数のアノテーションです。関数の引数や戻り値には、任意のPython式でタグ付けすることができます。Python自身はアノテーションを(保存する以外)無視しますが、サードパーティのツールはそれらを利用することができます。

この場合、型ヒントとして意図されているのは、次のようなプログラムです。 mypy のようなプログラムは、コードを静的に (つまり、実行せずにソースコードそのものだけを見て) 分析して str への引数として渡されるのは splitComma .

関数の戻り値の型も指定するための、より充実したアノテーションです。

def splitComma(line: str) -> str:
    ...

(元々、関数アノテーションは特定のセマンティクスを持つことは想定されていないことに注意してください。これは今でもそうですが、圧倒的な 仮定 アノテーションが型ヒントを提供することです)。