程式碼物件¶
程式碼物件是 CPython 實作的低階細節。每個程式碼物件都代表一段尚未綁定到函式的可執行程式碼。
-
type PyCodeObject¶
用於描述程式碼物件的 C 結構。此型別的欄位隨時可能變更。
-
PyTypeObject PyCode_Type¶
這是
PyTypeObject的一個實例,代表 Python 的程式碼物件。
-
Py_ssize_t PyCode_GetNumFree(PyCodeObject *co)¶
回傳程式碼物件中 自由(閉包)變數的數量。
-
int PyUnstable_Code_GetFirstFree(PyCodeObject *co)¶
- 這是 不穩定 API,它可能在小版本發布中沒有任何警告地被變更。
回傳程式碼物件中第一個自由(閉包)變數的位置。
在 3.13 版的變更: Renamed from
PyCode_GetFirstFreeas part of 不穩定的 C API. The old name is deprecated, but will remain available until the signature changes again.
-
PyCodeObject *PyUnstable_Code_New(int argcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, PyObject *qualname, int firstlineno, PyObject *linetable, PyObject *exceptiontable)¶
- 這是 不穩定 API,它可能在小版本發布中沒有任何警告地被變更。
Return a new code object. If you need a dummy code object to create a frame, use
PyCode_NewEmpty()instead.Since the definition of the bytecode changes often, calling
PyUnstable_Code_New()directly can bind you to a precise Python version.The many arguments of this function are inter-dependent in complex ways, meaning that subtle changes to values are likely to result in incorrect execution or VM crashes. Use this function only with extreme care.
在 3.11 版的變更: 新增
qualname和exceptiontable參數。在 3.12 版的變更: Renamed from
PyCode_Newas part of 不穩定的 C API. The old name is deprecated, but will remain available until the signature changes again.
-
PyCodeObject *PyUnstable_Code_NewWithPosOnlyArgs(int argcount, int posonlyargcount, int kwonlyargcount, int nlocals, int stacksize, int flags, PyObject *code, PyObject *consts, PyObject *names, PyObject *varnames, PyObject *freevars, PyObject *cellvars, PyObject *filename, PyObject *name, PyObject *qualname, int firstlineno, PyObject *linetable, PyObject *exceptiontable)¶
- 這是 不穩定 API,它可能在小版本發布中沒有任何警告地被變更。
Similar to
PyUnstable_Code_New(), but with an extra "posonlyargcount" for positional-only arguments. The same caveats that apply toPyUnstable_Code_Newalso apply to this function.在 3.8 版被加入: 名為
PyCode_NewWithPosOnlyArgs在 3.11 版的變更: 新增
qualname和exceptiontable參數。在 3.12 版的變更: 重新命名為
PyUnstable_Code_NewWithPosOnlyArgs。舊的名稱已被棄用,但在簽名再次變更前仍可使用。
-
PyCodeObject *PyCode_NewEmpty(const char *filename, const char *funcname, int firstlineno)¶
- 回傳值:新的參照。
Return a new empty code object with the specified filename, function name, and first line number. The resulting code object will raise an
Exceptionif executed.
-
int PyCode_Addr2Line(PyCodeObject *co, int byte_offset)¶
Return the line number of the instruction that occurs on or before
byte_offsetand ends after it. If you just need the line number of a frame, use