関数の引数、戻り値の説明を記述する
def f1(x: 'xの説明', y: 'yの説明') -> '戻り値の説明':
return x + y
print(f1(1, 2)) # 3
説明に型を設定する
:や->のあとに型を書くこともできる。しかし、以下のように型チェックが型チェックが行われることはないため、以下のようになる。関数自体では、annotationの方と異なる場合も、引数として正しく受け取れる。(ただし、関数内の処理によっては当然エラーになることもある)
def f2(x:int, y: int) -> int:
return x + y
print(f2(1, 2)) # 3
print(f2("hello", ", world")) # hello, world
print(f2("test", 0)) # TypeError: can only concatenate str (not "int") to str
関数のアノテーションを取り出す
__annotations__属性に辞書型で格納されている。
def f1(x: 'xの説明', y: 'yの説明') -> '戻り値の説明':
return x + y
def f2(x:int, y: int) -> int:
return x + y
print(f1.__annotations__) # {'x': 'xの説明', 'y': 'yの説明', 'return': '戻り値の説明'}
print(f2.__annotations__) # {'x': <class 'int'>, 'y': <class 'int'>, 'return': <class 'int'>}