Pythonの関数で引数の型指定を行う方法
Pythonでは関数の引数に型ヒントを指定することで、コードの可読性を高め意図を明確にできます。型ヒントは引数名の後にコロン (:
) を付けて記述します。
型ヒントはあくまで「ヒント」であり、Pythonの動的型付けの性質を変えるものではないため、型が一致しない場合でも「実行時にエラーにならない」ことに注意が必要です。しかし、型ヒントを使用することで静的解析ツール(mypyなど)やIDEのサポートが向上し、バグの早期発見や開発効率の向上が期待できます。
また、型ヒントはPython 3.5以降で導入された機能であるため、古いバージョンのPythonでは利用できない点に注意してください。
【サンプルコード】
def add(a: int, b: int) -> int:
return a + b
result = add(3, 5)
print(result)
【実行結果】
8
上記のコードでは引数a
とb
が整数型 (int
) であること、戻り値も整数型であることを明示しています。-> int
の部分は戻り値の型アノテーションと呼ばれ、関数の戻り値の型を示します。
「Python」を学べるコードキャンプのサービス
引数にデフォルト値を設定し型指定を行う方法
Pythonでは引数にデフォルト値を設定でき、さらに型ヒントを追加できます。型ヒントを追加できることによって、デフォルト値を持つ引数の型が明確になります。基本的な構文は通常の引数の型指定と同じですが、デフォルト値は型ヒントの後に =
で記述する必要があります。
【サンプルコード】
def greet(name: str = "Guest") -> str:
return f"Hello, {name}!"
print(greet())
print(greet("Alice"))
【実行結果】
Hello, Guest!
Hello, Alice!
上記のコードでは、引数name
が文字列型 (str
) であることが明示されており、デフォルト値として"Guest"
が設定されています。この設定により引数が省略された場合でも、関数が文字列型の引数を期待していることが保証されます。
デフォルト値を持つ引数は型ヒントを省略することも可能ですが、型ヒントを記述することでコードの可読性と保守性が向上することを覚えておくと良いでしょう。。
Pythonで可変長引数に型指定を行う方法
複数の引数を受け取る場合、可変長引数 (*args
) やキーワード可変長引数 (**kwargs
) にも型ヒントを指定できます。可変長引数の場合はtyping
モジュールのTuple
を、キーワード可変長引数の場合はDict
を使用することが一般的です。
【サンプルコード】
from typing import Tuple, Dict
def sum_numbers(*numbers: Tuple[int, ...]) -> int:
return sum(numbers)
def describe_person(**details: Dict[str, str]) -> None:
for key, value in details.items():
print(f"{key}: {value}")
result = sum_numbers(1, 2, 3, 4)
print(result)
describe_person(name="Alice", age="30", city="New York")
【実行結果】
10
name: Alice
age: 30
city: New York
sum_numbers
関数だと*numbers
は整数のタプル (Tuple[int, ...]
) として扱われ、Tuple[int, ...]
と記述することでタプル内の要素が全て整数型であることを示します。
キーワード可変長引数のdescribe_person
関数では、**details
が文字列をキーとし、文字列を値とする辞書型(Dict[str, str]
)として扱われることを示しています。このように可変長引数に型ヒントを追加することで、関数がどのような入力を受け取るかを明確にすることが可能です。
また、*args
は任意の数の位置引数をタプルとして受け取り、**kwargs
は任意の数のキーワード引数を辞書として受け取ります。
※上記コンテンツの内容やソースコードはAIで確認・デバッグしておりますが、間違いやエラー、脆弱性などがある場合は、コメントよりご報告いただけますと幸いです。
ITやプログラミングに関するコラム
-
IT研修で使える助成金まとめ!必要性や活用するメリット・デメリットを徹底解説
-
【Python】replaceメソッドで正規表現を使う方法
-
【Python】class変数の基本とインスタンス変数との違いを解説
-
Suno AIとは?使い方や機能を徹底的に解説