関数に付与されている"->"は何?アノテーションについて解説

アノテーションとは?

pythonのコードを見ていると、関数定義の箇所に"->"という記載があります。
例えば、こんな感じです。

def say_hello(name: str) -> None:
    print(f"Hello, {name}!")

result = say_hello("Alice")
print(result)  # None


これは、「アノテーション」と言って、変数や関数の引数、戻り値に型情報を付けることで、コードの可読性や保守性を向上させるための機能です。
通常は、型名を記述する必要はありませんが、自分のコードを他人に見せたり、他人のコードを読む際に、コメントがあった方が親切だよね、という意味を込めて使われます。

色々と例を見ていこうと思います。

1. 変数のアノテーション:

name: str = "John"
age: int = 25
height: float = 175.5

上記の例では、name 変数に str 型、age 変数に int 型、height 変数に float 型というアノテーションを付けています。

2. 関数の引数と戻り値のアノテーション:

def add_numbers(x: int, y: int) -> int:
    return x + y

上記の例では、add_numbers 関数の引数 x と y に int 型のアノテーションを付け、戻り値の型を int 型として指定しています。

3. クラスのメソッドのアノテーション:

class Person:
    def __init__(self, name: str, age: int):
        self.name = name
        self.age = age
    
    def greet(self) -> str:
        return f"Hello, my name is {self.name}!"

上記の例では、Person クラスの init メソッドの引数 name と age に str 型と int 型のアノテーションを付け、greet メソッドの戻り値の型を str 型として指定しています。

ここで1点注意ですが、アノテーションは処理の内容に影響しません。そのため、エラー回避などにはならないことには注意してください。

まとめ

Pythonアノテーションは、変数や関数の引数、戻り値に型情報を付けることで、コードの可読性や保守性を向上させるための機能です。ぜひ使ってみてください。