Python type hintsのOptional,Union

1148 ワード

1,はじめに
type hintはpep 484に加入しており、個人的にはこのようなタイプ制約に似た(メカニズム)はpythonの簡単で簡潔な初心に反し、c#javaという強いタイプの言語に徐々にそろえるリズムにあると思います.
しかし強制的に使わないほうがいいので、個人的にはルールに従って符号化するのも少しメリットがあると思いますが、
  • 一方、入出力のタイプを定義する過程で、個人が入出力について詳細な思考を行うことを推進するため、個人の考え方もより明確になり、書く関数がふわふわしにくい.
  • 一方,コード量が大きい場合はツールを用いてバグを事前に知ることができる.
  • 最後に、docstringの役割も果たし、コミュニケーションの時、他の人も理解しやすく、長い間自分が忘れていたことをあまり振り返らないうちに、すぐに思い出すことができます.

  • 2,type hintsタイプ
    type hintsは主に関数の入出力を示すデータ型で、データ型はtypingパケット、基本型はstr list dictなどがあります.
    使用例:
    def hello(name: str) -> None:
    
        print('hello {}'.format(name))

    type hintsにはいろいろなタイプがありますが、ここでは主にUnion、Optionalと言います.pythonにも使われているからです.
  • Unionは、関数が異なる場合にstrを返す場合やlistを返す場合など、複数の可能なデータ型がある場合に使用されます.Union[list,str]
  • と書くことができます.
  • OptionalはUnionの簡略化であり、データ型の中でNoneである可能性がある場合、例えばstrである可能性もNoneである可能性もある場合、Optional[str]はUnion[str,None]**に相当する.注意**と関数にはデフォルトパラメータNoneに違いがあり、違いがあり、違いがあり、デフォルトパラメータを省略することはできません.次の例では、
      :def func(args = None):
     :def func(args:Optional[str]) -> None:
     :def func(args:Optional[str] = None) -> None:
    type hintsはカスタムタイプなど
  • もできます.