Sự khác biệt trong trăn

Các chương trước đã thảo luận về cách mở rộng Python, tức là cách mở rộng chức năng của Python bằng cách đính kèm một thư viện các hàm C vào nó. Cũng có thể làm theo cách khác. làm phong phú thêm ứng dụng C/C++ của bạn bằng cách nhúng Python vào đó. Nhúng cung cấp cho ứng dụng của bạn khả năng triển khai một số chức năng của ứng dụng bằng Python thay vì C hoặc C++. Điều này có thể được sử dụng cho nhiều mục đích; . Bạn cũng có thể tự mình sử dụng nếu một số chức năng có thể được viết bằng Python dễ dàng hơn

Nhúng Python tương tự như mở rộng nó, nhưng không hoàn toàn. Sự khác biệt là khi bạn mở rộng Python, chương trình chính của ứng dụng vẫn là trình thông dịch Python, trong khi nếu bạn nhúng Python, chương trình chính có thể không liên quan gì đến Python — thay vào đó, một số phần của ứng dụng thỉnh thoảng gọi trình thông dịch Python

Vì vậy, nếu bạn đang nhúng Python, bạn đang cung cấp chương trình chính của riêng mình. Một trong những việc mà chương trình chính này phải làm là khởi tạo trình thông dịch Python. Ít nhất, bạn phải gọi hàm. Có các cuộc gọi tùy chọn để chuyển đối số dòng lệnh cho Python. Sau đó, bạn có thể gọi trình thông dịch từ bất kỳ phần nào của ứng dụng

Có một số cách khác nhau để gọi thông dịch viên. bạn có thể chuyển một chuỗi chứa các câu lệnh Python tới hoặc bạn có thể chuyển con trỏ tệp stdio và tên tệp [chỉ để nhận dạng trong thông báo lỗi] tới. Bạn cũng có thể gọi các thao tác cấp thấp hơn được mô tả trong các chương trước để xây dựng và sử dụng các đối tượng Python

Xem thêm

Các chi tiết về giao diện C của Python được đưa ra trong sách hướng dẫn này. Rất nhiều thông tin cần thiết có thể được tìm thấy ở đây

1. 1. Nhúng cấp độ rất cao

Hình thức nhúng Python đơn giản nhất là sử dụng giao diện cấp cao. Giao diện này nhằm thực thi tập lệnh Python mà không cần tương tác trực tiếp với ứng dụng. Ví dụ, điều này có thể được sử dụng để thực hiện một số thao tác trên một tệp

#define PY_SSIZE_T_CLEAN
#include 

int
main[int argc, char *argv[]]
{
    wchar_t *program = Py_DecodeLocale[argv[0], NULL];
    if [program == NULL] {
        fprintf[stderr, "Fatal error: cannot decode argv[0]\n"];
        exit[1];
    }
    Py_SetProgramName[program];  /* optional but recommended */
    Py_Initialize[];
    PyRun_SimpleString["from time import time,ctime\n"
                       "print['Today is', ctime[time[]]]\n"];
    if [Py_FinalizeEx[] 

Chủ Đề