幀物件¶
-
型別 PyFrameObject¶
- 屬於 有限 API 的一部分(作為不透明的結構體)。
用於描述幀物件的 C 結構。
此結構中沒有公共成員。
在 3.11 版本中更改:此結構的成員已從公共 C API 中移除。有關詳細資訊,請參閱 新增功能條目。
可以使用 PyEval_GetFrame()
和 PyThreadState_GetFrame()
函式來獲取幀物件。
另請參閱 反射。
-
PyTypeObject PyFrame_Type¶
幀物件的型別。它與 Python 層中的
types.FrameType
物件相同。在 3.11 版本中更改:以前,只有在包含
<frameobject.h>
之後才能使用此型別。
-
int PyFrame_Check(PyObject *obj)¶
如果 *obj* 是一個幀物件,則返回非零值。
在 3.11 版本中更改:以前,只有在包含
<frameobject.h>
之後才能使用此函式。
-
PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)¶
- 返回值:新的引用。
獲取 *frame* 的下一個外部幀。
返回一個 強引用,如果 *frame* 沒有外部幀,則返回
NULL
。在 3.9 版本中新增。
-
PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)¶
- 返回值:新的引用。
獲取 *frame* 的
f_builtins
屬性。返回一個 強引用。結果不能為
NULL
。在 3.11 版本中新增。
-
PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)¶
- 返回值:新的引用。自從 3.10 版本以來,屬於 穩定 ABI 的一部分。
獲取 *frame* 程式碼。
返回一個 強引用。
結果(幀程式碼)不能為
NULL
。在 3.9 版本中新增。
-
PyObject *PyFrame_GetGenerator(PyFrameObject *frame)¶
- 返回值:新的引用。
獲取擁有此幀的生成器、協程或非同步生成器,如果此幀不屬於任何生成器,則返回
NULL
。即使返回值為NULL
,也不會引發異常。返回一個 強引用,或
NULL
。在 3.11 版本中新增。
-
PyObject *PyFrame_GetGlobals(PyFrameObject *frame)¶
- 返回值:新的引用。
獲取 *frame* 的
f_globals
屬性。返回一個 強引用。結果不能為
NULL
。在 3.11 版本中新增。
-
int PyFrame_GetLasti(PyFrameObject *frame)¶
獲取 *frame* 的
f_lasti
屬性。如果
frame.f_lasti
為None
,則返回 -1。在 3.11 版本中新增。
-
PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)¶
- 返回值:新的引用。
獲取 *frame* 的變數 *name*。
*name* 型別必須是
str
。在 3.12 版本中新增。
-
PyObject *PyFrame_GetVarString(PyFrameObject *frame, const char *name)¶
- 返回值:新的引用。
與
PyFrame_GetVar()
類似,但變數名稱是使用 UTF-8 編碼的 C 字串。在 3.12 版本中新增。
-
PyObject *PyFrame_GetLocals(PyFrameObject *frame)¶
- 返回值:新的引用。
獲取 *frame* 的
f_locals
屬性。如果幀引用一個 最佳化作用域,則返回一個允許修改區域性變數的直寫代理物件。在所有其他情況下(類、模組、exec()
、eval()
),它直接返回表示幀區域性變數的對映(如locals()
所述)。返回一個 強引用。
在 3.11 版本中新增。
在 3.13 版本中更改:作為 PEP 667 的一部分,返回
PyFrameLocalsProxy_Type
的一個例項。
-
int PyFrame_GetLineNumber(PyFrameObject *frame)¶
- 自 3.10 版本起,屬於穩定 ABI 的一部分。
返回frame當前正在執行的行號。
幀區域性變數代理¶
在 3.13 版本中新增。
f_locals
屬性在 frame 物件上是一個“幀區域性變數代理”的例項。該代理物件暴露了幀底層區域性變數字典的直寫檢視。這確保了f_locals
暴露的變數始終與幀本身中的即時區域性變數保持同步。
更多資訊請參閱PEP 667。
-
PyTypeObject PyFrameLocalsProxy_Type¶
幀
locals()
代理物件的型別。
內部幀¶
除非使用 PEP 523,否則您不需要這個。
-
struct _PyInterpreterFrame¶
直譯器的內部幀表示。
在 3.11 版本中新增。
-
PyObject *PyUnstable_InterpreterFrame_GetCode(struct _PyInterpreterFrame *frame);¶
- 這是不穩定的 API。它可能會在次要版本中更改,恕不另行通知。
返回對幀的程式碼物件的強引用。
在 3.12 版本中新增。
-
int PyUnstable_InterpreterFrame_GetLasti(struct _PyInterpreterFrame *frame);¶
- 這是不穩定的 API。它可能會在次要版本中更改,恕不另行通知。
返回最後執行的指令的位元組偏移量。
在 3.12 版本中新增。
-
int PyUnstable_InterpreterFrame_GetLine(struct _PyInterpreterFrame *frame);¶
- 這是不穩定的 API。它可能會在次要版本中更改,恕不另行通知。
返回當前正在執行的行號,如果沒有行號,則返回 -1。
在 3.12 版本中新增。