Gợi ý kiểu Python: Gõ và chú thích tĩnh
Tìm hiểu cách viết gợi ý kiểu bằng Python. Cải thiện chất lượng mã, bật tính năng tự động hoàn thành và tận dụng mypy để phân tích mã tĩnh.
Tổng quan
Python về mặt lịch sử là một ngôn ngữ được gõ động, có nghĩa là trình thông dịch suy ra các loại biến trong thời gian chạy, mang lại cho các nhà phát triển tốc độ và tính linh hoạt. Tuy nhiên, khi cơ sở mã phát triển, tính linh hoạt được nhập động này có thể dẫn đến các lỗi thời gian chạy khó hiểu—chẳng hạn như chuyển danh sách tới hàm yêu cầu một chuỗi. Để thu hẹp khoảng cách này,Python 3.5 đã giới thiệu Gợi ý loại (Chú thích loại), cho phép các nhà phát triển ghi lại rõ ràng các loại dự kiến trong mã.
Gợi ý nhập không ảnh hưởng đến cách Python chạy mã của bạn; trình thông dịch hoàn toàn bỏ qua chúng khi chạy. Thay vào đó, giá trị của chúng nằm ở công cụ phân tích tĩnh và IDE. Bằng cách thêm chú thích kiểu vào biến, tham số hàm và kiểu trả về, IDE của bạn có thể cung cấp khả năng tự động hoàn thành chính xác và gắn cờ ngay lập tức cho các lỗi không khớp loại. Các công cụ như `mypy` có thể quét cơ sở mã của bạn trước khi triển khai để phát hiện lỗi tĩnh, bắt chước quá trình kiểm tra thời gian biên dịch của các ngôn ngữ như TypeScript hoặc Java.
Khả năng gõ của Python rất phong phú. Bạn có thể chú thích các loại cơ bản như `str`, `int` và `bool` hoặc sử dụng các loại nâng cao từ mô-đun `typing` tích hợp sẵn (hoặc các bộ sưu tập tiêu chuẩn trongPython 3.9+) như `list[str]`, `dict[str, int]` và `tuple[float, float]`. Các tính năng như `Union` (hoặc toán tử đường ống `|` trongPython 3.10+) cho phép tham số chấp nhận nhiều loại, trong khi `Tùy chọn[T]` đại diện cho một giá trị có thể là một loại cụ thể hoặc `Không có`. Việc triển khai gợi ý loại cải thiện đáng kể khả năng đọc và cộng tác nhóm.
Đầu ra mã & thực thi
Viết một hàm có chú thích kiểu và kiểm tra cách nó chấp nhận đầu vào.
# Type annotations for function parameters and return values
def greeting(name: str, count: int) -> str:
return f"Hello {name}! " * count
# Type hints on standard collections (Python 3.9+)
user_roles: dict[str, str] = {
"admin": "Alice",
"moderator": "Bob"
}
message = greeting("Jane", 2)
print(message)
print(f"Roles configured: {user_roles}")Hello Jane! Hello Jane!
Roles configured: {'admin': 'Alice', 'moderator': 'Bob'}Triển khai từng bước
- Ngăn chặn lỗi tích hợp trong cơ sở mã nhóm lớn
- Cho phép hoàn thành mã IDE trong các dự án mã phức tạp
- Tạo cấu trúc API tự ghi tài liệu và lược đồ xác thực
Câu hỏi thường gặp
Gợi ý loại có thực thi an toàn loại trong thời gian chạy không?
Không. Python không đưa ra các ngoại lệ lỗi nếu bạn chuyển một loại khác với gợi ý được chú thích. Để thực thi việc kiểm tra kiểu, bạn phải chạy trình kiểm tra tĩnh như mypy.
Sự khác biệt giữa Any và Union là gì?
Any vô hiệu hóa việc kiểm tra kiểu cho một biến, cho phép nó giữ bất cứ thứ gì. Union (hoặc T | U) giới hạn biến ở một tập hợp con cụ thể, được xác định của các loại.
Chủ đề liên quan
Hiểu các biến Python và các kiểu dữ liệu cốt lõi (chuỗi, số nguyên, số float, boolean). Hướng dẫn đầy đủ cho người mới bắt đầu về gán bộ nhớ trong Python.
Hàm PythonLàm chủ các hàm Python. Tìm hiểu cách viết mã có thể sử dụng lại bằng cách sử dụng def, xác định đối số, trả về giá trị và hiểu phạm vi cục bộ và toàn cầu.
Tài nguyên Python được đề xuất
Mở rộng kiến thức của bạn với các hướng dẫn tương tác, bảng ghi chú và so sánh mã có liên quan.
Cách kiểm tra loại dữ liệu trong Python
Tìm hiểu cách kiểm tra các loại dữ liệu trong Python. Hiểu thời điểm sử dụng type() so với isinstance(), xử lý các lớp tùy chỉnh và viết xác thực kiểm tra loại an toàn.
Bảng cheat chuyển đổi loại Python
Tìm hiểu các chuyển đổi loại ẩn và rõ ràng trong Python. Chuyển đổi giữa các chuỗi, số nguyên, số float, danh sách, bộ và từ điển.
Python vs TypeScript: Tập lệnh động và Web an toàn kiểu
So sánh Python và TypeScript. Tìm hiểu về hệ thống loại cấu trúc, siêu dữ liệu trang trí, kiểm tra trình biên dịch, thời gian chạy web và công cụ dành cho nhà phát triển.