لایه سطح بسیار بالا

توابع این فصل به شما اجازه می‌دهند کد منبع پایتونِ ارائه‌شده در یک پرونده یا بافر را اجرا کنید، اما به شما اجازه نمی‌دهند به شکلی دقیق‌تر با مفسر تعامل کنید.

چندین تابع از میان این توابع، یک نماد آغاز از گرامر را به‌عنوان پارامتر می‌پذیرند. نمادهای آغاز موجود عبارت‌اند از Py_eval_input، Py_file_input، Py_single_input و Py_func_type_input. این نمادها پس از توابعی که آن‌ها را به‌عنوان پارامتر می‌پذیرند، توصیف شده‌اند.

همچنین توجه داشته باشید که تعدادی از این توابع پارامترهای FILE* می‌گیرند. یک مسئله‌ی خاص که باید با دقت به آن پرداخته شود این است که ساختار FILE در کتابخانه‌های C مختلف می‌تواند متفاوت و ناسازگار باشد. در ویندوز (حداقل)، این امکان وجود دارد که ماژول‌های توسعه‌ای با پیوند پویا در واقع از کتابخانه‌های متفاوتی استفاده کنند، بنابراین باید مراقب باشید که پارامترهای FILE* تنها زمانی به این توابع ارسال شوند که مطمئن باشید آن‌ها توسط همان کتابخانه‌ای که ران‌تایم پایتون از آن استفاده می‌کند ایجاد شده‌اند.

int PyRun_AnyFile(FILE *fp, const char *filename)

این یک رابط ساده‌شده برای PyRun_AnyFileExFlags() در پایین است که closeit را روی 0 و flags را روی NULL تنظیم می‌کند.

int PyRun_AnyFileFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)

این یک رابط ساده‌شده برای PyRun_AnyFileExFlags() در ادامه است که در آن، آرگومان closeit روی 0 تنظیم باقی می‌ماند.

int PyRun_AnyFileEx(FILE *fp, const char *filename, int closeit)

این یک رابط ساده‌شده برای PyRun_AnyFileExFlags() در پایین است که آرگومان flags را برابر NULL قرار می‌دهد.

int PyRun_AnyFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)

اگر fp به پرونده‌ای اشاره کند که با یک دستگاه تعاملی (کنسول یا ورودی پایانه یا شبه‌پایانه‌ی یونیکس) مرتبط است، مقدار PyRun_InteractiveLoop() را برمی‌گرداند، در غیر این صورت نتیجه‌ی PyRun_SimpleFile() را برمی‌گرداند. filename از کدگذاری سامانه فایل‌بندی (sys.getfilesystemencoding()) کدگشایی می‌شود. اگر filename برابر NULL باشد، این تابع از "???" به‌عنوان نام پرونده استفاده می‌کند. اگر closeit درست باشد، پرونده پیش از بازگشت PyRun_SimpleFileExFlags() بسته می‌شود.

int PyRun_SimpleString(const char *command)

این یک رابط ساده‌شده برای PyRun_SimpleStringFlags() در پایین است که در آن آرگومان PyCompilerFlags* روی NULL تنظیم‌شده باقی می‌ماند.

int PyRun_SimpleStringFlags(const char *command, PyCompilerFlags *flags)

کد منبع پایتون را از command مطابق با آرگومان flags در ماژول __main__ اجرا می‌کند. اگر __main__ از قبل وجود نداشته باشد، ایجاد می‌شود. در صورت موفقیت 0 و در صورتی که استثنایی رخ داده باشد -1 برمی‌گرداند. اگر خطایی رخ داده باشد، راهی برای به‌دست آوردن اطلاعات استثنا وجود ندارد. برای معنای flags، به ادامه مراجعه کنید.

توجه داشته باشید که اگر استثنای SystemExit که به نحوی دیگر مدیریت‌نشده باشد raise شود، این تابع -1 را برنمی‌گرداند، بلکه فرایند را خاتمه می‌دهد، مادامی که PyConfig.inspect صفر باشد.

int PyRun_SimpleFile(FILE *fp, const char *filename)

این یک رابط ساده‌شده برای PyRun_SimpleFileExFlags() در پایین است که در آن closeit برابر 0 و flags برابر NULL قرار می‌گیرد.

int PyRun_SimpleFileEx(FILE *fp, const char *filename, int closeit)

این یک رابط ساده‌شده برای PyRun_SimpleFileExFlags() در پایین است که flags را برابر NULL قرار می‌دهد.

int PyRun_SimpleFileExFlags(FILE *fp, const char *filename, int closeit, PyCompilerFlags *flags)

مشابه PyRun_SimpleStringFlags() است، اما کد منبع پایتون به‌جای یک رشته‌ی در حافظه، از fp خوانده می‌شود. filename باید نام پرونده باشد؛ این نام با filesystem encoding and error handler کدگشایی می‌شود. اگر closeit درست باشد، پرونده پیش از بازگشت PyRun_SimpleFileExFlags() بسته می‌شود.

توجه

در ویندوز، fp باید در حالت دودویی باز شود (مثلاً fopen(filename, "rb")). در غیر این صورت، ممکن است پایتون پرونده اسکریپت با پایان سطر LF را به‌درستی مدیریت نکند.

int PyRun_InteractiveOneObject(FILE *fp, PyObject *filename, PyCompilerFlags *flags)

یک دستور را از پرونده‌ای که با یک دستگاه تعاملی مرتبط است، مطابق با آرگومان flags می‌خواند و اجرا می‌کند. به کاربر با استفاده از sys.ps1 و sys.ps2 اعلان نمایش داده می‌شود. filename باید یک شیء str پایتون باشد.

اگر ورودی با موفقیت اجرا شده باشد، 0 را برمی‌گرداند؛ اگر استثنایی رخ داده باشد، -1 را؛ و اگر خطای تجزیه رخ داده باشد، کد خطایی از پرونده‌ی include با نام errcode.h که به‌عنوان بخشی از پایتون توزیع می‌شود. (توجه داشته باشید که errcode.h توسط Python.h include نمی‌شود، بنابراین در صورت نیاز باید به‌طور خاص include شود.)

int PyRun_InteractiveOne(FILE *fp, const char *filename)

این یک رابط ساده‌شده برای PyRun_InteractiveOneFlags() در پایین است که در آن flags بر NULL قرار می‌گیرد.

int PyRun_InteractiveOneFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)

مشابه PyRun_InteractiveOneObject()، با این تفاوت که filename یک const char* است که از کدگذاری سامانه فایل‌بندی و هندلر خطا کدگشایی می‌شود.

int PyRun_InteractiveLoop(FILE *fp, const char *filename)

این یک رابط ساده‌شده برای PyRun_InteractiveLoopFlags() در ادامه است که در آن flags بر NULL تنظیم می‌شود.

int PyRun_InteractiveLoopFlags(FILE *fp, const char *filename, PyCompilerFlags *flags)

دستورها را از پرونده‌ای که با یک دستگاه تعاملی مرتبط است می‌خواند و اجرا می‌کند تا زمانی که به EOF برسد. به کاربر با استفاده از sys.ps1 و sys.ps2 اعلان نمایش داده می‌شود. filename از کدگذاری سامانه فایل‌بندی و هندلر خطا کدگشایی می‌شود. در EOF مقدار 0 و در صورت شکست یک عدد منفی برمی‌گرداند.

int (*PyOS_InputHook)(void)
قسمتی از ABI پایدار.

می‌توان آن را طوری تنظیم کرد که به تابعی با پیش‌نمونه‌ی int func(void) اشاره کند. این تابع زمانی فراخوانی می‌شود که اعلان مفسر پایتون در شرف بی‌کار شدن و انتظار برای ورودی کاربر از پایانه باشد. مقدار بازگشتی نادیده گرفته می‌شود. از بازنویسی این قلاب می‌توان برای یکپارچه‌سازی اعلان مفسر با حلقه‌های رویداد دیگر استفاده کرد، همان‌گونه که در Modules/_tkinter.c در کد منبع پایتون انجام شده است.

تغییر یافته در نسخه‌ی 3.12: این تابع فقط از مفسر اصلی فراخوانی می‌شود.

char *(*PyOS_ReadlineFunctionPointer)(FILE*, FILE*, const char*)

می‌تواند برای اشاره به تابعی با پیش‌نمونه‌ی char *func(FILE *stdin, FILE *stdout, char *prompt) تنظیم شود که تابع پیش‌فرضِ استفاده‌شده برای خواندن یک سطر ورودی در اعلان مفسر را بازنویسی می‌کند. انتظار می‌رود این تابع در صورت NULL نبودن prompt، رشته‌ی prompt را به خروجی بفرستد و سپس یک سطر ورودی از پرونده‌ی ورودی استانداردِ ارائه‌شده بخواند و رشته‌ی حاصل را برگرداند. برای مثال، ماژول readline این قلاب را برای فراهم کردن قابلیت‌های ویرایش سطر و تکمیل با کلید Tab تنظیم می‌کند.

نتیجه باید رشته‌ای باشد که توسط PyMem_RawMalloc() یا PyMem_RawRealloc() تخصیص داده‌شده باشد، یا NULL در صورت وقوع خطا.

تغییر یافته در نسخه‌ی 3.4: نتیجه باید توسط PyMem_RawMalloc() یا PyMem_RawRealloc() تخصیص داده شود، نه توسط PyMem_Malloc() یا PyMem_Realloc().

تغییر یافته در نسخه‌ی 3.12: این تابع فقط از مفسر اصلی فراخوانی می‌شود.

PyObject *PyRun_String(const char *str, int start, PyObject *globals, PyObject *locals)
مقدار بازگشتی: مرجع جدید.

این یک رابط ساده‌شده برای PyRun_StringFlags() در ادامه است که در آن flags روی NULL تنظیم می‌شود.

PyObject *PyRun_StringFlags(const char *str, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)
مقدار بازگشتی: مرجع جدید.

کد منبع پایتون را از str در زمینه‌ای که توسط اشیاء globals و locals مشخص شده است، همراه با پرچم‌های کامپایلر که توسط flags مشخص شده‌اند، اجرا می‌کند. globals باید یک دیکشنری باشد؛ locals می‌تواند هر شیئی باشد که پروتکل نگاشت را پیاده‌سازی کند. پارامتر start نماد شروع را مشخص می‌کند و باید یکی از نمادهای شروع موجود باشد.

نتیجه‌ی اجرای کد را به‌صورت یک شیء پایتون برمی‌گرداند، یا در صورت رخ دادن استثنا NULL را برمی‌گرداند.

PyObject *PyRun_File(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals)
مقدار بازگشتی: مرجع جدید.

این یک رابط ساده‌شده برای PyRun_FileExFlags() در پایین است که در آن closeit برابر 0 و flags برابر NULL قرار می‌گیرد.

PyObject *PyRun_FileEx(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit)
مقدار بازگشتی: مرجع جدید.

این یک رابط ساده‌شده برای PyRun_FileExFlags() در ادامه است که flags را روی NULL تنظیم می‌کند.

PyObject *PyRun_FileFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, PyCompilerFlags *flags)
مقدار بازگشتی: مرجع جدید.

این یک رابط ساده‌شده برای PyRun_FileExFlags() در زیر است که در آن closeit روی 0 تنظیم می‌شود.

PyObject *PyRun_FileExFlags(FILE *fp, const char *filename, int start, PyObject *globals, PyObject *locals, int closeit, PyCompilerFlags *flags)
مقدار بازگشتی: مرجع جدید.

مشابه PyRun_StringFlags() است، اما کد منبع پایتون به‌جای یک رشته درون حافظه، از fp خوانده می‌شود. filename باید نام پرونده باشد که از filesystem encoding and error handler کدگشایی می‌شود. اگر closeit درست باشد، پرونده پیش از آنکه PyRun_FileExFlags() بازگردد، بسته می‌شود.

PyObject *Py_CompileString(const char *str, const char *filename, int start)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

این یک رابط ساده‌شده برای Py_CompileStringFlags() در ادامه است که flags را برابر NULL قرار می‌دهد.

PyObject *Py_CompileStringFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags)
مقدار بازگشتی: مرجع جدید.

این یک رابط ساده‌شده برای Py_CompileStringExFlags() در ادامه است که در آن optimize روی -1 تنظیم شده است.

PyObject *Py_CompileStringObject(const char *str, PyObject *filename, int start, PyCompilerFlags *flags, int optimize)
مقدار بازگشتی: مرجع جدید.

کد منبع پایتون موجود در str را تجزیه و کامپایل می‌کند و شیء کد حاصل را برمی‌گرداند. نماد آغازین توسط start تعیین می‌شود؛ از آن می‌توان برای محدود کردن کدی که قابل کامپایل است استفاده کرد و باید یکی از نمادهای آغازین موجود باشد. نام پرونده‌ای که توسط filename مشخص می‌شود برای ساخت شیء کد به کار می‌رود و ممکن است در ردگیری‌های پشته یا پیام‌های استثنای SyntaxError ظاهر شود. اگر کد قابل تجزیه یا کامپایل نباشد، NULL برگردانده می‌شود.

عدد صحیح optimize سطح بهینه‌سازی کامپایلر را مشخص می‌کند؛ مقدار -1 سطح بهینه‌سازی مفسر را همان‌طور که با گزینه‌های -O مشخص شده است انتخاب می‌کند. سطح‌های صریح عبارت‌اند از 0 (بدون بهینه‌سازی؛ __debug__ درست است)، 1 (ادعاها حذف می‌شوند و __debug__ نادرست است) یا 2 (رشته‌های مستند نیز حذف می‌شوند).

اضافه شده در نسخه‌ی 3.4.

PyObject *Py_CompileStringExFlags(const char *str, const char *filename, int start, PyCompilerFlags *flags, int optimize)
مقدار بازگشتی: مرجع جدید.

مانند Py_CompileStringObject()، با این تفاوت که filename یک رشته بایتی است که با کدگذاری سامانه فایل‌بندی و هندلر خطا کدگشایی شده است.

اضافه شده در نسخه‌ی 3.2.

PyObject *PyEval_EvalCode(PyObject *co, PyObject *globals, PyObject *locals)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

این یک رابط ساده‌شده برای PyEval_EvalCodeEx() است که تنها شیء کد و متغیرهای سراسری و محلی را در بر می‌گیرد. سایر آرگومان‌ها روی NULL تنظیم می‌شوند.

PyObject *PyEval_EvalCodeEx(PyObject *co, PyObject *globals, PyObject *locals, PyObject *const *args, int argcount, PyObject *const *kws, int kwcount, PyObject *const *defs, int defcount, PyObject *kwdefs, PyObject *closure)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک شیء کد پیش‌کامپایل‌شده را، با در اختیار داشتن محیطی مشخص برای ارزیابی آن، ارزیابی می‌کند. این محیط شامل یک دیکشنری از متغیرهای سراسری، یک شیء نگاشت از متغیرهای محلی، آرایه‌هایی از آرگومان‌ها، کلیدواژه‌ها و مقادیر پیش‌فرض، یک دیکشنری از مقادیر پیش‌فرض برای آرگومان‌های فقط‌کلیدواژه‌ای و یک تاپل بستار از سلول‌ها است.

PyObject *PyEval_EvalFrame(PyFrameObject *f)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

یک فریم اجرا (execution frame) را ارزیابی می‌کند. این، برای سازگاری با نسخه‌های قبلی، یک رابط ساده‌شده برای PyEval_EvalFrameEx() است.

PyObject *PyEval_EvalFrameEx(PyFrameObject *f, int throwflag)
مقدار بازگشتی: مرجع جدید. قسمتی از ABI پایدار.

این تابع اصلی و بی‌پیرایه‌ی تفسیر پایتون است. شیء کد مرتبط با فریم اجرای f اجرا می‌شود، بایت‌کد تفسیر می‌شود و فراخوانی‌ها در صورت نیاز اجرا می‌شوند. پارامتر اضافی throwflag را می‌توان تا حد زیادی نادیده گرفت — اگر درست باشد، باعث می‌شود یک استثنا بلافاصله پرتاب شود؛ این حالت برای متدهای throw() اشیاء تولیدگر به کار می‌رود.

تغییر یافته در نسخه‌ی 3.4: این تابع اکنون شامل یک ادعای اشکال‌زدایی است که به اطمینان از اینکه استثنای فعال به‌صورت خاموش دور انداخته نمی‌شود کمک می‌کند.

int PyEval_MergeCompilerFlags(PyCompilerFlags *cf)

این تابع پرچم‌های فریم ارزیابی جاری را تغییر می‌دهد و در صورت موفقیت مقدار true و در صورت شکست مقدار false را برمی‌گرداند.

struct PyCompilerFlags

این ساختاری است که برای نگه‌داشتن پرچم‌های کامپایلر استفاده می‌شود. در مواردی که کد فقط کامپایل می‌شود، به‌صورت int flags پاس داده می‌شود، و در مواردی که کد اجرا می‌شود، به‌صورت PyCompilerFlags *flags پاس داده می‌شود. در این حالت، from __future__ import می‌تواند flags را تغییر دهد.

هرگاه PyCompilerFlags *flags برابر NULL باشد، cf_flags برابر با 0 در نظر گرفته می‌شود، و هرگونه تغییر ناشی از from __future__ import دور ریخته می‌شود.

int cf_flags

پرچم‌های کامپایلر.

int cf_feature_version

cf_feature_version نسخه فرعی پایتون است. باید به PY_MINOR_VERSION مقداردهی اولیه شود.

این فیلد به‌طور پیش‌فرض نادیده گرفته می‌شود و اگر و تنها اگر پرچم PyCF_ONLY_AST در cf_flags تنظیم شده باشد، استفاده می‌شود.

تغییر یافته در نسخه‌ی 3.8: فیلد cf_feature_version افزوده شد.

پرچم‌های موجود کامپایلر به‌صورت ماکرو دسترس‌پذیر هستند:

PyCF_ALLOW_TOP_LEVEL_AWAIT
PyCF_ONLY_AST
PyCF_OPTIMIZED_AST
PyCF_TYPE_COMMENTS

به پرچم‌های کامپایلر در مستندات ماژول ast پایتون مراجعه کنید؛ این ماژول این ثابت‌ها را با همین نام‌ها اکسپورت می‌کند.

پرچم‌های سطح پایین

پرچم‌ها و نقاب‌های زیر نیازهای محدود کتابخانه استاندارد و مفسرهای تعاملی را برآورده می‌کنند. کدِ خارج از کتابخانه استاندارد به‌ندرت دلیلی برای استفاده از آن‌ها دارد. این موارد به‌عنوان جزئیات پیاده‌سازی در نظر گرفته می‌شوند و ممکن است در هر زمان تغییر کنند.

PyCF_ALLOW_INCOMPLETE_INPUT

این پرچم یک رابط خصوصی بین کامپایلر و ماژول codeop است. از آن استفاده نکنید؛ رفتار آن پشتیبانی نمی‌شود و ممکن است بدون اطلاع قبلی تغییر کند.

با تنظیم این پرچم، وقتی کامپایل به این دلیل شکست می‌خورد که متن مبدأ در جایی پایان می‌یابد که ورودی بیشتری مورد انتظار است (برای مثال در میانه‌ی یک بلوک تورفته یا یک رشته‌ی لفظی ناتمام)، خطای ایجادشده _IncompleteInputError است؛ زیرکلاسی مستندنشده از SyntaxError. ماژول codeop این پرچم را همراه با PyCF_DONT_IMPLY_DEDENT تنظیم می‌کند تا ورودی ناقص از ورودی‌ای که واقعاً خطای سینتکس دارد تشخیص داده شود و مفسرهای تعاملی بدانند چه زمانی به‌جای گزارش خطا، برای دریافت سطر دیگری اعلانی نمایش دهند.

اضافه شده در نسخه‌ی 3.11.

PyCF_DONT_IMPLY_DEDENT

به‌طور پیش‌فرض، هنگام کامپایل با نماد آغاز Py_single_input، رسیدن به پایان متن مبدأ به‌طور ضمنی همه‌ی بلوک‌های تورفته‌ی باز را می‌بندد. با تنظیم این پرچم، بلوک‌های باز فقط زمانی بسته می‌شوند که آخرین سطر متن مبدأ با سطر جدید تمام شود؛ در غیر این صورت، کامپایل با خطای SyntaxError شکست می‌خورد:

PyCompilerFlags flags = {
    .cf_flags = 0,
    .cf_feature_version = PY_MINOR_VERSION,
};
const char *source = "if a:\n    pass";

/* بلوک «if» به‌طور ضمنی بسته می‌شود؛
   این یک شیء کد برمی‌گرداند: */
Py_CompileStringFlags(source, "<input>", Py_single_input, &flags);

/* با این پرچم، این کار با خطای SyntaxError شکست می‌خورد،
   زیرا سطر آخر به سطر جدید ختم نمی‌شود: */
flags.cf_flags = PyCF_DONT_IMPLY_DEDENT;
Py_CompileStringFlags(source, "<input>", Py_single_input, &flags);

ماژول codeop از این پرچم برای تشخیص ورودی تعاملی ناتمام استفاده می‌کند. هنگامی که کاربر هنوز مشغول تایپ کردن درون یک بلوک تورفته است، کد منبع هنوز به سطر جدید ختم نمی‌شود؛ در نتیجه کامپایل آن شکست می‌خورد و به کاربر اعلان می‌شود تا سطر دیگری وارد کند.

متن منبع را به‌صورت UTF-8 بخوانید و در صورت وجود، اعلان کدگذاری PEP 263 آن («coding cookie») را نادیده بگیرید:

PyCompilerFlags flags = {
    .cf_flags = 0,
    .cf_feature_version = PY_MINOR_VERSION,
};
const char *source = "# coding: latin-1\ns = '\xe9'\n";

/* کوکی کدگذاری (coding cookie) رعایت می‌شود: بایت 0xE9 به‌صورت Latin-1
   کدگشایی می‌شود و این یک شیء کد برمی‌گرداند که s را برابر "é" قرار می‌دهد: */
Py_CompileStringFlags(source, "<input>", Py_file_input, &flags);

/* با این پرچم، کوکی نادیده گرفته می‌شود و کامپایل با خطای SyntaxError
   شکست می‌خورد، زیرا 0xE9 در UTF-8 معتبر نیست: */
flags.cf_flags = PyCF_IGNORE_COOKIE;
Py_CompileStringFlags(source, "<input>", Py_file_input, &flags);

توابع توکار compile()، eval() و exec() این پرچم را زمانی تنظیم می‌کنند که منبع یک شیء str باشد، زیرا متن را با کدگذاری UTF-8 به پارسر ارسال می‌کنند.

PyCF_SOURCE_IS_UTF8

متن مبدأ را به‌عنوان کدگذاری‌شده با UTF-8 علامت‌گذاری می‌کند. توابع توکار compile()، eval() و exec() این پرچم را تنظیم می‌کنند، اما در حال حاضر هیچ اثری ندارد.

پرچم‌های "PyCF" فوق را می‌توان با پرچم‌های "CO_FUTURE" مانند CO_FUTURE_ANNOTATIONS ترکیب کرد تا قابلیت‌هایی که به‌طور معمول با استفاده از دستورهای آینده قابل‌انتخاب هستند، فعال شوند. برای فهرست کامل به پرچم‌های شیء کد مراجعه کنید.

نقاب‌های زیر چندین پرچم را ترکیب می‌کنند:

PyCF_MASK

نقاب بیتی همه پرچم‌های CO_FUTURE (نگاه کنید به پرچم‌های شیء کد)، که قابلیت‌هایی را انتخاب می‌کنند که معمولاً توسط دستورات آینده فعال می‌شوند. هنگامی که در کد کامپایل‌شده با آرگومان PyCompilerFlags *flags دستور from __future__ import وجود داشته باشد، پرچم قابلیت ایمپورت‌شده به flags افزوده می‌شود تا کدی که بعداً در همان زمینه اجرا می‌شود، آن را به ارث ببرد.

PyCF_MASK_OBSOLETE

از این نقاب در کد جدید استفاده نکنید. این نقاب فقط برای این نگه داشته شده است که کدهای قدیمی که پرچم‌های آن را به compile() ارسال می‌کنند، همچنان کار کنند.

نقاب بیتی پرچم‌های ویژگی‌های آینده‌ی منسوخ که دیگر هیچ تأثیری ندارند.

PyCF_COMPILE_MASK

نقاب بیتی همه‌ی پرچم‌های PyCF که نحوه‌ی کامپایل کد منبع را تغییر می‌دهند، مانند PyCF_ONLY_AST. تابع توکار compile() از این نقاب برای اعتبارسنجی آرگومان flags خود استفاده می‌کند.

نمادهای شروعِ در دسترس

int Py_eval_input

نماد آغاز از گرامر پایتون برای عبارت‌های مجزا؛ برای استفاده با Py_CompileString().

int Py_file_input

نماد شروع از گرامر پایتون برای دنباله‌های دستور، همان‌گونه که از یک پرونده یا منبع دیگر خوانده می‌شوند؛ برای استفاده همراه با Py_CompileString(). این نمادی است که هنگام کامپایل کردن کد منبع پایتون با طول دلخواه، باید از آن استفاده کنید.

int Py_single_input

نماد آغاز از گرامر پایتون برای یک دستور؛ برای استفاده با Py_CompileString(). این نمادی است که در حلقه‌ی مفسر تعاملی استفاده می‌شود.

int Py_func_type_input

نماد شروع از گرامر پایتون برای نوع تابع؛ برای استفاده با Py_CompileString(). از این برای تجزیه‌ی «کامنت‌های نوع امضا» از PEP 484 استفاده می‌شود.

این نیازمند آن است که پرچم PyCF_ONLY_AST تنظیم‌شده باشد.

همچنین ملاحظه نمائید

اضافه شده در نسخه‌ی 3.8.

اثرات پشته

همچنین ملاحظه نمائید

dis.stack_effect()

PY_INVALID_STACK_EFFECT

مقدار نشانگر که اثر پشته‌ی نامعتبر را نمایان می‌کند.

این در حال حاضر معادل INT_MAX است.

اضافه شده در نسخه‌ی 3.8.

int PyCompile_OpcodeStackEffect(int opcode, int oparg)

اثر پشته‌ای (stack effect) opcode را با آرگومان oparg محاسبه می‌کند.

در صورت موفقیت، این تابع اثر پشته (stack effect) را برمی‌گرداند؛ در صورت شکست، PY_INVALID_STACK_EFFECT را برمی‌گرداند.

اضافه شده در نسخه‌ی 3.4.

int PyCompile_OpcodeStackEffectWithJump(int opcode, int oparg, int jump)

مشابه PyCompile_OpcodeStackEffect() است، اما اگر jump صفر باشد، اثر پشته‌ی پرش را در بر نمی‌گیرد.

اگر jump برابر 0 باشد، اثر پرش روی پشته در آن لحاظ نمی‌شود، اما اگر jump برابر 1 یا -1 باشد، در آن لحاظ می‌شود.

در صورت موفقیت، این تابع اثر پشته (stack effect) را برمی‌گرداند؛ در صورت شکست، PY_INVALID_STACK_EFFECT را برمی‌گرداند.

اضافه شده در نسخه‌ی 3.8.