Không. Runtime của Python bỏ qua annotation: def f(n: int) vẫn nhận "abc" và chạy bình thường, không có lỗi nào được ném ra.
Type hint phục vụ công cụ phân tích tĩnh (mypy, pyright, IDE) và thư viện đọc metadata (pydantic, FastAPI, dataclasses, SQLAlchemy 2.0) — muốn kiểm tra thì phải chạy checker trong CI.
def f(n: int) -> int:
return n * 2
f("abc") # runs fine, returns "abcabc"Optional[str] = str | None (từ 3.10 nên viết str | None).
Nó nói về giá trị có thể là None, hoàn toàn không liên quan tới "tham số có thể bỏ qua".
def find(uid: int) -> str | None: ... # may return None
def greet(name: str = "guest") -> str: ... # optional arg, NOT Optional
def save(path: str | None = None) -> None: ... # both: optional and nullableHai nhầm lẫn hay bị hỏi vặn:
- Tham số có default không tự động trở thành Optional.
- Muốn validate thật lúc chạy thì cần pydantic hoặc tự kiểm tra; annotation một mình không đủ.
Annotation vẫn truy cập được lúc chạy qua typing.get_type_hints() — đó là cách FastAPI và pydantic dựng schema.