Trong PEP 484, nhập gợi ý đã được thêm vào Python 3 với sự bao gồm của mô-đun typing
. Có cách nào để làm điều này trong Python 2? Tất cả tôi có thể nghĩ là có một trang trí để thêm vào các phương pháp để kiểm tra các loại, nhưng điều này sẽ thất bại trong thời gian chạy và không được bắt sớm hơn như gợi ý sẽ cho phép.Gợi ý loại bằng Python 2
Trả lời
Theo Suggested syntax for Python 2.7 and straddling code trong PEP 484 xác định loại gợi ý, có một cú pháp thay thế cho khả năng tương thích với Python 2.7. Tuy nhiên nó không bắt buộc vì vậy tôi không biết nó được hỗ trợ tốt như thế nào, nhưng trích dẫn PEP:
Một số công cụ có thể muốn hỗ trợ chú thích loại trong mã phải tương thích với Python 2.7. Với mục đích này, PEP có phần mở rộng được đề xuất (nhưng không bắt buộc), trong đó chú thích hàm được đặt trong một loại #: chú thích. Bình luận như vậy phải được đặt ngay sau tiêu đề hàm (trước chuỗi docstring). Một ví dụ: sau Python 3 mã:
def embezzle(self, account: str, funds: int = 1000000, *fake_receipts: str) -> None: """Embezzle funds from account using fake receipts.""" <code goes here>
tương đương như sau:
def embezzle(self, account, funds=1000000, *fake_receipts): # type: (str, int, *str) -> None """Embezzle funds from account using fake receipts.""" <code goes here>
Đối mypy
hỗ trợ, xem Type checking Python 2 code.
Tại thời điểm này cách tương thích đề nghị và python3 làm là đi theo python2 tới 3 hướng: http://python-future.org/func_annotations.html
def embezzle(self, account: str, funds: int = 1000000, *fake_receipts: str) -> None:
"""Embezzle funds from account using fake receipts."""
pass
Trở thành:
def embezzle(self, account, funds = 1000000, *fake_receipts):
"""Embezzle funds from account using fake receipts."""
pass
embezzle.__annotations__ = {'account': str, 'funds': int, 'fake_receipts': str, 'return': None}
- 1. PHP loại traversable gợi ý
- 2. Loại gợi ý trong namedtuple
- 3. Python - dấu ngoặc móc trong các gợi ý loại
- 4. Xóa gợi ý loại trong nguồn Python theo lập trình
- 5. Clojure loại gợi ý cú pháp
- 6. loại đối tượng gợi ý trong php
- 7. JetBrains WebIDE: gợi ý loại biến PHP?
- 8. JSON4S loại gợi ý không làm việc
- 9. Cách nhập gợi ý
- 10. Chú thích Python 3: Loại gợi ý danh sách loại được chỉ định (PyCharm)
- 11. anaconda + sublimetext, báo cáo loại gợi ý là lỗi
- 12. Loại gợi ý cho các hàm trong Clojure
- 13. Ruby có hỗ trợ loại gợi ý không?
- 14. PHP: Gợi ý kiểu cho các trường bằng Eclipse PDT
- 15. Hiển thị gợi ý
- 16. PSK Gợi ý với OpenSSL
- 17. Python 3.5 loại gợi ý tự động tạo ra các thuộc tính ví dụ
- 18. Làm thế nào để sử dụng gợi ý loại Python với Django QuerySet?
- 19. Tại sao loại gợi ý cần thiết trong PHP?
- 20. Loại PHP gợi ý cho phép Array hoặc ArrayAccess
- 21. Gợi ý loại 'khác' trong các phương pháp ma thuật?
- 22. loại PHPStorm gợi ý lớp con của baseclass
- 23. Thêm giá trị tham số mặc định với kiểu gợi ý bằng Python
- 24. Tạo ELF bằng cách sử dụng gợi ý libelf
- 25. Sự khác nhau giữa gợi ý kiểu `# ^` và gợi ý kiểu `^` là gì?
- 26. Phím tắt cho gợi ý
- 27. Làm cách nào để xác định loại chức năng trong gợi ý loại của tôi?
- 28. phpstorm tạo setter với kiểu gợi ý
- 29. NET Workflow cơ Gợi ý
- 30. Resharper gợi ý Page_Load = PageLoad
Hmm ok, nên đã đọc các tài liệu hơn nữa. Bạn có biết nếu có bất kỳ công cụ nào hiện hỗ trợ điều này không? Không chắc chắn nếu nó chỉ là một tiêu chuẩn hoặc nếu có thực tế dụng cụ thực hiện được nêu ra. – Andrew
Theo PyCharm "PyCharm hỗ trợ loại gợi ý trong chú thích hàm và nhập nhận xét bằng cách sử dụng mô-đun nhập được xác định bởi PEP 484." Tham chiếu đến các Ý KIẾN TYPE làm cho nó rõ ràng rằng nó cần được hỗ trợ. Tôi không sử dụng pyCharm trên máy tính này vì vậy tôi không thể kiểm tra nó ngay bây giờ. CHỈNH SỬA: liên kết tới pycharm: https://www.jetbrains.com/pycharm/help/type-hinting-in-pycharm.html#d316912e110 – Mijamo
Cảm ơn, cũng thấy rằng Emacs Jedi cũng làm việc với nó. – Andrew