要約すると、次のようになります。
リンクした関数module_level_function
の冒頭にあるドキュメントを見ると、次のことがわかります。
def module_level_function(param1, param2=None, *args, **kwargs):
"""This is an example of a module level function.
Function parameters should be documented in the ``Args`` section. The name
of each parameter is required. The type and description of each parameter
is optional, but should be included if not obvious.
Parameter types -- if given -- should be specified according to
`PEP 484`_, though `PEP 484`_ conformance isn't required or enforced.
# ^^^^^ this! ^^^^
最後の行にはヒントが含まれています。どうやら、モジュールPEP 484
によって支援されて導入された表記法typing
は、あなたが見ているものです。
記譜法の簡単な紹介:
PEP 484
で説明されている関数注釈に基づいていますPEP 3107
。基本的に、各関数パラメーターは、その名前の後にオプションの型指定子を持つことができます。したがって、次のような関数の場合:
def foo(a, b):
pass
次の方法で型に注釈を付けることができます。
def foo(a: int, b: str) -> None:
pass
型ヒンティングの導入により、型が示される方法を形式化する必要が生じました。ここでtyping
モジュールの出番です。
このtyping
モジュールには、 などの標準の組み込み以外の追加の型を指定するための、優れた抽象型のセット (および、一般に、型理論のマンボジャンボ) が含まれていint
ますstr
。たとえば、このOptional[str]
表記は、パラメーターがstr
型または「型」のいずれかを取ることができることを示しNone
ます。つまり、オプションで文字列です。
一言で言えば、パラメータの型を文書化するための型ヒントの導入で定義された表記法を使用しています。これは、整数のリストである引数を取る関数がある場合、次のことを意味します。
def func(param1)
ドキュメントは次のようになります。
param1 (List[int]): The first parameter containing a list of ints
は、 typingList[int]
モジュールの表記から来ています。
いくつかの例:
この特定の表記法が定義され、さらに説明されているいくつかの例は、 (に影響を与えた静的チェッカー) のドキュメントでmypy
PEP 484
見つけることができます。コードで文書化する必要がある一般的なケースは、組み込み型の表に含まれています。
Type Description
---- -----------
int integer of arbitrary size
float floating point number
bool boolean value
str unicode string
bytes 8-bit string
object an arbitrary object (object is the common base class)
List[str] list of str objects
Dict[str, int] dictionary from str keys to int values
Iterable[int] iterable object containing ints
Sequence[bool] sequence of booleans
Any dynamically typed value with an arbitrary type
その他Any, Union
はここで定義されていますが、一般的な表記法はここで説明されています。