Đối tượng khung¶
-
type PyFrameObject¶
- Một phần của API có giới hạn (như một cấu trúc mờ đục).
Cấu trúc C của các đối tượng được sử dụng để mô tả các đối tượng khung.
Không có thành viên công cộng trong cấu trúc này.
Thay đổi trong phiên bản 3.11: Các thành viên của cấu trúc này đã bị xóa khỏi C API công khai. Tham khảo What's New entry để biết chi tiết.
Các hàm PyEval_GetFrame() và PyThreadState_GetFrame() có thể được sử dụng để lấy đối tượng khung.
Xem thêm Reflection.
-
PyTypeObject PyFrame_Type¶
Các loại đối tượng khung. Nó là đối tượng tương tự như
types.FrameTypetrong lớp Python.Thay đổi trong phiên bản 3.11: Trước đây, loại này chỉ có sau khi thêm
<frameobject.h>.
-
PyFrameObject *PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals, PyObject *locals)¶
Tạo một đối tượng khung mới. Hàm này trả về strong reference cho đối tượng khung mới nếu thành công và trả về
NULLvới ngoại lệ được đặt nếu thất bại.
-
int PyFrame_Check(PyObject *obj)¶
Trả về khác 0 nếu obj là đối tượng khung.
Thay đổi trong phiên bản 3.11: Trước đây, chức năng này chỉ khả dụng sau khi thêm
<frameobject.h>.
-
PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)¶
- Giá trị trả về: Tham chiếu mới.
Nhận frame khung bên ngoài tiếp theo.
Trả về strong reference hoặc
NULLnếu frame không có khung bên ngoài. Điều này không có ngoại lệ.Added in version 3.9.
-
PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)¶
- Giá trị trả về: Tham chiếu mới.
Lấy thuộc tính
f_builtinscủa frame.Trả về strong reference. Kết quả không thể là
NULL.Added in version 3.11.
-
PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)¶
- Giá trị trả về: Tham chiếu mới. Một phần của ABI ổn định kể từ phiên bản 3.10.
Lấy mã frame.
Trả về strong reference.
Kết quả (mã khung) không được là
NULL.Added in version 3.9.
-
PyObject *PyFrame_GetGenerator(PyFrameObject *frame)¶
- Giá trị trả về: Tham chiếu mới.
Lấy trình tạo, coroutine hoặc trình tạo không đồng bộ sở hữu khung này hoặc
NULLnếu khung này không thuộc sở hữu của trình tạo. Không đưa ra ngoại lệ, ngay cả khi giá trị trả về làNULL.Trả về strong reference hoặc
NULL.Added in version 3.11.
-
PyObject *PyFrame_GetGlobals(PyFrameObject *frame)¶
- Giá trị trả về: Tham chiếu mới.
Lấy thuộc tính
f_globalscủa frame.Trả về strong reference. Kết quả không thể là
NULL.Added in version 3.11.
-
int PyFrame_GetLasti(PyFrameObject *frame)¶
Lấy thuộc tính
f_lasticủa frame.Trả về -1 nếu
frame.f_lastilàNone.Added in version 3.11.
-
PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)¶
- Giá trị trả về: Tham chiếu mới.
Lấy biến name của frame.
Trả về strong reference cho giá trị biến thành công.
Tăng
NameErrorvà trả vềNULLnếu biến không tồn tại.Đưa ra một ngoại lệ và trả về
NULLkhi có lỗi.
Loại name phải là
str.Added in version 3.12.
-
PyObject *PyFrame_GetVarString(PyFrameObject *frame, const char *name)¶
- Giá trị trả về: Tham chiếu mới.
Tương tự như
PyFrame_GetVar(), nhưng tên biến là chuỗi C được mã hóa trong UTF-8.Added in version 3.12.
-
PyObject *PyFrame_GetLocals(PyFrameObject *frame)¶
- Giá trị trả về: Tham chiếu mới.
Lấy thuộc tính
f_localscủa frame. Nếu khung tham chiếu đến optimized scope, khung này sẽ trả về một đối tượng proxy ghi qua cho phép sửa đổi cục bộ. Trong tất cả các trường hợp khác (lớp, mô-đun,exec(),eval()), nó trả về ánh xạ biểu thị trực tiếp các cục bộ khung (như được mô tả cholocals()).Trả về strong reference.
Added in version 3.11.
Thay đổi trong phiên bản 3.13: Là một phần của PEP 667, trả về một phiên bản của
PyFrameLocalsProxy_Type.
-
int PyFrame_GetLineNumber(PyFrameObject *frame)¶
- Một phần của ABI ổn định kể từ phiên bản 3.10.
Trả về số dòng mà frame hiện đang thực thi.
Proxy cục bộ khung¶
Added in version 3.13.
Thuộc tính f_locals trên frame object là một phiên bản của "proxy khung cục bộ". Đối tượng proxy hiển thị chế độ xem ghi qua từ điển cục bộ cơ bản cho khung. Điều này đảm bảo rằng các biến được hiển thị bởi f_locals luôn được cập nhật với các biến cục bộ trực tiếp trong chính khung đó.
Xem PEP 667 để biết thêm thông tin.
-
PyTypeObject PyFrameLocalsProxy_Type¶
Loại đối tượng proxy khung
locals().
API biến cục bộ cũ¶
Các API này là soft deprecated. Kể từ Python 3.13, chúng không làm gì cả. Chúng tồn tại chỉ để tương thích ngược.
-
void PyFrame_LocalsToFast(PyFrameObject *f, int clear)¶
Chức năng này là soft deprecated và không làm gì cả.
Trước Python 3.13, hàm này sẽ sao chép thuộc tính
f_localscủa f sang mảng "nhanh" bên trong của các biến cục bộ, cho phép trình thông dịch hiển thị các thay đổi trong đối tượng khung. Nếu clear đúng, hàm này sẽ xử lý các biến chưa được đặt trong từ điển cục bộ.Thay đổi trong phiên bản 3.13: Chức năng này bây giờ không làm gì cả.
-
void PyFrame_FastToLocals(PyFrameObject *f)¶
Chức năng này là soft deprecated và không làm gì cả.
Trước Python 3.13, hàm này sẽ sao chép mảng biến cục bộ "nhanh" bên trong (được trình thông dịch sử dụng) sang thuộc tính
f_localscủa f, cho phép hiển thị các thay đổi trong biến cục bộ đối với các đối tượng khung.Thay đổi trong phiên bản 3.13: Chức năng này bây giờ không làm gì cả.
-
int PyFrame_FastToLocalsWithError(PyFrameObject *f)¶
Chức năng này là soft deprecated và không làm gì cả.
Trước Python 3.13, hàm này tương tự như
PyFrame_FastToLocals(), nhưng sẽ trả về0nếu thành công và-1với một ngoại lệ được đặt thành thất bại.Thay đổi trong phiên bản 3.13: Chức năng này bây giờ không làm gì cả.
Xem thêm
Khung nội bộ¶
Trừ khi sử dụng PEP 523, bạn sẽ không cần điều này.
-
struct _PyInterpreterFrame¶
Biểu diễn khung bên trong của trình thông dịch.
Added in version 3.11.
-
PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);¶
- Đây là API không ổn định. Nó có thể thay đổi mà không có cảnh báo trong các bản phát hành nhỏ.
Trả về strong reference cho đối tượng mã cho khung.
Added in version 3.12.
-
int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);¶
- Đây là API không ổn định. Nó có thể thay đổi mà không có cảnh báo trong các bản phát hành nhỏ.
Trả lại byte offset vào lệnh được thực hiện cuối cùng.
Added in version 3.12.
-
int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);¶
- Đây là API không ổn định. Nó có thể thay đổi mà không có cảnh báo trong các bản phát hành nhỏ.
Trả về số dòng hiện đang thực thi hoặc -1 nếu không có số dòng.
Added in version 3.12.