はじめに
LangChainとLangGraphによるRAG・AIエージェント[実践]入門
を読んでいて、10章で躓いたので、初心に戻って、一つずつ紐解いて学習することにしました。
今回のテーマは「typing」モジュール
前回までの投稿
サンプルコード
sample.py
from typing import Annotated, Any, Optional
# Annotatedの使用例
def greet(name: Annotated[str, "ユーザーの名前"]) -> str:
return f"こんにちは、{name}さん!"
# Anyの使用例
def print_anything(item: Any) -> None:
print(f"入力された値: {item}")
# Optionalの使用例
def divide(a: float, b: Optional[float] = None) -> float:
if b is None:
return a
return a / b
# 関数の使用
print(greet("太郎"))
print_anything(42)
print_anything("Hello")
print(divide(10, 2))
print(divide(5))
解説
typingモジュールからAnnotated, Any, Optionalをインポート。
-
Annotated
型ヒントに追加の情報を付加するために使用する。
例では、greet関数の引数nameに"ユーザーの名前"という注釈を追加している。 -
Any
どのような型でも受け入れることを示す。
print_anything関数は、任意の型の引数を受け取り、その値を出力する。 -
Optional
引数が省略可能であることを示す。
divide関数では、第二引数bがOptional[float]型で、デフォルト値がNoneに設定されている。
これらの型ヒントを使用することで、コードの可読性が向上し、静的型チェッカーやIDEがより正確な型情報を提供できるようになる。
独り言
正直、個人開発が多かったので、Annotatedとか使う機会がなかったんですよね。
多分、pythonの文法書とかで読んだ記憶はあると思うけど、使用する機会がないから記憶に残っていなかったと。
これを機会に使ってみて、便利さを実感できたら積極的に使うようにしよ。