🙄

Pythonでの型付けのやり方

2023/04/17に公開

Pythonの型付けについて

Pythonは動的型付け言語ですが、型ヒント(type hinting)を使用することで、コードの可読性やエラーの予防に役立ちます。Pythonの型ヒントは、Python 3.5で導入された「PEP 484」という機能で、Pythonの標準ライブラリであるtypingを使って型情報を付与することができます。

型ヒントの基本

型ヒントを使用するには、関数の引数や戻り値に対して型情報を記述します。例えば、以下のように型ヒントを追加することができます。

def greet(name: str) -> str:
    return "Hello, " + name

この例では、nameの型がstr(文字列)であり、関数の戻り値もstrであることを示しています。

型ヒントの利点

型ヒントを使用する利点は以下の通りです。

  1. コードの可読性向上: 型ヒントを使用すると、関数の引数や戻り値の型が明示的になり、他の開発者がコードを理解しやすくなります。
  2. エラー予防: 型ヒントを使うことで、エディタや静的型チェッカー(例:mypy)が型の不整合を検出し、実行前にエラーを見つけることができます。

主要な型ヒント

typingモジュールには、多くの型ヒントが用意されています。以下によく使われる型ヒントをいくつか紹介します。

型ヒント 説明
Any 任意の型を許容する
Union[T1, T2] T1またはT2のいずれかの型を許容する
Optional[T] TまたはNoneのいずれかの型を許容する(Union[T, None]と同義)
List[T] T型の要素を持つリストを表す
Tuple[T1, T2] T1型の要素とT2型の要素を持つタプルを表す
Dict[K, V] K型のキーとV型の値を持つ辞書を表す
Callable[[T1, T2], R] T1型の引数とT2型の引数を受け取り、R型の戻り値を返す関数を表す

例: 型ヒントを使った関数定義

続きます。以下に、いくつかの型ヒントを使った関数定義の例を示します。

from typing import List, Tuple, Dict, Optional, Callable

# Listの型ヒントを使った関数
def sum_numbers(numbers: List[int]) -> int:
    return sum(numbers)

# Tupleの型ヒントを使った関数
def get_name_and_age() -> Tuple[str, int]:
    return ("Alice", 25)

# Dictの型ヒントを使った関数
def get_student_scores() -> Dict[str, float]:
    return {"Alice": 90.5, "Bob": 85.0}

# Optionalの型ヒントを使った関数
def find_student(name: str) -> Optional[Dict[str, str]]:
    students = [{"name": "Alice", "age": "25"}, {"name": "Bob", "age": "30"}]
    for student in students:
        if student["name"] == name:
            return student
    return None

# Callableの型ヒントを使った関数
def apply_function(func: Callable[[int], int], value: int) -> int:
    return func(value)

これらの例では、関数の引数や戻り値に対して、リスト、タプル、辞書、オプショナル、コールアブルなどの型ヒントを使用しています。これにより、コードの可読性が向上し、開発者が関数の使用方法を理解しやすくなります。

また、型ヒントを使用することで、静的型チェッカー(例:mypy)が型の不整合を検出し、実行前にエラーを見つけることができます。

Discussion