Python 3.X (chỉ) cũng tổng quát hóa định nghĩa hàm để cho phép các đối số và trả về các giá trị được chú thích với các giá trị đối tượng
để sử dụng trong các phần mở rộng .
Dữ liệu META của nó để giải thích, để rõ ràng hơn về các giá trị hàm.
Các chú thích được mã hóa như :value
sau tên đối số và trước mặc định và như ->value
sau danh sách đối số.
Chúng được thu thập vào một __annotations__
thuộc tính của hàm, nhưng không được coi là đặc biệt bởi chính Python:
>>> def f(a:99, b:'spam'=None) -> float:
... print(a, b)
...
>>> f(88)
88 None
>>> f.__annotations__
{'a': 99, 'b': 'spam', 'return': <class 'float'>}
Nguồn: Tham khảo Pocket Python, Phiên bản thứ năm
THÍ DỤ:
Các typeannotations
mô-đun cung cấp một bộ công cụ để kiểm tra kiểu và suy luận kiểu mã Python. Nó cũng cung cấp một tập hợp các loại hữu ích để chú thích các hàm và đối tượng.
Các công cụ này được thiết kế chủ yếu để được sử dụng bởi các máy phân tích tĩnh như linters, thư viện hoàn thành mã và IDE. Ngoài ra, trang trí để thực hiện kiểm tra thời gian chạy được cung cấp. Kiểm tra loại thời gian chạy không phải lúc nào cũng là một ý tưởng tốt trong Python, nhưng trong một số trường hợp, nó có thể rất hữu ích.
https://github.com/ceronman/typeannotations
Cách gõ giúp viết mã tốt hơn
Nhập văn bản có thể giúp bạn thực hiện phân tích mã tĩnh để bắt lỗi loại trước khi bạn gửi mã của mình đến sản xuất và ngăn bạn khỏi một số lỗi rõ ràng. Có những công cụ như mypy, bạn có thể thêm vào hộp công cụ của mình như một phần của vòng đời phần mềm. mypy có thể kiểm tra các loại chính xác bằng cách chạy với codebase của bạn một phần hoặc toàn bộ. mypy cũng giúp bạn phát hiện các lỗi như kiểm tra loại Không khi giá trị được trả về từ một hàm. Gõ giúp làm cho mã của bạn sạch hơn. Thay vì ghi lại mã của bạn bằng cách sử dụng các nhận xét, trong đó bạn chỉ định các loại trong chuỗi doc, bạn có thể sử dụng các loại mà không phải trả bất kỳ chi phí hiệu năng nào.
Làm sạch Python: Mã hóa thanh lịch trong Python Mã số: ISBN-13 (pbk): 980-1-4842-4877-5
PEP 526 - Cú pháp cho chú thích biến
https://www.python.org/dev/peps/pep-0526/
https://www.attrs.org/en/urdy/types.html