Hướng dẫn is python typing enforced? - nhập python có được thực thi không?
Một tùy chọn để tận dụng các gợi ý loại là mô -đun type_enforced. Liên quan đến hỗ trợ Python chính thức, dường như các loại gợi ý sẽ không được thực thi trực tiếp trong tương lai gần. Show
Đi vào Các loại đầu vào được xác thực đầu tiên (một cách lười biếng trong cuộc gọi chức năng) và nếu hợp lệ, hàm được xử lý trong đó giá trị trả về sau đó được xác thực. Có một số hạn chế sao cho các cấu trúc loại lồng nhau không được hỗ trợ. Ví dụ: bạn không thể chỉ định loại dưới dạng danh sách các số nguyên, mà chỉ một danh sách. Bạn sẽ cần xác thực các mục trong danh sách bên trong chức năng của bạn.
Được đăng bởi 4 năm trước4 years ago4 years ago Lưu trữ Gợi ý loại của Python có vẻ khá phổ biến và tôi đang xem xét sử dụng chúng trong dự án tiếp theo của mình. Tuy nhiên, tôi hơi lo lắng về cách mà, mặc dù chúng có thể được kiểm tra một cách tĩnh, chúng bị bỏ qua trong thời gian chạy. Có ai đã thử sử dụng một thư viện như thực thi để đảm bảo các gợi ý loại vẫn được tôn trọng khi một chương trình đang chạy? Hoặc bạn thường thấy kiểm tra tĩnh là đủ? Chủ đề này được lưu trữ Nhận xét mới không thể được đăng và phiếu bầu không thể được chọn cấp độ 1 Vâng, mọi người đã thử điều này.
Kết quả thông thường là quyết định rằng một trình kiểm tra loại ngoại tuyến (thường là Vì vậy, sử dụng các chú thích loại, kiểm tra tĩnh, sau đó di chuyển và chỉ cần thêm cấp độ 2 Có sẵn máy móc (nhận thức chung) typecheck trong thời gian chạy vẫn hữu ích, tuy nhiên có thể chậm, ví dụ như ở ranh giới thô giữa các hệ thống không được phát hiện và đánh máy và trong các lần chạy thử. Đối với các hệ thống phức tạp, tôi sẽ vui vẻ thanh toán chi phí kiểm tra cho số lượng nhỏ dữ liệu mà các thử nghiệm có xu hướng chạy và để sản xuất chạy không bị thay đổi bởi nó. cấp độ 1 Vâng, mọi người đã thử điều này. Khái niệm chung về cơ bản là bạn đang thực hiện gõ tĩnh thông qua "Thiết kế theo hợp đồng". Tôi nhớ đã thấy một sự so sánh của bốn thư viện để thực thi loại ở đâu đó trong một cuộc thảo luận GitHub liên quan đến PEP. Nói tóm lại, tất cả đều có lỗi (một số chỉ có lỗi, một lỗi được đánh dấu "không hoàn chỉnh") nhưng quan trọng hơn là khoảng cách hiệu suất ~ 300X (nghĩa là ba mươi nghìn phần trăm) khi xử lý các loại chung như cấp độ 1 Vâng, mọi người đã thử điều này. cấp độ 2 Có sẵn máy móc (nhận thức chung) typecheck trong thời gian chạy vẫn hữu ích, tuy nhiên có thể chậm, ví dụ như ở ranh giới thô giữa các hệ thống không được phát hiện và đánh máy và trong các lần chạy thử. Đối với các hệ thống phức tạp, tôi sẽ vui vẻ thanh toán chi phí kiểm tra cho số lượng nhỏ dữ liệu mà các thử nghiệm có xu hướng chạy và để sản xuất chạy không bị thay đổi bởi nó. Tôi nhớ đã thấy một sự so sánh của bốn thư viện để thực thi loại ở đâu đó trong một cuộc thảo luận GitHub liên quan đến PEP. Nói tóm lại, tất cả đều có lỗi (một số chỉ có lỗi, một lỗi được đánh dấu "không hoàn chỉnh") nhưng quan trọng hơn là khoảng cách hiệu suất ~ 300X (nghĩa là ba mươi nghìn phần trăm) khi xử lý các loại chung như Cá nhân tôi sử dụng MyPy như một linter rất kén chọn, để đảm bảo rằng tôi đã hiểu về mặt khái niệm và thực hiện các loại một cách hợp lý. cấp độ 2
Tôi nhớ đã thấy một sự so sánh của bốn thư viện để thực thi loại ở đâu đó trong một cuộc thảo luận GitHub liên quan đến PEP. Nói tóm lại, tất cả đều có lỗi (một số chỉ có lỗi, một lỗi được đánh dấu "không hoàn chỉnh") nhưng quan trọng hơn là khoảng cách hiệu suất ~ 300X (nghĩa là ba mươi nghìn phần trăm) khi xử lý các loại chung như
Tôi cũng sử dụng rất nhiều mẫu thiết kế Haskell trong Python khi làm việc với các loại (mặc dù don don đi xa như sử dụng bất kỳ thư viện cụ thể nào cho các yếu tố lý thuyết thể loại Haskell). cấp độ 2
Tôi cũng sử dụng rất nhiều mẫu thiết kế Haskell trong Python khi làm việc với các loại (mặc dù don don đi xa như sử dụng bất kỳ thư viện cụ thể nào cho các yếu tố lý thuyết thể loại Haskell). cấp độ 2Các gợi ý loại có được thi hành không?They are not enforced at build or run time in any way by Python. Instead used by type checkers / linters (like mypy or pyright) and IDEs. Những điều quan trọng cần lưu ý về các gợi ý loại: chúng không được thi hành tại Build hoặc Run Time theo bất kỳ cách nào bởi Python.Thay vào đó được sử dụng bởi người kiểm tra loại / linters (như mypy hoặc pyright) và ides.They are not enforced at build or run time in any way by Python. Instead used by type checkers / linters (like mypy or pyright) and IDEs.Python có làm cho gợi ý nhanh hơn không?. They are just for the developer's reference and help auto-completion software. They allow IDEs to recognise data types and give suggestions based on this information. Không, gõ gợi ý không buộc Python phải kiểm tra loại dữ liệu được lưu trữ trong một biến.Chúng chỉ dành cho tài liệu tham khảo của nhà phát triển và giúp tự động hoàn thành phần mềm.Chúng cho phép IDE nhận ra các loại dữ liệu và đưa ra đề xuất dựa trên thông tin này.. They are just for the developer's reference and help auto-completion software. They allow IDEs to recognise data types and give suggestions based on this information.Loại Python là gì?a formal solution to statically indicate the type of a value within your Python code. It was specified in PEP 484 and introduced in Python 3.5. Loại gợi ý là một giải pháp chính thức để chỉ ra định nghĩa loại giá trị trong mã Python của bạn.Nó được chỉ định trong PEP 484 và được giới thiệu trong Python 3.5.a formal solution to statically indicate the type of a value within your Python code. It was specified in PEP 484 and introduced in Python 3.5.Làm thế nào để Python suy ra các loại?Python allows a symbol to be bound to different values at runtime, so its type can change over time. A symbol's type doesn't need to be declared statically. |