Pyrex là một ngôn ngữ để viết Python Extension Modules.
Pyrex là một ngôn ngữ thiết kế đặc biệt cho việc viết các module mở rộng Python. Nó được thiết kế để thu hẹp khoảng cách giữa đẹp, cao cấp, dễ dàng sử dụng trên thế giới của Python và lộn xộn, cấp thấp thế giới của C.
Bạn có thể tự hỏi tại sao mọi người sẽ muốn có một ngôn ngữ đặc biệt cho việc này. Python là thực sự dễ dàng mở rộng bằng cách sử dụng C hoặc C ++, phải không? Tại sao không chỉ viết các module mở rộng của bạn trong một trong những ngôn ngữ?
Vâng, nếu bạn đã từng viết một module mở rộng cho Python, bạn sẽ biết rằng điều này là không dễ dàng như tất cả những gì. Trước hết, có một chút công bằng mã boilerplate viết trước khi bạn thậm chí có thể nhận được lên khỏi mặt đất. Sau đó, bạn đang phải đối mặt với vấn đề chuyển đổi giữa Python và C kiểu dữ liệu. Đối với các loại cơ bản như số và chuỗi này không phải là quá xấu, nhưng bất cứ điều gì phức tạp hơn và bạn vào chọn Python đối tượng ngoài bằng cách sử dụng Python / C cuộc gọi API, mà đòi hỏi bạn phải tỉ mỉ về việc duy trì tính tham khảo, kiểm tra lỗi mỗi bước đi và làm sạch đúng cách nếu bất cứ điều gì sai trái. Bất kỳ sai lầm và bạn có một vụ tai nạn khó chịu đó là rất khó để gỡ lỗi.
Các công cụ khác nhau đã được phát triển để giảm bớt một số trong những gánh nặng của sản xuất mã mở rộng, trong đó có lẽ SWIG là nổi tiếng nhất. SWIG mất một tập tin định nghĩa bao gồm một hỗn hợp của mã C và khai báo chuyên ngành, và tạo ra một module mở rộng. Nó viết tất cả các soạn sẵn cho bạn, và trong nhiều trường hợp, bạn có thể sử dụng nó mà không biết về các API Python / C. Nhưng bạn cần phải sử dụng các cuộc gọi API nếu có cơ cấu lại đáng kể của các dữ liệu được yêu cầu giữa Python và C.
Hơn nữa, SWIG cung cấp cho bạn không có sự giúp đỡ ở tất cả nếu bạn muốn tạo một built-in Python kiểu mới. Nó sẽ tạo ra các lớp học thuần Python mà bọc (một cách hơi không an toàn) con trỏ đến C cấu trúc dữ liệu, nhưng tạo ra các kiểu mở rộng thực sự là ở bên ngoài phạm vi của nó.
Một nỗ lực đáng chú ý lúc làm cho nó dễ dàng hơn để mở rộng Python là PyInline, lấy cảm hứng từ một cơ sở tương tự cho Perl. PyInline cho phép bạn nhúng đoạn mã C ở giữa một tập tin Python, và tự động trích xuất chúng và biên dịch chúng thành một phần mở rộng. Nhưng nó chỉ có thể chuyển đổi tự động các loại cơ bản, và như với SWIG, nó không chỉ tạo ra các loại Python mới.
Pyrex nhằm mục đích để đi xa hơn những gì bất kỳ của những công cụ này cung cấp trước đó. Pyrex đề với các loại cơ bản dễ dàng như SWIG, nhưng nó cũng cho phép bạn viết mã để chuyển đổi giữa các cấu trúc tùy ý Python dữ liệu và tùy ý các cấu trúc dữ liệu C, theo một cách đơn giản và tự nhiên, mà không biết bất cứ điều gì về Python / C API. Đó là đúng - không có gì cả! Cũng không làm bạn phải lo lắng về tính tham khảo hoặc kiểm tra lỗi - đó là tất cả được chăm sóc tự động, đằng sau hậu trường, chỉ vì nó là trong giải mã Python. Và hơn nữa, Pyrex cho phép bạn định nghĩa mới được xây dựng trong các loại Python chỉ dễ dàng như bạn có thể định nghĩa các lớp mới trong Python.
Có gì mới trong phiên bản này:
· Tiny Sửa lỗi để sửa chữa một vấn đề tab / không gian trong phần mở rộng distutils.
Các chi tiết về phần mềm:
Phiên bản: 0.9.4.1
Ngày tải lên: 3 Jun 15
Giấy phép: Miễn phí
Phổ biến: 113
Bình luận không