لایه سطح بسیار بالا¶
توابع این فصل به شما اجازه میدهند کد منبع پایتونِ ارائهشده در یک پرونده یا بافر را اجرا کنید، اما به شما اجازه نمیدهند به شکلی دقیقتر با مفسر تعامل کنید.
چندین تابع از میان این توابع، یک نماد آغاز از گرامر را بهعنوان پارامتر میپذیرند. نمادهای آغاز موجود عبارتاند از 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.hinclude نمیشود، بنابراین در صورت نیاز باید بهطور خاص 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از این پرچم برای تشخیص ورودی تعاملی ناتمام استفاده میکند. هنگامی که کاربر هنوز مشغول تایپ کردن درون یک بلوک تورفته است، کد منبع هنوز به سطر جدید ختم نمیشود؛ در نتیجه کامپایل آن شکست میخورد و به کاربر اعلان میشود تا سطر دیگری وارد کند.
-
PyCF_IGNORE_COOKIE¶
متن منبع را بهصورت 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 cf_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.
اثرات پشته¶
همچنین ملاحظه نمائید
-
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.