اشیای فریم¶
-
type PyFrameObject¶
- قسمتی از ABI پایدار (بهعنوان یک ساختار مبهم).
ساختار C اشیایی که برای توصیف اشیاء فریم استفاده میشوند.
هیچ عضو عمومی در این ساختار وجود ندارد.
تغییر یافته در نسخهی 3.11: اعضای این ساختار از API عمومی C حذف شدند. برای جزئیات، به مدخل «What's New» مراجعه کنید.
از توابع PyEval_GetFrame() و PyThreadState_GetFrame() میتوان برای بهدستآوردن یک شیء فریم استفاده کرد.
همچنین ببینید بازتاب.
-
PyTypeObject PyFrame_Type¶
نوع اشیاء فریم. این همان شیء types.FrameType در لایهی پایتون است.
تغییر یافته در نسخهی 3.11: پیشتر، این نوع تنها پس از گنجاندن <frameobject.h> در دسترس بود.
-
PyFrameObject *PyFrame_New(PyThreadState *tstate, PyCodeObject *code, PyObject *globals, PyObject *locals)¶
یک شیء فریم جدید ایجاد میکند. این تابع در صورت موفقیت، یک ارجاع قوی به شیء فریم جدید برمیگرداند و در صورت شکست، NULL را همراه با یک استثنای تنظیمشده برمیگرداند.
-
int PyFrame_Check(PyObject *obj)¶
اگر obj یک شیء فریم باشد، مقدار غیر صفر برمیگرداند.
تغییر یافته در نسخهی 3.11: پیشتر، این تابع تنها پس از گنجاندن <frameobject.h> در دسترس بود.
-
PyFrameObject *PyFrame_GetBack(PyFrameObject *frame)¶
- مقدار بازگشتی: مرجع جدید.
گرفتن فریم بیرونی بعدیِ frame.
یک ارجاع قوی برمیگرداند، یا اگر frame فریم بیرونی نداشته باشد، NULL. این تابع هیچ استثنایی ایجاد نمیکند.
-
PyObject *PyFrame_GetBuiltins(PyFrameObject *frame)¶
- مقدار بازگشتی: مرجع جدید.
ویژگی f_builtins فریم را دریافت میکند.
یک strong reference برمیگرداند. نتیجه نمیتواند NULL باشد.
اضافه شده در نسخهی 3.11.
-
PyCodeObject *PyFrame_GetCode(PyFrameObject *frame)¶
- مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار از نسخهی 3.10.
دریافت کد فریم .
یک strong reference را برمیگرداند.
نتیجه (کد فریم) نمیتواند NULL باشد.
-
PyObject *PyFrame_GetGenerator(PyFrameObject *frame)¶
- مقدار بازگشتی: مرجع جدید.
تولیدگر، همروال یا تولیدگر ناهمگامی را که مالک این فریم است به دست میآورد، یا NULL اگر این فریم متعلق به هیچ تولیدگری نباشد. حتی اگر مقدار بازگشتی NULL باشد، استثنایی ایجاد نمیکند.
یک ارجاع قوی یا NULL برمیگرداند.
اضافه شده در نسخهی 3.11.
-
PyObject *PyFrame_GetGlobals(PyFrameObject *frame)¶
- مقدار بازگشتی: مرجع جدید.
گرفتن ویژگی f_globals از فریم.
یک strong reference برمیگرداند. نتیجه نمیتواند NULL باشد.
اضافه شده در نسخهی 3.11.
-
int PyFrame_GetLasti(PyFrameObject *frame)¶
ویژگی f_lasti فریم را دریافت کنید.
اضافه شده در نسخهی 3.11.
-
PyObject *PyFrame_GetVar(PyFrameObject *frame, PyObject *name)¶
- مقدار بازگشتی: مرجع جدید.
متغیر name را از frame میگیرد.
در صورت موفقیت، یک ارجاع قوی به مقدار متغیر برمیگرداند.
اگر متغیر وجود نداشته باشد، NameError را پرتاب کرده و NULL را برمیگرداند.
در صورت خطا، یک استثنا ایجاد کرده و NULL را برمیگرداند.
نوع name باید str باشد.
اضافه شده در نسخهی 3.12.
-
PyObject *PyFrame_GetVarString(PyFrameObject *frame, const char *name)¶
- مقدار بازگشتی: مرجع جدید.
مشابه PyFrame_GetVar()، اما نام متغیر یک رشته C کدگذاریشده با UTF-8 است.
اضافه شده در نسخهی 3.12.
-
PyObject *PyFrame_GetLocals(PyFrameObject *frame)¶
- مقدار بازگشتی: مرجع جدید.
ویژگی f_locals فریم را دریافت میکند. اگر فریم به یک محدوده بهینهشده اشاره کند، یک شیء پراکسی نوشتنهمزمان برمیگرداند که امکان تغییر متغیرهای محلی را فراهم میکند. در تمام موارد دیگر (کلاسها، ماژولها، exec()، eval()) نگاشتی را برمیگرداند که متغیرهای محلی فریم را بهطور مستقیم نمایش میدهد (همانطور که برای locals() توضیح داده شده است).
یک strong reference را برمیگرداند.
اضافه شده در نسخهی 3.11.
-
int PyFrame_GetLineNumber(PyFrameObject *frame)¶
- قسمتی از ABI پایدار از نسخهی 3.10.
شماره سطری که frame هماکنون در حال اجرای آن است را بازمیگرداند.
پراکسیهای متغیرهای محلی فریم¶
اضافه شده در نسخهی 3.13.
ویژگی f_locals روی یک شیء فریم، نمونهای از «پراکسی متغیرهای محلی فریم» (frame-locals proxy) است. شیء پراکسی یک نمای نوشتنهمزمان از دیکشنری متغیرهای محلی زیرین فریم ارائه میدهد. این تضمین میکند که متغیرهای ارائهشده توسط f_locals همیشه با متغیرهای محلی زنده در خودِ فریم بهروز باشند.
برای اطلاعات بیشتر به PEP 667 مراجعه کنید.
-
PyTypeObject PyFrameLocalsProxy_Type¶
نوع شیءهای پراکسی locals() در فریم.
-
int PyFrameLocalsProxy_Check(PyObject *obj)¶
اگر obj یک پراکسی locals() فریم باشد، مقدار غیر صفر را برمیگرداند.
APIهای قدیمی متغیر محلی¶
این APIها soft deprecated هستند. از پایتون 3.13 به بعد، آنها هیچ کاری انجام نمیدهند. آنها صرفاً برای سازگاری با نسخههای قبلی وجود دارند.
-
void PyFrame_LocalsToFast(PyFrameObject *f, int clear)¶
پیش از پایتون 3.13، این تابع ویژگی f_locals از f را به آرایهی داخلی «سریع» (fast) متغیرهای محلی کپی میکرد، بهطوریکه تغییرات در اشیاء فریم برای مفسر قابل مشاهده میشدند. اگر clear درست بود، این تابع متغیرهایی را که در دیکشنری متغیرهای محلی تنظیم نشده بودند پردازش میکرد.
-
void PyFrame_FastToLocals(PyFrameObject *f)¶
پیش از پایتون 3.13، این تابع آرایه داخلی «سریع» متغیرهای محلی (که توسط مفسر استفاده میشود) را به ویژگی f_locals از f کپی میکرد، بهطوری که تغییرات در متغیرهای محلی برای اشیاء فریم قابل مشاهده باشند.
-
int PyFrame_FastToLocalsWithError(PyFrameObject *f)¶
پیش از پایتون 3.13، این تابع مشابه PyFrame_FastToLocals() بود، اما در صورت موفقیت 0 و در صورت شکست -1 به همراه استثنای تنظیمشده برمیگرداند.
فریمهای داخلی¶
مگر اینکه از 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.
-
const PyTypeObject *PyUnstable_ExecutableKinds¶
این است API ناپایداراین ممکن است بدون هشدار در نسخههای جزئی تغییر کند.
آرایهای از انواع اجراکننده (executor types) برای فریمها، که برای اشکالزدایی داخلی و ردگیری استفاده میشود.
ابزارهایی مانند اشکالزداها و پروفایلگیرها میتوانند از این برای شناسایی نوع زمینه اجرای مرتبط با یک فریم استفاده کنند (مانند پالایش فریمهای داخلی). ورودیها با ثابتهای زیر اندیسگذاری میشوند:
ثابت |
توضیحات |
-
PyUnstable_EXECUTABLE_KIND_SKIP¶
این است API ناپایداراین ممکن است بدون هشدار در نسخههای جزئی تغییر کند.
|
این فریم داخلی است (برای مثال: درونخطیشده (inlined)) و باید توسط ابزارها نادیده گرفته شود. |
-
PyUnstable_EXECUTABLE_KIND_PY_FUNCTION¶
این است API ناپایداراین ممکن است بدون هشدار در نسخههای جزئی تغییر کند.
|
این فریم متناظر با یک تابع استاندارد پایتون است. |
-
PyUnstable_EXECUTABLE_KIND_BUILTIN_FUNCTION¶
این است API ناپایداراین ممکن است بدون هشدار در نسخههای جزئی تغییر کند.
|
این فریم مربوط به تابعی است که در کد بومی تعریف شده است. |
-
PyUnstable_EXECUTABLE_KIND_METHOD_DESCRIPTOR¶
این است API ناپایداراین ممکن است بدون هشدار در نسخههای جزئی تغییر کند.
|
فریم متناظر با متدی روی نمونهای از یک کلاس است. |
توجه کنید که خواندن نوع اجرایی از یک قاب در حال حاضر تنها با APIهای داخلی مستندنشده امکانپذیر است.
اضافه شده در نسخهی 3.13.
-
PyUnstable_EXECUTABLE_KINDS¶
این است API ناپایداراین ممکن است بدون هشدار در نسخههای جزئی تغییر کند.
تعداد ورودیهای PyUnstable_ExecutableKinds.
اضافه شده در نسخهی 3.13.
©
حق نشر 2001 Python Software Foundation.
این صفحه تحت مجوز بنیاد نرمافزار پایتون نسخه ۲ منتشر شده است.
مثالها، دستورالعملها، و سایر کدهای موجود در مستندات همچنین تحت مجوز بدون بند BSD منتشر شدهاند.
برای اطلاعات بیشتر به
تاریخچه و مجوز مراجعه کنید.
بنیاد نرمافزار پایتون یک شرکت غیرانتفاعی است.
لطفاً کمک مالی کنید.
آخرین بهروزرسانی در نوامبر 12, 2026 (06:19 UTC).
آیا
اشکالی یافتید؟
ساخته شده با
Sphinx 9.1.0.