sys --- پارامترها و توابع مختص سیستم¶
این ماژول دسترسی به برخی متغیرهایی که توسط مفسر استفاده یا نگهداری میشوند و به توابعی که تعامل قوی با مفسر دارند را فراهم میکند. این ماژول همیشه در دسترس است. مگر آنکه بهصراحت خلاف آن ذکر شده باشد، همه متغیرها فقطخواندنی هستند.
- sys.abiflags¶
در سیستمهای POSIX که پایتون با اسکریپت استاندارد
configureساخته شده است، این شامل پرچمهای ABI میشود، همانطور که در PEP 3149 مشخص شده است.اضافه شده در نسخهی 3.2.
تغییر یافته در نسخهی 3.8: پرچمهای پیشفرض به یک رشته خالی تبدیل شدند (پرچم
mبرای pymalloc حذف شده است).دسترسپذیری: Unix.
- sys.addaudithook(hook)¶
hook فراخوانیپذیر را به فهرست قلابهای حسابرسی فعال برای (زیر)مفسر جاری میافزاید.
هنگامی که یک رویداد حسابرسی از طریق تابع
sys.audit()پرتاب میشود، هر قلاب به ترتیبی که اضافهشده است، با نام رویداد و تاپل آرگومانها فراخوانی میشود. قلابهای بومی اضافهشده توسطPySys_AddAuditHook()ابتدا فراخوانی میشوند و پس از آنها، قلابهای اضافهشده در (زیر)مفسر جاری فراخوانی میشوند. سپس قلابها میتوانند رویداد را ثبت کنند، استثنایی را برای لغو عملیات پرتاب کنند، یا فرایند را بهطور کامل خاتمه دهند.توجه داشته باشید که قلابهای حسابرسی (audit hooks) عمدتاً برای جمعآوری اطلاعات درباره اعمال داخلی یا اعمالی که بهطریق دیگر قابل مشاهده نیستند، چه از سوی پایتون و چه از سوی کتابخانههای نوشتهشده با پایتون، به کار میروند. آنها برای پیادهسازی یک «سندباکس» مناسب نیستند. بهویژه، کد مخرب میتواند بهسادگی قلابهای اضافهشده با این تابع را غیرفعال یا دور بزند. دستکم، هر قلاب حساس از نظر امنیتی باید پیش از مقداردهی اولیه رانتایم با استفاده از C API یعنی
PySys_AddAuditHook()اضافه شود، و هر ماژولی که امکان تغییر دلخواه حافظه را فراهم میکند (مانندctypes) باید بهطور کامل حذف شود یا بهدقت پایش شود.فراخوانی
sys.addaudithook()بهخودیخود یک رویداد حسابرسی به نامsys.addaudithookرا بدون آرگومان پرتاب میکند. اگر هر یک از قلابهای موجود استثنایی مشتقشده ازRuntimeErrorرا پرتاب کنند، قلاب جدید اضافه نخواهد شد و استثنا مهار خواهد شد. در نتیجه، فراخوانندگان نمیتوانند فرض کنند که قلاب آنها اضافه شده است، مگر اینکه همه قلابهای موجود را کنترل کنند.برای همهی رویدادهای پرتابشده از سوی CPython، جدول رویدادهای حسابرسی و برای بحث طراحی اصلی، PEP 578 را ببینید.
اضافه شده در نسخهی 3.8.
تغییر یافته در نسخهی 3.8.1: استثناهایی که از
Exceptionمشتق شدهاند، اما ازRuntimeErrorمشتق نشدهاند، دیگر سرکوب نمیشوند.هنگامی که ردگیری فعال شده باشد (به
settrace()مراجعه کنید)، قلابهای پایتون (hooks) تنها در صورتی ردگیری میشوند که شیء فراخوانیپذیر دارای یک عضو__cantrace__باشد که روی یک مقدار درست تنظیم شده باشد. در غیر این صورت، توابع ردگیری از قلاب میگذرند.
- sys.argv¶
فهرست آرگومانهای خط فرمانی که به یک اسکریپت پایتون داده شدهاند.
argv[0]نام اسکریپت است (اینکه این مقدار مسیر کامل باشد یا نه، به سیستمعامل وابسته است). اگر فرمان با استفاده از گزینهی خط فرمان-cبرای مفسر اجرا شده باشد،argv[0]به رشتهی'-c'تنظیم میشود. اگر هیچ نام اسکریپتی به مفسر پایتون داده نشده باشد،argv[0]رشتهی خالی است.برای حلقه زدن روی ورودی استاندارد، یا فهرست پروندههای دادهشده در خط فرمان، ماژول
fileinputرا ببینید.همچنین
sys.orig_argvرا ببینید.توجه
در یونیکس، آرگومانهای خط فرمان بهصورت بایت از سوی سیستمعامل منتقل میشوند. پایتون آنها را با کدگذاری سامانه فایلبندی و هندلر خطای "surrogateescape" کدگشایی میکند. وقتی به بایتهای اصلی نیاز دارید، میتوانید آنها را با
[os.fsencode(arg) for arg in sys.argv]دریافت کنید.
- sys.audit(event, *args)¶
یک رویداد حسابرسی را پرتاب میکند و هر یک از قلابهای حسابرسی فعال را به کار میاندازد. event یک رشته است که رویداد را مشخص میکند، و args ممکن است شامل آرگومانهای اختیاری با اطلاعات بیشتر درباره رویداد باشد. تعداد و انواع آرگومانهای یک رویداد معین، یک API عمومی و پایدار محسوب میشود و نباید بین انتشارها تغییر کند.
برای مثال، یک رویداد حسابرسی
os.chdirنام دارد. این رویداد یک آرگومان به نام path دارد که شامل پوشه کاری جدید درخواستشده خواهد بود.sys.audit()قلابهای حسابرسی موجود را فراخوانی میکند، نام رویداد و آرگومانها را به آنها منتقل میکند و نخستین استثنای پرتابشده از سوی هر یک از قلابها را دوباره پرتاب میکند. بهطور کلی، اگر استثنایی پرتاب شد، نباید آن را مدیریت کرد و فرایند باید تا حد ممکن بهسرعت خاتمه یابد. این امکان را به پیادهسازیهای قلاب میدهد تا تصمیم بگیرند چگونه به رویدادهای خاص پاسخ دهند: آنها میتوانند صرفاً رویداد را ثبت کنند یا عملیات را با پرتاب یک استثنا متوقف کنند.قلابها (hooks) با استفاده از توابع
sys.addaudithook()یاPySys_AddAuditHook()افزوده میشوند.معادل بومی این تابع
PySys_Audit()است. در صورت امکان، استفاده از تابع بومی ترجیح دارد.برای مشاهده همه رویدادهای پرتابشده توسط CPython، به جدول رویدادهای حسابرسی مراجعه کنید.
اضافه شده در نسخهی 3.8.
- sys.base_exec_prefix¶
معادل
exec_prefixاست، اما به نصب پایهی پایتون اشاره دارد.هنگام اجرا تحت محیطهای مجازی، مقدار
exec_prefixبه پیشوند محیط مجازی بازنویسی میشود. در مقابل،base_exec_prefixتغییر نمیکند و همیشه به نصب پایه پایتون اشاره دارد. برای اطلاعات بیشتر به محیطهای مجازی مراجعه کنید.اضافه شده در نسخهی 3.3.
- sys.base_prefix¶
معادل
prefixاست، اما به نصب پایهی پایتون اشاره میکند.هنگام اجرا در محیط مجازی،
prefixبا پیشوند محیط مجازی بازنویسی میشود. در مقابل،base_prefixتغییر نمیکند و همیشه به نصب پایهی پایتون اشاره میکند. برای اطلاعات بیشتر به محیطهای مجازی مراجعه کنید.اضافه شده در نسخهی 3.3.
- sys.byteorder¶
نشانگری از ترتیب بایت بومی. این نشانگر در سکوهای بزرگاندیان (big-endian، بایت با بیشترین اهمیت در ابتدا) دارای مقدار
'big'و در سکوهای کوچکاندیان (little-endian، بایت با کمترین اهمیت در ابتدا) دارای مقدار'little'خواهد بود.
- sys.builtin_module_names¶
تاپلی از رشتهها که شامل نام تمام ماژولهای کامپایلشده در این مفسر پایتون است. (این اطلاعات به هیچ روش دیگری در دسترس نیست ---
modules.keys()فقط ماژولهای ایمپورتشده را فهرست میکند.)همچنین فهرست
sys.stdlib_module_namesرا ببینید.
- sys.call_tracing(func, args)¶
func(*args)را، در حالی که ردگیری فعال است، فراخوانی میکند. وضعیت ردگیری ذخیره میشود و پس از آن بازیابی میشود. این برای فراخوانی از یک اشکالزدا از یک نقطه بازرسی (checkpoint) در نظر گرفته شده است، تا بتوان کد دیگری را بهصورت بازگشتی اشکالزدایی یا پروفایل (profile) کرد.ردگیری هنگام فراخوانی تابع ردگیری تنظیمشده توسط
settrace()یاsetprofile()، معلق میشود تا از بازگشت بینهایت جلوگیری شود.call_tracing()بازگشت صریح تابع ردگیری را فعال میکند.
- sys.copyright¶
رشتهای شامل حق نشر مربوط به مفسر پایتون.
- sys._clear_type_cache()¶
نهانگاه نوع داخلی را پاک کنید. نهانگاه نوع برای تسریع جستوجوی ویژگیها و متدها استفاده میشود. از این تابع فقط برای حذف ارجاعهای غیرضروری در حین اشکالزدایی نشت ارجاع استفاده کنید.
این تابع باید تنها برای اهداف داخلی و تخصصی استفاده شود.
منسوخ شده از نسخهی 3.13: بهجای آن از تابع عمومیتر
_clear_internal_caches()استفاده کنید.
- sys._clear_internal_caches()¶
تمام نهانگاههای داخلی مرتبط با کارایی را پاکسازی کنید. از این تابع فقط برای آزادسازی ارجاعها و بلوکهای حافظه غیرضروری هنگام جستوجو برای نشتها استفاده کنید.
اضافه شده در نسخهی 3.13.
- sys._current_frames()¶
دیکشنریای برمیگرداند که شناسهی هر نخ را به بالاترین فریم پشتهی فعال در آن نخ در زمان فراخوانی تابع نگاشت میکند. توجه داشته باشید که توابع موجود در ماژول
tracebackمیتوانند با داشتن چنین فریمی، پشته فراخوانی را بسازند.این برای اشکالزدایی بنبست بسیار مفید است: این تابع به همکاری نخهای دچار بنبست نیازی ندارد، و پشتههای فراخوانی چنین نخهایی تا زمانی که در بنبست باقی بمانند، ثابت میمانند. فریم برگرداندهشده برای نخی که در بنبست نیست ممکن است هنگامی که کد فراخوانیکننده فریم را بررسی میکند، هیچ ارتباطی با فعالیت کنونی آن نخ نداشته باشد.
این تابع باید تنها برای اهداف داخلی و تخصصی استفاده شود.
یک رویداد حسابرسی
sys._current_framesرا بدون آرگومان پرتاب میکند.
- sys._current_exceptions()¶
یک دیکشنری برمیگرداند که شناسهی هر نخ را به بالاترین استثنای فعال در آن نخ در زمان فراخوانی تابع نگاشت میکند. اگر نخی در حال حاضر در حال مدیریت یک استثنا نباشد، در دیکشنری نتیجه گنجانده نمیشود.
این بیشترین کاربرد را در پروفایلگیری آماری دارد.
این تابع باید تنها برای اهداف داخلی و تخصصی استفاده شود.
یک رویداد حسابرسی
sys._current_exceptionsرا بدون آرگومان پرتاب میکند.تغییر یافته در نسخهی 3.12: هر مقدار در دیکشنری اکنون یک نمونه استثنای واحد است، نه یک ۳-تایی (3-tuple) مانند آنچه از
sys.exc_info()برگردانده میشود.
- sys.breakpointhook()¶
این تابع قلاب توسط
breakpoint()توکار فراخوانی میشود. بهطور پیشفرض، شما را در اشکالزداpdbقرار میدهد، اما میتوان آن را روی هر تابع دیگری تنظیم کرد تا بتوانید انتخاب کنید کدام اشکالزدا استفاده میشود.امضای این تابع به آنچه فراخوانی میکند وابسته است. برای مثال، اتصال پیشفرض (مثلاً
pdb.set_trace()) هیچ آرگومانی نمیپذیرد، اما ممکن است آن را به تابعی مقید کنید که آرگومانهای اضافی (جایگاهی و/یا کلیدواژهای) میپذیرد. تابع توکارbreakpoint()،*argsو**kwsخود را مستقیماً منتقل میکند. هر چهbreakpointhooks()برگرداند، ازbreakpoint()برگردانده میشود.پیادهسازی پیشفرض ابتدا متغیر محیطی
PYTHONBREAKPOINTرا بررسی میکند. اگر این متغیر روی"0"تنظیم شده باشد، این تابع بلافاصله برمیگردد؛ یعنی یک عملیات بیاثر (no-op) است. اگر متغیر محیطی تنظیم نشده باشد، یا روی رشته خالی تنظیم شده باشد،pdb.set_trace()فراخوانی میشود. در غیر این صورت، این متغیر باید با استفاده از نامگذاری ایمپورت نقطهدار پایتون، نام تابعی را برای اجرا مشخص کند؛ برای مثالpackage.subpackage.module.function. در این حالت،package.subpackage.moduleایمپورت میشود و ماژول حاصل باید یک شیء قابل فراخوانی به نامfunction()داشته باشد. این تابع اجرا میشود، در حالی که*argsو**kwsبه آن ارسال میشوند، و هر چهfunction()برگرداند،sys.breakpointhook()همان را به تابع توکارbreakpoint()برمیگرداند.توجه داشته باشید که اگر هنگام ایمپورت شیء فراخوانیپذیر مشخصشده توسط
PYTHONBREAKPOINTمشکلی پیش بیاید، یکRuntimeWarningگزارش داده میشود و نقطه توقف نادیده گرفته میشود.همچنین توجه داشته باشید که اگر
sys.breakpointhook()بهصورت برنامهای بازنویسی شود، بهPYTHONBREAKPOINTمراجعه نمیشود.اضافه شده در نسخهی 3.7.
- sys._debugmallocstats()¶
اطلاعات سطح پایین را درباره وضعیت تخصیصدهنده حافظه CPython در stderr چاپ میکند.
اگر پایتون در حالت اشکالزدایی ساختهشده باشد (
configure --with-pydebug option)، همچنین برخی بررسیهای پرهزینهی سازگاری درونی را نیز انجام میدهد.اضافه شده در نسخهی 3.3.
این تابع مختص CPython است. قالب دقیق خروجی در اینجا تعریف نشده است و ممکن است تغییر کند.
- sys.dllhandle¶
عدد صحیحی که دسته DLL پایتون را مشخص میکند.
دسترسپذیری: Windows.
- sys.displayhook(value)¶
اگر value
Noneنباشد، این تابعrepr(value)را درsys.stdoutچاپ میکند و value را درbuiltins._ذخیره میکند. اگرrepr(value)با هندلر خطایsys.stdout.errors(که احتمالاً'strict'است) بهsys.stdout.encodingقابل کدگذاری نباشد، آن را با هندلر خطای'backslashreplace'بهsys.stdout.encodingکدگذاری میکند.sys.displayhookبرای نتیجهی ارزیابی یک عبارت واردشده در یک نشست تعاملی پایتون فراخوانی میشود. نمایش این مقادیر را میتوان با انتساب تابع یکآرگومانی دیگری بهsys.displayhookسفارشی کرد.شبهکد:
def displayhook(value): if value is None: return # Set '_' to None to avoid recursion builtins._ = None text = repr(value) try: sys.stdout.write(text) except UnicodeEncodeError: bytes = text.encode(sys.stdout.encoding, 'backslashreplace') if hasattr(sys.stdout, 'buffer'): sys.stdout.buffer.write(bytes) else: text = bytes.decode(sys.stdout.encoding, 'strict') sys.stdout.write(text) sys.stdout.write("\n") builtins._ = value
تغییر یافته در نسخهی 3.2: برای
UnicodeEncodeErrorاز هندلر خطای'backslashreplace'استفاده کنید.
- sys.dont_write_bytecode¶
اگر این مقدار درست باشد، پایتون تلاشی برای نوشتن پروندههای
.pycهنگام ایمپورت ماژولهای منبع نمیکند. این مقدار در ابتدا بسته به گزینه خط فرمان-Bو متغیر محیطیPYTHONDONTWRITEBYTECODEرویTrueیاFalseتنظیم میشود، اما میتوانید خودتان آن را برای کنترل تولید پروندههای بایتکد تنظیم کنید.
- sys._emscripten_info¶
یک named tuple حاوی اطلاعات درباره محیط سکوی wasm32-emscripten. این named tuple موقتی است و ممکن است در آینده تغییر کند.
- _emscripten_info.emscripten_version¶
نسخه Emscripten بهصورت تاپلی از اعداد صحیح (اصلی، فرعی، میکرو)، برای مثال
(3, 1, 8).
- _emscripten_info.runtime¶
رشتهی رانتایم، مثلاً عامل کاربری مرورگر،
'Node.js v14.18.2'، یا'UNKNOWN'.
- _emscripten_info.pthreads¶
Trueاگر پایتون با پشتیبانی از pthreads در Emscripten کامپایلشده باشد.
Trueاگر پایتون با پشتیبانی از حافظهی مشترک کامپایل شده باشد.
دسترسپذیری: Emscripten.
اضافه شده در نسخهی 3.11.
- sys.pycache_prefix¶
اگر این مقدار تنظیم شده باشد (
Noneنباشد)، پایتون پروندههای.pycنهانگاه بایتکد را در یک درخت پوشهای موازی که ریشهی آن این پوشه است مینویسد (و آنها را از همان میخواند)، نه از پوشههای__pycache__در درخت کد منبع. هر پوشهی__pycache__در درخت کد منبع نادیده گرفته خواهد شد و پروندههای.pycجدید درون پیشوند pycache نوشته میشوند. بنابراین اگر ازcompileallبهعنوان یک مرحلهی پیش از ساخت استفاده میکنید، باید اطمینان حاصل کنید که آن را با همان پیشوند pycache (در صورت وجود) اجرا میکنید که در رانتایم استفاده خواهید کرد.مسیر نسبی نسبت به پوشه کاری جاری تفسیر میشود.
این مقدار در ابتدا بر اساس مقدار گزینه خط فرمان
-Xpycache_prefix=PATHیا متغیر محیطیPYTHONPYCACHEPREFIXتنظیم میشود (خط فرمان اولویت دارد). اگر هیچکدام تنظیم نشده باشند،Noneاست.اضافه شده در نسخهی 3.8.
- sys.excepthook(type, value, traceback)¶
این تابع یک ردگیری پشته و استثنای دادهشده را در
sys.stderrچاپ میکند.هنگامی که استثنایی غیر از
SystemExitپرتاب شود و گرفته نشود، مفسرsys.excepthookرا با سه آرگومان فراخوانی میکند: کلاس استثنا، نمونه استثنا، و یک شیء ردگیری پشته. در یک نشست تعاملی، این اتفاق درست پیش از بازگشت کنترل به اعلان خط فرمان رخ میدهد؛ در یک برنامه پایتون، این اتفاق درست پیش از خروج برنامه رخ میدهد. مدیریت چنین استثناهای سطحبالایی را میتوان با انتساب تابع دیگری با سه آرگومان بهsys.excepthookسفارشیسازی کرد.هنگامی که استثنای گرفتهنشدهای رخ دهد، یک رویداد حسابرسی
sys.excepthookبا آرگومانهایhook،type،value،tracebackپرتاب میشود. اگر هیچ قلابی تنظیم نشده باشد، ممکن استhookبرابرNoneباشد. اگر هر قلابی استثنایی مشتقشده ازRuntimeErrorپرتاب کند، فراخوانی آن قلاب سرکوب خواهد شد. در غیر این صورت، استثنای قلاب حسابرسی بهعنوان غیرقابلپرتاب گزارش خواهد شد وsys.excepthookفراخوانی خواهد شد.همچنین ملاحظه نمائید
تابع
sys.unraisablehook()استثناهای غیرقابلپرتاب را مدیریت میکند و تابعthreading.excepthook()استثنای پرتابشده توسطthreading.Thread.run()را مدیریت میکند.
- sys.__breakpointhook__¶
- sys.__displayhook__¶
- sys.__excepthook__¶
- sys.__unraisablehook__¶
این اشیاء شامل مقادیر اصلی
breakpointhook،displayhook،excepthookوunraisablehookدر آغاز برنامه هستند. آنها ذخیره میشوند تاbreakpointhook،displayhook،excepthookوunraisablehookدر صورتی که احیاناً با اشیای خراب یا جایگزین جایگزین شده باشند، بازگردانی شوند.اضافه شده در نسخهی 3.7: __breakpointhook__
اضافه شده در نسخهی 3.8: __unraisablehook__
- sys.exception()¶
این تابع، هنگامی که در حین اجرای یک مدیر استثنا فراخوانی شود (مانند یک بند
exceptیاexcept*)، نمونهی استثنای گرفتهشده توسط این مدیر را برمیگرداند. هنگامی که هندلرهای استثنا در یکدیگر تودرتو شده باشند، تنها استثنای مدیریتشده توسط داخلیترین مدیر قابل دسترسی است.اگر هیچ هندلر استثنایی در حال اجرا نباشد، این تابع
Noneرا بازمیگرداند.اضافه شده در نسخهی 3.11.
- sys.exc_info()¶
این تابع بازنمایی به سبک قدیمی استثنای مدیریتشده را برمیگرداند. اگر یک استثنا
eدر حال حاضر مدیریت شده باشد (بهطوری کهexception()مقدارeرا برمیگرداند)،exc_info()تاپل(type(e), e, e.__traceback__)را برمیگرداند. یعنی تاپلی شامل نوع استثنا (یک زیرکلاس ازBaseException)، خود استثنا، و یک شیء ردگیری پشته که معمولاً پشته فراخوانی را در نقطهای که استثنا آخرین بار در آن رخ داده است در بر میگیرد.اگر هیچ استثنایی در هیچ نقطهای از پشته مدیریت نشود، این تابع یک تاپل شامل سه مقدار
Noneبرمیگرداند.تغییر یافته در نسخهی 3.11: فیلدهای
typeوtracebackاکنون ازvalue(نمونه استثنا) به دست میآیند، بنابراین هنگامی که یک استثنا در حین مدیریت تغییر داده میشود، تغییرات در نتایج فراخوانیهای بعدیexc_info()منعکس میشوند.
- sys.exec_prefix¶
رشتهای که پیشوند پوشهی مختص سایت را مشخص میکند؛ جایی که پروندههای پایتون وابسته به پلتفرم در آن نصب میشوند؛ بهطور پیشفرض، این مقدار نیز
'/usr/local'است. این مقدار را میتوان در زمان ساخت با آرگومان--exec-prefixاسکریپت configure تنظیم کرد. بهطور مشخص، همهی پروندههای پیکربندی (مانند پروندهی سرآیندpyconfig.h) در پوشهیexec_prefix/lib/pythonX.Y/configنصب میشوند و ماژولهای کتابخانهی اشتراکی درexec_prefix/lib/pythonX.Y/lib-dynloadنصب میشوند، که در آن X.Y شمارهی نسخهی پایتون است، برای مثال3.2.توجه
اگر یک محیط مجازی فعال باشد، این
exec_prefixبه محیط مجازی اشاره خواهد کرد. مقدار مربوط به نصب پایتون همچنان از طریقbase_exec_prefixدر دسترس خواهد بود. برای اطلاعات بیشتر به محیطهای مجازی مراجعه کنید.تغییر یافته در نسخهی 3.14: هنگام اجرا در یک محیط مجازی،
prefixوexec_prefixاکنون بهجایsiteتوسط راهاندازی مسیر به پیشوند محیط مجازی تنظیم میشوند. این بدان معناست کهprefixوexec_prefixهمیشه به محیط مجازی اشاره میکنند، حتی زمانی کهsiteغیرفعال باشد (-S).
- sys.executable¶
رشتهای که مسیر مطلق دودویی اجرایی مفسر پایتون را در سیستمهایی که این موضوع در آنها معنا دارد، نشان میدهد. اگر پایتون قادر به دریافت مسیر واقعی پرونده اجرایی خود نباشد،
sys.executableیک رشته خالی یاNoneخواهد بود.
- sys.exit([arg])¶
یک استثنای
SystemExitرا پرتاب میکند، که قصد خروج از مفسر را نشان میدهد.آرگومان اختیاری arg میتواند یک عدد صحیح باشد که وضعیت خروج را مشخص میکند (پیشفرض آن صفر است)، یا شیءای از نوع دیگر. اگر عدد صحیح باشد، صفر از سوی پوستهها و امثال آن «خاتمهی موفق» و هر مقدار ناصفر «خاتمهی غیرعادی» تلقی میشود. در بیشتر سیستمها، این مقدار باید در محدودهی ۰ تا ۱۲۷ باشد؛ در غیر این صورت نتایج تعریفنشدهای تولید میشود. برخی سیستمها برای اختصاص معانی خاص به کدهای خروج خاص قراردادی دارند، اما این قراردادها عموماً چندان توسعهیافته نیستند؛ برنامههای یونیکس معمولاً از ۲ برای خطاهای سینتکس خط فرمان و از ۱ برای تمام انواع دیگر خطاها استفاده میکنند. اگر شیءای از نوع دیگر ارسال شود،
Noneمعادل ارسال صفر است و هر شیء دیگری درstderrچاپ میشود و به کد خروج ۱ منجر میشود. بهویژه،sys.exit("some error message")راهی سریع برای خروج از برنامه هنگام وقوع خطا است.از آنجا که
exit()در نهایت «فقط» یک استثنا پرتاب میکند، تنها زمانی فرایند را خاتمه میدهد که از نخ اصلی فراخوانی شود و استثنا رهگیری نشده باشد. اقدامات پاکسازی مشخصشده توسط بندهای finally در دستوراتtryاجرا میشوند و میتوان تلاش برای خروج را در سطحی بیرونی رهگیری کرد.تغییر یافته در نسخهی 3.6: اگر در پاکسازی، پس از آنکه مفسر پایتون
SystemExitرا گرفته باشد، خطایی رخ دهد (مانند خطا در تخلیهی دادههای بافریشده در جریانهای استاندارد)، وضعیت خروج به ۱۲۰ تغییر مییابد.
- sys.flags¶
named tuple flags وضعیت پرچمهای خط فرمان را نشان میدهد. پرچمها باید تنها با نام و نه با اندیس مورد دسترسی قرار گیرند. ویژگیها فقطخواندنی هستند.
- flags.debug¶
- flags.inspect¶
- flags.interactive¶
- flags.isolated¶
- flags.optimize¶
- flags.dont_write_bytecode¶
- flags.no_user_site¶
- flags.no_site¶
- flags.ignore_environment¶
- flags.verbose¶
- flags.bytes_warning¶
- flags.quiet¶
- flags.hash_randomization¶
- flags.dev_mode¶
- flags.utf8_mode¶
- flags.safe_path¶
- flags.int_max_str_digits¶
- flags.warn_default_encoding¶
- flags.gil¶
- flags.thread_inherit_context¶
- flags.context_aware_warnings¶
تغییر یافته در نسخهی 3.2: ویژگی
quietبرای پرچم جدید-qافزوده شد.اضافه شده در نسخهی 3.2.3: ویژگی
hash_randomization.تغییر یافته در نسخهی 3.3: ویژگی منسوخ
division_warningحذف شد.تغییر یافته در نسخهی 3.4: ویژگی
isolatedبرای پرچمisolatedدر-Iافزوده شد.تغییر یافته در نسخهی 3.7: ویژگی
dev_modeبرای حالت توسعه پایتون جدید و ویژگیutf8_modeبرای پرچمutf8جدید-Xافزوده شدند.تغییر یافته در نسخهی 3.10: ویژگی
warn_default_encodingبرای پرچم-Xwarn_default_encodingافزوده شد.تغییر یافته در نسخهی 3.11: ویژگی
safe_pathبرای گزینهی-Pافزوده شد.تغییر یافته در نسخهی 3.11: ویژگی
int_max_str_digitsاضافه شد.تغییر یافته در نسخهی 3.13: ویژگی
gilافزوده شد.تغییر یافته در نسخهی 3.14: ویژگی
thread_inherit_contextافزوده شد.تغییر یافته در نسخهی 3.14: ویژگی
context_aware_warningsافزوده شد.
- sys.float_info¶
یک تاپل نامدار (named tuple) حاوی اطلاعاتی درباره نوع float است. این شامل اطلاعات سطح پایین درباره دقت و نمایش داخلی است. مقادیر با ثابتهای مختلف ممیز شناور تعریفشده در پروندهی سرآیند استاندارد
float.hبرای زبان برنامهنویسی C مطابقت دارند؛ برای جزئیات، بخش ۵.۲.۴.۲.۲ از استاندارد ISO/IEC C سال ۱۹۹۹ [C99]، «مشخصات انواع ممیز شناور» را ببینید.ویژگیهای named tuple float_info¶ویژگی
ماکروی float.h
توضیح
- float_info.epsilon¶
DBL_EPSILONتفاوت میان 1.0 و کمترین مقدار بزرگتر از 1.0 که بهصورت یک عدد اعشاری قابلنمایش است.
همچنین ببینید
math.ulp().- float_info.dig¶
DBL_DIGحداکثر تعداد ارقام اعشاری که میتوانند بهصورت امانتدارانه در یک شناور بازنمایی شوند؛ در ادامه ببینید.
- float_info.mant_dig¶
DBL_MANT_DIGدقت عدد اعشاری: تعداد ارقام مبنای
radixدر بخش معنادار (significand) یک عدد اعشاری.- float_info.max¶
DBL_MAXبیشترین عدد اعشاری مثبت متناهی قابل نمایش.
- float_info.max_exp¶
DBL_MAX_EXPبزرگترین عدد صحیح e بهطوری که
radix**(e-1)یک عدد اعشاری متناهی قابلنمایش باشد.- float_info.max_10_exp¶
DBL_MAX_10_EXPبزرگترین عدد صحیح e که
10**eدر بازهی اعداد اعشاری متناهی قابلنمایش باشد.- float_info.min¶
DBL_MINکمینه عدد اعشاری مثبت نرمالشده قابل بازنمایی.
برای به دست آوردن کوچکترین شناور مثبت غیرنرمال (denormalized) قابل نمایش از
math.ulp(0.0)استفاده کنید.- float_info.min_exp¶
DBL_MIN_EXPکمترین عدد صحیح e بهطوریکه
radix**(e-1)یک شناور نرمالشده باشد.- float_info.min_10_exp¶
DBL_MIN_10_EXPکمترین عدد صحیح e بهطوری که
10**eیک شناور نرمالشده باشد.- float_info.radix¶
FLT_RADIXمبنای نمایش توان.
- float_info.rounds¶
FLT_ROUNDSعدد صحیحی که حالت گرد کردن برای محاسبات ممیز شناور را نشان میدهد. این مقدار، مقدار ماکروی سیستمی
FLT_ROUNDSرا در زمان راهاندازی مفسر منعکس میکند:-1: غیرقابل تعیین0: به سمت صفر1: به نزدیکترین2: به سمت بینهایت مثبت3: به سمت بینهایت منفی
همهی مقادیر دیگر
FLT_ROUNDSنشاندهندهی رفتار گرد کردن تعریفشده توسط پیادهسازی هستند.ویژگی
sys.float_info.digبه توضیح بیشتری نیاز دارد. اگرsهر رشتهای باشد که یک عدد اعشاری را با حداکثرsys.float_info.digرقم معنادار نشان میدهد، آنگاه تبدیلsبه یک عدد اعشاری و سپس تبدیل دوبارهی آن به رشته، رشتهای را بازیابی خواهد کرد که همان مقدار اعشاری را نشان میدهد:>>> import sys >>> sys.float_info.dig 15 >>> s = '3.14159265358979' # decimal string with 15 significant digits >>> format(float(s), '.15g') # convert to float and back -> same value '3.14159265358979'
اما برای رشتههایی که بیش از
sys.float_info.digرقم معنادار دارند، این همیشه درست نیست:>>> s = '9876543211234567' # 16 significant digits is too many! >>> format(float(s), '.16g') # conversion changes value '9876543211234568'
- sys.float_repr_style¶
رشتهای که نشان میدهد تابع
repr()برای اعداد اعشاری چگونه رفتار میکند. اگر رشته مقدار'short'داشته باشد، آنگاه برای یک عدد اعشاری متناهیx،repr(x)تلاش میکند رشتهای کوتاه با این ویژگی تولید کند کهfloat(repr(x)) == x. این رفتار معمول در پایتون 3.1 و نسخههای بعدی است. در غیر این صورت،float_repr_styleمقدار'legacy'دارد وrepr(x)همانگونه رفتار میکند که در نسخههای پایتون پیش از 3.1 رفتار میکرد.اضافه شده در نسخهی 3.1.
- sys.getallocatedblocks()¶
تعداد بلوکهای حافظهای را که در حال حاضر توسط مفسر تخصیص داده شدهاند، صرفنظر از اندازهشان، برمیگرداند. این تابع عمدتاً برای پیگیری و اشکالزدایی نشت حافظه مفید است. به دلیل نهانگاههای داخلی مفسر، نتیجه میتواند از یک فراخوانی به فراخوانی دیگر متفاوت باشد؛ ممکن است لازم باشد
_clear_internal_caches()وgc.collect()را فراخوانی کنید تا نتایج قابلپیشبینیتری به دست آورید.اگر یک ساخت یا پیادهسازی پایتون نتواند بهطور معقول این اطلاعات را محاسبه کند،
getallocatedblocks()مجاز است در عوض 0 برگرداند.اضافه شده در نسخهی 3.4.
- sys.getunicodeinternedsize()¶
تعداد اشیای یونیکدی را که درونیسازیشده هستند برمیگرداند.
اضافه شده در نسخهی 3.12.
- sys.getandroidapilevel()¶
سطح API زمان ساخت اندروید را بهعنوان یک عدد صحیح برمیگرداند. این مقدار نشاندهندهی حداقل نسخهی اندرویدی است که این ساخت پایتون میتواند روی آن اجرا شود. برای اطلاعات نسخهی رانتایم،
platform.android_ver()را ببینید.دسترسپذیری: Android.
اضافه شده در نسخهی 3.7.
- sys.getdefaultencoding()¶
'utf-8'را برمیگرداند. این نام کدگذاری پیشفرض رشته است که در متدهایی مانندstr.encode()استفاده میشود.
- sys.getdlopenflags()¶
مقدار فعلی پرچمهای استفادهشده برای فراخوانیهای
dlopen()را برمیگرداند. نامهای نمادین مقادیر پرچمها را میتوان در ماژولosیافت (ثابتهایRTLD_xxx، مثلاًos.RTLD_LAZY).دسترسپذیری: Unix.
- sys.getfilesystemencoding()¶
کدگذاری سامانه فایلبندی را دریافت کنید: کدگذاریای که همراه با هندلر خطای سامانه فایلبندی برای تبدیل بین نام پروندههای یونیکدی و نام پروندههای بایتی استفاده میشود. هندلر خطای سامانه فایلبندی از
getfilesystemencodeerrors()بازگردانده میشود.برای بیشترین سازگاری، باید در همه موارد برای نام پروندهها از str استفاده شود، هرچند نمایش نام پروندهها بهصورت bytes نیز پشتیبانی میشود. توابعی که نام پروندهها را میپذیرند یا بازمیگردانند باید از str یا bytes پشتیبانی کنند و آنها را بهصورت داخلی به نمایش ترجیحی سیستم تبدیل کنند.
باید از
os.fsencode()وos.fsdecode()استفاده شود تا اطمینان حاصل شود که کدگذاری و حالت خطاهای صحیح به کار میروند.کدگذاری و هندلر خطای سامانه فایلبندی در هنگام راهاندازی پایتون توسط تابع
PyConfig_Read()پیکربندی میشوند: اعضایfilesystem_encodingوfilesystem_errorsازPyConfigرا ببینید.تغییر یافته در نسخهی 3.2: نتیجهی
getfilesystemencoding()دیگر نمیتواندNoneباشد.تغییر یافته در نسخهی 3.6: دیگر تضمین نمیشود که ویندوز
'mbcs'را برگرداند. برای اطلاعات بیشتر PEP 529 و_enablelegacywindowsfsencoding()را ببینید.تغییر یافته در نسخهی 3.7: اگر حالت UTF-8 پایتون فعال باشد،
'utf-8'را برمیگرداند.
- sys.getfilesystemencodeerrors()¶
دریافت هندلر خطای سامانه فایلبندی: هندلر خطایی که همراه با کدگذاری سامانه فایلبندی برای تبدیل بین نام پروندههای یونیکدی و نام پروندههای بایتی استفاده میشود. کدگذاری سامانه فایلبندی از
getfilesystemencoding()بازگردانده میشود.باید از
os.fsencode()وos.fsdecode()استفاده شود تا اطمینان حاصل شود که کدگذاری و حالت خطاهای صحیح به کار میروند.کدگذاری و هندلر خطای سامانه فایلبندی در هنگام راهاندازی پایتون توسط تابع
PyConfig_Read()پیکربندی میشوند: اعضایfilesystem_encodingوfilesystem_errorsازPyConfigرا ببینید.اضافه شده در نسخهی 3.6.
- sys.get_int_max_str_digits()¶
مقدار فعلی محدودیت طول تبدیل عدد صحیح به رشته را برمیگرداند. همچنین
set_int_max_str_digits()را ببینید.اضافه شده در نسخهی 3.11.
- sys.getrefcount(object)¶
تعداد ارجاع به object را برمیگرداند. تعداد برگرداندهشده معمولاً یکی بیشتر از مقداری است که ممکن است انتظار داشته باشید، زیرا ارجاع (موقت) بهعنوان آرگومان به
getrefcount()را شامل میشود.توجه داشته باشید که مقدار برگرداندهشده ممکن است در عمل تعداد ارجاعهای نگهداریشده به شیء را نشان ندهد. برای مثال، برخی از شیءها نامیرا هستند و شمارش ارجاعها (refcount) بسیار بالایی دارند که تعداد واقعی ارجاعها را نشان نمیدهد. در نتیجه، به دقیق بودن مقدار برگرداندهشده، مگر برای مقدار ۰ یا ۱، اتکا نکنید.
اشیاء نامیرا با تعداد ارجاع زیاد را میتوان از طریق
_is_immortal()شناسایی کرد.تغییر یافته در نسخهی 3.12: اشیاء نامیرا دارای شمارش ارجاع (refcount) بسیار بزرگی هستند که با تعداد واقعی ارجاعها به شیء مطابقت ندارد.
- sys.getrecursionlimit()¶
مقدار فعلی محدودیت بازگشت، یعنی حداکثر عمق پشته مفسر پایتون را برمیگرداند. این محدودیت از سرریز پشته C و از کار افتادن پایتون در اثر بازگشت بیپایان جلوگیری میکند. میتوان آن را با
setrecursionlimit()تنظیم کرد.
- sys.getsizeof(object[, default])¶
اندازهی یک شیء را بر حسب بایت برمیگرداند. شیء میتواند از هر نوعی باشد. همهی اشیای توکار نتایج درست را برمیگردانند، اما این موضوع لزوماً برای افزونههای شخص ثالث صادق نیست، زیرا به پیادهسازی خاص وابسته است.
تنها مصرف حافظهای که مستقیماً به شیء نسبت داده میشود، محاسبه میشود، نه مصرف حافظهی اشیایی که به آنها ارجاع میدهد.
اگر داده شود، چنانچه شیء وسیلهای برای بازیابی اندازه فراهم نکند، default برگردانده میشود. در غیر این صورت یک
TypeErrorپرتاب میشود.getsizeof()متد__sizeof__شیء را فراخوانی میکند و اگر شیء توسط زبالهرو مدیریت شود، سربار اضافی زبالهرو را اضافه میکند.برای دیدن نمونهای از استفادهی بازگشتی از
getsizeof()جهت یافتن اندازهی ظرفها و تمام محتوای آنها، recursive sizeof recipe را ببینید.
- sys.getswitchinterval()¶
بازهی تعویض نخ مفسر را بر حسب ثانیه برمیگرداند؛
setswitchinterval()را ببینید.اضافه شده در نسخهی 3.2.
- sys._getframe([depth])¶
یک شیء فریم از پشته فراخوانی برمیگرداند. اگر عدد صحیح اختیاری depth داده شود، شیء فریمی را برمیگرداند که به آن تعداد فراخوانی پایینتر از بالای پشته قرار دارد. اگر این مقدار از پشته فراخوانی عمیقتر باشد،
ValueErrorپرتاب میشود. مقدار پیشفرض برای depth صفر است و فریم بالای پشته فراخوانی را برمیگرداند.یک رویداد حسابرسی
sys._getframeرا با آرگومانframeپرتاب میکند.این تابع باید تنها برای اهداف داخلی و تخصصی استفاده شود. وجود آن در تمام پیادهسازیهای پایتون تضمین نمیشود.
- sys._getframemodulename([depth])¶
نام یک ماژول را از پشته فراخوانی برمیگرداند. اگر عدد صحیح اختیاری depth داده شود، ماژولی را برمیگرداند که به همان تعداد فراخوانی از بالای پشته پایینتر است. اگر آن عمیقتر از پشته فراخوانی باشد، یا اگر ماژول قابل شناسایی نباشد،
Noneبرگردانده میشود. مقدار پیشفرض برای depth صفر است و ماژول بالای پشته فراخوانی را برمیگرداند.یک رویداد حسابرسی
sys._getframemodulenameرا با آرگومانdepthپرتاب میکند.این تابع باید تنها برای اهداف داخلی و تخصصی استفاده شود. وجود آن در تمام پیادهسازیهای پایتون تضمین نمیشود.
اضافه شده در نسخهی 3.12.
- sys.getobjects(limit[, type])¶
این تابع تنها در صورتی وجود دارد که CPython با استفاده از گزینهی تخصصی configure
--with-trace-refsساخته شده باشد. این تابع فقط برای اشکالزدایی مسائل مربوط به زبالهروبی در نظر گرفته شده است.فهرستی از حداکثر limit شیء پایتون با تخصیص پویا برمیگرداند. اگر type داده شده باشد، فقط اشیای همان نوع دقیق (نه زیرنوعها) گنجانده میشوند.
استفاده از اشیای موجود در فهرست ایمن نیست. بهطور مشخص، نتیجه شامل اشیای تمام مفسرهایی خواهد بود که وضعیت تخصیصدهندهی اشیای خود را به اشتراک میگذارند (یعنی مفسرهایی که با
PyInterpreterConfig.use_main_obmallocتنظیمشده روی ۱ یا با استفاده ازPy_NewInterpreter()ایجادشدهاند، و نیز مفسر اصلی). ترکیب اشیای مفسرهای مختلف ممکن است منجر به فروپاشی یا سایر رفتارهای غیرمنتظره شود.این تابع باید تنها برای اهداف تخصصی استفاده شود. وجود آن در تمام پیادهسازیهای پایتون تضمین نمیشود.
تغییر یافته در نسخهی 3.14: نتیجه ممکن است شامل اشیایی از مفسرهای دیگر باشد.
- sys.getprofile()¶
تابع پروفایلگیر (profiler) تنظیمشده توسط
setprofile()را دریافت کنید.
- sys.gettrace()¶
تابع ردگیری تنظیمشده توسط
settrace()را دریافت کنید.تابع
gettrace()فقط برای پیادهسازی اشکالزداها، پروفایلگیرها، ابزارهای پوشش و موارد مشابه در نظر گرفته شده است. رفتار آن بخشی از سکوی پیادهسازی است، نه بخشی از تعریف زبان، و بنابراین ممکن است در تمام پیادهسازیهای پایتون در دسترس نباشد.
- sys.getwindowsversion()¶
یک تاپل نامدار (named tuple) را برمیگرداند که نسخه ویندوز در حال اجرا را توصیف میکند. عناصر نامدار عبارتاند از major، minor، build، platform، service_pack، service_pack_minor، service_pack_major، suite_mask، product_type و platform_version. service_pack شامل یک رشته است، platform_version یک تاپل ۳-تایی است و همهی مقادیر دیگر عدد صحیح هستند. کامپوننتها را نیز میتوان از طریق نام دسترسی داشت، بنابراین
sys.getwindowsversion()[0]معادلsys.getwindowsversion().majorاست. برای سازگاری با نسخههای پیشین، تنها ۵ عنصر نخست از طریق اندیسدهی قابل بازیابی هستند.platform برابر با
2(VER_PLATFORM_WIN32_NT) خواهد بود.product_type میتواند یکی از مقادیر زیر باشد:
ثابت
معنی
1(VER_NT_WORKSTATION)این سیستم یک ایستگاه کاری است.
2(VER_NT_DOMAIN_CONTROLLER)این سیستم یک کنترلکننده دامنه است.
3(VER_NT_SERVER)این سیستم یک سرور است، اما کنترلکننده دامنه نیست.
این تابع، پوششی برای تابع Win32
GetVersionEx()است؛ برای اطلاعات بیشتر درباره این فیلدها، به مستندات مایکروسافت دربارهOSVERSIONINFOEX()مراجعه کنید.platform_version نسخهی اصلی، نسخهی فرعی و شمارهی ساخت سیستمعامل جاری را برمیگرداند، نه نسخهای که برای فرایند شبیهسازی میشود. این برای استفاده در گزارشگیری در نظر گرفته شده است، نه برای تشخیص قابلیتها.
توجه
platform_version نسخه را از kernel32.dll استخراج میکند که ممکن است نسخهای متفاوت از نسخه سیستمعامل داشته باشد. لطفاً برای بهدست آوردن نسخه دقیق سیستمعامل از ماژول
platformاستفاده کنید.دسترسپذیری: Windows.
تغییر یافته در نسخهی 3.2: به یک تاپل نامدار (named tuple) تغییر یافت و service_pack_minor، service_pack_major، suite_mask و product_type به آن افزوده شدند.
تغییر یافته در نسخهی 3.6: platform_version اضافه شد
- sys.get_asyncgen_hooks()¶
یک شیء asyncgen_hooks برمیگرداند، که شبیه به یک
namedtupleبه شکل(firstiter, finalizer)است و در آن firstiter و finalizer انتظار میرود یاNoneباشند یا توابعی که یک asynchronous generator iterator را بهعنوان آرگومان میپذیرند و برای زمانبندی نهاییسازی یک تولیدگر ناهمگام توسط یک حلقه رویداد استفاده میشوند.اضافه شده در نسخهی 3.6: برای جزئیات بیشتر PEP 525 را ببینید.
توجه
این تابع بهصورت آزمایشی افزوده شده است (برای جزئیات، PEP 411 را ببینید.)
- sys.get_coroutine_origin_tracking_depth()¶
عمق فعلی پیگیری مبدأ همروال را، که توسط
set_coroutine_origin_tracking_depth()تنظیم شده است، دریافت کنید.اضافه شده در نسخهی 3.7.
توجه
این تابع بهصورت موقت افزوده شده است (برای جزئیات PEP 411 را ببینید). از آن فقط برای اهداف اشکالزدایی استفاده کنید.
- sys.hash_info¶
یک named tuple که پارامترهای پیادهسازی هش عددی را ارائه میدهد. برای جزئیات بیشتر دربارهی هش انواع عددی، Hashing of numeric types را ببینید.
- hash_info.width¶
عرض بر حسب بیت برای مقادیر هش
- hash_info.modulus¶
پیمانه اول P که برای طرحواره هش عددی استفاده میشود
- hash_info.inf¶
مقدار هش بازگشتدادهشده برای بینهایت مثبت
- hash_info.nan¶
(این ویژگی دیگر استفاده نمیشود)
- hash_info.imag¶
ضریب استفادهشده برای بخش موهومی یک عدد مختلط
- hash_info.algorithm¶
نام الگوریتم هش برای str، bytes و memoryview
- hash_info.hash_bits¶
اندازهی خروجی داخلی الگوریتم هش
- hash_info.seed_bits¶
اندازهی کلید دانه (seed key) الگوریتم هش
- hash_info.cutoff¶
آستانه برای بهینهسازی DJBX33A برای رشتههای کوچک در بازهی
[1, cutoff).
اضافه شده در نسخهی 3.2.
تغییر یافته در نسخهی 3.4: algorithm، hash_bits، seed_bits و cutoff افزوده شدند.
- sys.hexversion¶
شمارهی نسخه بهصورت یک عدد صحیح واحد کدگذاریشده است. تضمین میشود که این شماره با هر نسخه افزایش یابد، از جمله با پشتیبانی مناسب از نسخههای غیرنهایی. برای مثال، برای بررسی اینکه مفسر پایتون دستکم نسخهی 1.5.2 باشد، به این ترتیب عمل کنید:
if sys.hexversion >= 0x010502F0: # use some advanced feature ... else: # use an alternative implementation or warn the user ...
این
hexversionنامیده میشود، زیرا تنها زمانی واقعاً معنادار به نظر میرسد که بهعنوان نتیجهی ارسال آن به تابع توکارhex()مشاهده شود. برای کدگذاری انسانپسندترِ همین اطلاعات میتوان از named tuplesys.version_infoاستفاده کرد.جزئیات بیشتر در مورد
hexversionرا میتوان در نسخهگذاری API و ABI یافت.
- sys.implementation¶
شیء حاوی اطلاعات دربارهی پیادهسازی مفسر پایتون در حال اجرا. ویژگیهای زیر باید در تمام پیادهسازیهای پایتون وجود داشته باشند.
name شناسهی پیادهسازی است، برای مثال
'cpython'. رشتهی واقعی توسط پیادهسازی پایتون تعریف میشود، اما تضمین میشود که با حروف کوچک باشد.version یک تاپل نامدار (named tuple) است، با همان قالب
sys.version_info. این، نسخهی پیادهسازی پایتون را نشان میدهد. این معنایی متمایز از نسخهی مشخص زبان پایتون دارد که مفسر در حال اجرا با آن مطابقت دارد وsys.version_infoآن را نشان میدهد. برای مثال، برای PyPy 1.8 ممکن استsys.implementation.versionبرابرsys.version_info(1, 8, 0, 'final', 0)باشد، در حالی کهsys.version_infoبرابرsys.version_info(2, 7, 2, 'final', 0)خواهد بود. برای CPython، این دو مقدار یکسانی دارند، زیرا این پیادهسازی مرجع است.hexversion نسخهی پیادهسازی در قالب مبنای شانزده است، مانند
sys.hexversion.cache_tag برچسبی است که سازوکار ایمپورت آن را در نام پروندههای ماژولهای نهانشده به کار میبرد. طبق قرارداد، این برچسب ترکیبی از نام و نسخه پیادهسازی است، مانند
'cpython-33'. با این حال، یک پیادهسازی پایتون ممکن است در صورت مناسب بودن از مقدار دیگری استفاده کند. اگرcache_tagرویNoneتنظیم شود، نشان میدهد که نهانسازی ماژول باید غیرفعال شود.supports_isolated_interpreters یک مقدار بولی است که نشان میدهد آیا این پیادهسازی از چندین مفسر جداشده پشتیبانی میکند یا خیر. این مقدار برای CPython در بیشتر سکوها
Trueاست. سکوهای دارای این پشتیبانی، ماژول سطح پایین_interpretersرا پیادهسازی میکنند.همچنین ملاحظه نمائید
sys.implementationممکن است شامل ویژگیهای اضافی مختص پیادهسازی پایتون باشد. این ویژگیهای غیراستاندارد باید با یک زیرخط شروع شوند و در اینجا توصیف نشدهاند. صرفنظر از محتوای آن،sys.implementationدر طول اجرای مفسر، و نه بین نسخههای پیادهسازی، تغییر نخواهد کرد. (البته ممکن است بین نسخههای زبان پایتون تغییر کند.) برای اطلاعات بیشتر PEP 421 را ببینید.اضافه شده در نسخهی 3.3.
تغییر یافته در نسخهی 3.14: فیلد
supports_isolated_interpretersافزوده شد.توجه
افزودن ویژگیهای الزامی جدید باید از طریق فرایند عادی PEP انجام شود. برای اطلاعات بیشتر PEP 421 را ببینید.
- sys.int_info¶
یک named tuple که حاوی اطلاعاتی درباره بازنمایی داخلی پایتون از اعداد صحیح است. ویژگیها فقطخواندنی هستند.
- int_info.bits_per_digit¶
تعداد بیتهایی که در هر رقم نگه داشته میشود. اعداد صحیح پایتون بهصورت داخلی در مبنای
2**int_info.bits_per_digitذخیره میشوند.
- int_info.sizeof_digit¶
اندازهی نوع C استفادهشده برای نمایش یک رقم، بر حسب بایت.
- int_info.default_max_str_digits¶
مقدار پیشفرض برای
sys.get_int_max_str_digits()هنگامی که بهگونهای دیگر بهصورت صریح پیکربندی نشده باشد.
- int_info.str_digits_check_threshold¶
کمترین مقدار غیرصفر برای
sys.set_int_max_str_digits()،PYTHONINTMAXSTRDIGITS، یا-X int_max_str_digits.
اضافه شده در نسخهی 3.1.
تغییر یافته در نسخهی 3.11:
default_max_str_digitsوstr_digits_check_thresholdافزوده شدند.
- sys.__interactivehook__¶
هنگامی که این ویژگی وجود داشته باشد، مقدار آن بهطور خودکار (بدون آرگومان) در زمان راهاندازی مفسر در حالت تعاملی فراخوانی میشود. این کار پس از خوانده شدن پرونده
PYTHONSTARTUPانجام میشود، تا بتوانید این قلاب را آنجا تنظیم کنید. ماژولsiteاین را تنظیم میکند.هنگامی که قلاب در راهاندازی فراخوانی میشود، یک رویداد حسابرسی
cpython.run_interactivehookرا با شیء قلاب بهعنوان آرگومان پرتاب میکند.اضافه شده در نسخهی 3.4.
- sys.intern(string)¶
string را در جدول رشتههای «درونیسازیشده» وارد میکند و رشتهی درونیسازیشده را برمیگرداند — که خود string یا یک کپی از آن است. درونیسازی رشتهها برای افزایش اندک کارایی در جستجوی دیکشنری مفید است — اگر کلیدهای یک دیکشنری درونیسازیشده باشند و کلید مورد جستجو نیز درونیسازیشده باشد، مقایسههای کلید (پس از هششدن) میتوانند بهجای مقایسهی رشتهای، با مقایسهی اشارهگر انجام شوند. بهطور معمول، نامهای استفادهشده در برنامههای پایتون بهطور خودکار اینترن میشوند و دیکشنریهای مورد استفاده برای نگهداری ویژگیهای ماژول، کلاس یا نمونه، کلیدهای درونیسازیشده دارند.
رشتههای internشده نامیرا نیستند؛ برای بهرهمندی از آن، باید ارجاعی به مقدار بازگشتی
intern()را نگهدارید.
- sys._is_gil_enabled()¶
اگر GIL فعال باشد،
Trueو اگر غیرفعال باشد،Falseرا برمیگرداند.اضافه شده در نسخهی 3.13.
تضمینی برای وجود آن در همه پیادهسازیهای پایتون وجود ندارد.
- sys.is_finalizing()¶
اگر مفسر اصلی پایتون در حال خاموش شدن باشد،
Trueرا برمیگرداند. در غیر این صورتFalseرا برمیگرداند.همچنین استثنا
PythonFinalizationErrorرا ببینید.اضافه شده در نسخهی 3.5.
- sys._jit¶
ابزارهایی برای مشاهدهی کامپایل در لحظه (just-in-time compilation).
کامپایل JIT (JIT compilation) یک جزئیات پیادهسازی آزمایشی در CPython است. تضمینی وجود ندارد که
sys._jitدر تمام پیادهسازیها، نسخهها یا پیکربندیهای ساخت پایتون وجود داشته باشد یا رفتار یکسانی داشته باشد.اضافه شده در نسخهی 3.14.
- _jit.is_available()¶
اگر پرونده اجرایی پایتون جاری از کامپایل JIT پشتیبانی کند،
Trueرا برمیگرداند و در غیر این صورتFalseرا برمیگرداند. این موضوع را میتوان با ساخت CPython با گزینهی--experimental-jitدر ویندوز و گزینهی--enable-experimental-jitدر همهی پلتفرمهای دیگر کنترل کرد.
- _jit.is_enabled()¶
اگر کامپایل JIT برای فرآیند پایتون جاری فعال باشد،
Trueرا برمیگرداند (که مستلزم برقراریsys._jit.is_available()است) و در غیر این صورتFalseرا برمیگرداند. اگر کامپایل JIT در دسترس باشد، میتوان این وضعیت را با تنظیم متغیر محیطیPYTHON_JITبر روی0(غیرفعال) یا1(فعال) در زمان راهاندازی مفسر کنترل کرد.
- _jit.is_active()¶
اگر بالاترین فریم پایتون هماکنون در حال اجرای کد JIT باشد،
Trueبرمیگرداند (به این معنا کهsys._jit.is_enabled()نیز برقرار است) و در غیر این صورتFalseبرمیگرداند.توجه
این تابع برای آزمون و اشکالزدایی خود JIT در نظر گرفته شده است. باید از استفاده از آن برای هر هدف دیگری پرهیز شود.
توجه
به دلیل ماهیت کامپایلرهای JIT مبتنی بر ردگیری (tracing JIT compilers)، فراخوانیهای مکرر این تابع ممکن است نتایج غافلگیرکنندهای بدهند. برای مثال، انشعاب بر اساس مقدار بازگشتی آن احتمالاً به رفتار غیرمنتظرهای منجر میشود (اگر این کار باعث ورود به کد JIT یا خروج از آن شود):
>>> for warmup in range(BIG_NUMBER): ... # This line is "hot", and is eventually JIT-compiled: ... if sys._jit.is_active(): ... # This line is "cold", and is run in the interpreter: ... assert sys._jit.is_active() ... Traceback (most recent call last): File "<stdin>", line 5, in <module> assert sys._jit.is_active() ~~~~~~~~~~~~~~~~~~^^ AssertionError
- sys.last_exc¶
این متغیر همیشه تعریفشده نیست؛ هنگامی که یک استثنا مدیریت نشود و مفسر یک پیام خطا و ردگیری پشته چاپ کند، این متغیر به نمونه استثنا تنظیم میشود. هدف از آن این است که یک کاربر تعاملی بتواند یک ماژول اشکالزدا را ایمپورت کند و بدون نیاز به اجرای دوباره دستوری که باعث خطا شده است، به اشکالزدایی پس از خطا (post-mortem debugging) بپردازد. (استفاده معمول
import pdb; pdb.pm()برای ورود به اشکالزدای پس از خطا (post-mortem debugger) است؛ برای اطلاعات بیشتر ماژولpdbرا ببینید.)اضافه شده در نسخهی 3.12.
- sys._is_immortal(op)¶
اگر شیء دادهشده نامیرا باشد،
Trueرا برمیگرداند، در غیر این صورتFalseرا برمیگرداند.توجه
تضمین نمیشود که اشیایی که نامیرا هستند (و بنابراین هنگامی که به این تابع پاس داده میشوند
Trueرا برمیگردانند) در نسخههای آینده نیز نامیرا باشند، و برعکس برای اشیای فانی.اضافه شده در نسخهی 3.14.
این تابع باید تنها برای اهداف تخصصی استفاده شود. وجود آن در تمام پیادهسازیهای پایتون تضمین نمیشود.
- sys._is_interned(string)¶
اگر رشتهی دادهشده «درونیسازیشده» باشد،
Trueو در غیر این صورتFalseبرمیگرداند.اضافه شده در نسخهی 3.13.
تضمینی برای وجود آن در همه پیادهسازیهای پایتون وجود ندارد.
- sys.last_type¶
- sys.last_value¶
- sys.last_traceback¶
این سه متغیر منسوخ شدهاند؛ بهجای آنها از
sys.last_excاستفاده کنید. آنها نمایش قدیمیsys.last_excرا نگه میدارند، همانطور که ازexc_info()در بالا برگردانده شده است.
- sys.maxsize¶
یک عدد صحیح که بیشینه مقداری را که یک متغیر از نوع
Py_ssize_tمیتواند بگیرد، مشخص میکند. این مقدار معمولاً در پلتفرم ۳۲ بیتی2**31 - 1و در پلتفرم ۶۴ بیتی2**63 - 1است.
- sys.maxunicode¶
یک عدد صحیح که مقدار بزرگترین نقطه کد یونیکد را میدهد، یعنی
1114111(0x10FFFFدر مبنای شانزده).تغییر یافته در نسخهی 3.3: پیش از PEP 393،
sys.maxunicodeبسته به گزینهی پیکربندیای که مشخص میکرد نویسههای یونیکد بهصورت UCS-2 ذخیره میشوند یا UCS-4، یا0xFFFFبود یا0x10FFFF.
- sys.meta_path¶
فهرستی از اشیای meta path finder که متدهای
find_spec()آنها فراخوانی میشوند تا بررسی شود که آیا یکی از اشیاء میتواند ماژول موردنظر برای ایمپورت را پیدا کند. بهطور پیشفرض، این فهرست شامل ورودیهایی است که معنای پیشفرض ایمپورت پایتون را پیادهسازی میکنند. متدfind_spec()حداقل با نام مطلق ماژول در حال ایمپورت فراخوانی میشود. اگر ماژول موردنظر برای ایمپورت در یک بسته قرار داشته باشد، در این صورت ویژگی__path__بسته والد بهعنوان آرگومان دوم ارسال میشود. این متد یک module spec برمیگرداند، یا اگر ماژول یافت نشود،Noneبرمیگرداند.همچنین ملاحظه نمائید
importlib.abc.MetaPathFinderکلاس پایه انتزاعی که رابط اشیای یابنده را در
meta_pathتعریف میکند.importlib.machinery.ModuleSpecکلاس مشخصی که
find_spec()باید نمونههایی از آن را برگرداند.
تغییر یافته در نسخهی 3.4: مشخصات ماژول در پایتون 3.4 توسط PEP 451 معرفی شدند.
تغییر یافته در نسخهی 3.12: مکانیزم جایگزینی که اگر یک آیتم از
meta_pathمتدfind_spec()را نداشت، به دنبال متدfind_module()میگشت، حذف شد.
- sys.modules¶
این یک دیکشنری است که نام ماژولها را به ماژولهایی که از قبل بارگذاری شدهاند نگاشت میکند. میتوان این دیکشنری را برای اجبار به بارگذاری مجدد ماژولها و ترفندهای دیگر دستکاری کرد. با این حال، جایگزینی دیکشنری لزوماً آنطور که انتظار میرود کار نمیکند و حذف آیتمهای ضروری از دیکشنری ممکن است باعث شکست پایتون شود. اگر میخواهید این دیکشنری سراسری را پیمایش کنید، همیشه از
sys.modules.copy()یاtuple(sys.modules)استفاده کنید تا از بروز استثناها جلوگیری شود، زیرا اندازه آن ممکن است در حین پیمایش بهعنوان عارضه جانبی کد یا فعالیت در نخهای دیگر تغییر کند.
- sys.orig_argv¶
فهرست آرگومانهای اولیهی خط فرمان که به پرونده اجرایی پایتون داده شدهاند.
عناصر
sys.orig_argvآرگومانهای مفسر پایتون هستند، در حالی که عناصرsys.argvآرگومانهای برنامهی کاربر هستند. آرگومانهایی که خود مفسر آنها را مصرف میکند، درsys.orig_argvوجود خواهند داشت و درsys.argvوجود نخواهند داشت.اضافه شده در نسخهی 3.10.
- sys.path¶
فهرستی از رشتهها که مسیر جستوجوی ماژولها را مشخص میکند. از متغیر محیطی
PYTHONPATHبهاضافهی یک پیشفرض وابسته به نصب مقداردهی اولیه شده است.بهطور پیشفرض، در مقداردهی اولیهی انجامشده در راهاندازی برنامه، یک مسیر بالقوه ناامن به ابتدای
sys.pathافزوده میشود (پیش از مدخلهایی که در نتیجهیPYTHONPATHدرج شدهاند):خط فرمان
python -m module: پوشه کاری فعلی را در ابتدا قرار میدهد.خط فرمان
python script.py: پوشهی اسکریپت به ابتدا اضافه میشود. اگر پیوند نمادین باشد، پیوندهای نمادین حل میشوند.سطرهای فرمان
python -c codeوpython(REPL): یک رشته خالی به ابتدای آنها اضافه میشود که به معنای پوشه کاری فعلی است.
برای اینکه این مسیر بالقوه ناامن پیشافزوده نشود، از گزینه خط فرمان
-Pیا متغیر محیطیPYTHONSAFEPATHاستفاده کنید.یک برنامه آزاد است این فهرست را برای اهداف خود تغییر دهد. فقط رشتهها باید به
sys.pathاضافه شوند؛ تمام انواع داده دیگر در حین ایمپورت نادیده گرفته میشوند.
- sys.path_hooks¶
فهرستی از اشیای فراخوانیپذیر که یک آرگومان مسیر میگیرند تا سعی کنند برای مسیر یک finder ایجاد کنند. اگر بتوان یک finder ایجاد کرد، باید توسط آن شیء فراخوانیپذیر برگردانده شود، در غیر این صورت آن شیء فراخوانیپذیر باید
ImportErrorرا پرتاب کند.در ابتدا در PEP 302 مشخص شده است.
- sys.path_importer_cache¶
یک دیکشنری که بهعنوان نهانگاه برای اشیای finder عمل میکند. کلیدها مسیرهایی هستند که به
sys.path_hooksارسال شدهاند و مقادیر، یابندههایی هستند که پیدا میشوند. اگر یک مسیر، مسیر معتبر سامانه فایلبندیای باشد اما هیچ یابندهای درsys.path_hooksپیدا نشود،Noneذخیره میشود.در ابتدا در PEP 302 مشخص شده است.
- sys.platform¶
رشتهای حاوی یک شناسه پلتفرم. مقادیر شناختهشده عبارتند از:
سیستم
مقدار
platformAIX
'aix'اندروید
'android'Emscripten
'emscripten'FreeBSD
'freebsd'iOS
'ios'لینوکس
'linux'macOS
'darwin'ویندوز
'win32'Windows/Cygwin
'cygwin'WASI
'wasi'در سیستمهای یونیکسی که در جدول فهرست نشدهاند، مقدار، نام سیستمعامل با حروف کوچک است که توسط
uname -sبرگردانده میشود و بخش نخست نسخه که توسطuname -rبرگردانده میشود، به آن افزوده شده است؛ برای مثال'sunos5'، در زمان ساخت پایتون. بنابراین، مگر اینکه بخواهید نسخه خاصی از سیستم را بررسی کنید، توصیه میشود از اصطلاح زیر استفاده کنید:if sys.platform.startswith('sunos'): # SunOS-specific code here...
تغییر یافته در نسخهی 3.3: در لینوکس،
sys.platformدیگر شامل نسخهی اصلی نمیشود. این مقدار همیشه'linux'است، بهجای'linux2'یا'linux3'.تغییر یافته در نسخهی 3.8: در AIX،
sys.platformدیگر شامل نسخهی اصلی نمیشود. این مقدار بهجای'aix5'یا'aix7'، همیشه'aix'است.تغییر یافته در نسخهی 3.13: در اندروید،
sys.platformاکنون بهجای'linux'مقدار'android'را برمیگرداند.تغییر یافته در نسخهی 3.14: در FreeBSD،
sys.platformدیگر شامل نسخهی اصلی نمیشود. همیشه'freebsd'است، به جای'freebsd13'یا'freebsd14'.همچنین ملاحظه نمائید
os.nameدانهبندی درشتتری دارد.os.uname()اطلاعات نسخهی وابسته به سیستم را ارائه میدهد.ماژول
platformبررسیهای دقیقی برای هویت سیستم فراهم میکند.
- sys.platlibdir¶
نام پوشهی کتابخانهی مختص پلتفرم. از آن برای ساخت مسیر کتابخانهی استاندارد و مسیرهای ماژولهای توسعهای نصبشده استفاده میشود.
این مقدار در بیشتر سکوها برابر با
"lib"است. در Fedora و SuSE، این مقدار در سکوهای ۶۴ بیتی برابر با"lib64"است که مسیرهایsys.pathزیر را به دست میدهد (که در آنX.Yنسخهیmajor.minorپایتون است):/usr/lib64/pythonX.Y/: کتابخانه استاندارد (مانندos.pyاز ماژولos)/usr/lib64/pythonX.Y/lib-dynload/: ماژولهای توسعهای C از کتابخانه استاندارد (مانند ماژولerrno، نام دقیق پرونده وابسته به پلتفرم است)/usr/lib/pythonX.Y/site-packages/(همیشه ازlibاستفاده کنید، نهsys.platlibdir): ماژولهای شخص ثالث/usr/lib64/pythonX.Y/site-packages/: ماژولهای توسعهای C از بستههای شخص ثالث
اضافه شده در نسخهی 3.9.
- sys.prefix¶
رشتهای که پیشوند پوشهی ویژهی سایت را مشخص میکند، جایی که پروندههای پایتون مستقل از سکو در آن نصب میشوند؛ در یونیکس، مقدار پیشفرض
/usr/localاست. این مقدار را میتوان در زمان ساخت با آرگومان--prefixبه اسکریپت configure تنظیم کرد. برای مسیرهای مشتقشده مسیرهای نصب را ببینید.توجه
اگر یک محیط مجازی فعال باشد، این
prefixبه محیط مجازی اشاره خواهد کرد. مقدار مربوط به نصب پایتون همچنان از طریقbase_prefixدر دسترس خواهد بود. برای اطلاعات بیشتر به محیطهای مجازی مراجعه کنید.تغییر یافته در نسخهی 3.14: هنگام اجرا در یک محیط مجازی،
prefixوexec_prefixاکنون بهجایsiteتوسط راهاندازی مسیر به پیشوند محیط مجازی تنظیم میشوند. این بدان معناست کهprefixوexec_prefixهمیشه به محیط مجازی اشاره میکنند، حتی زمانی کهsiteغیرفعال باشد (-S).
- sys.ps1¶
- sys.ps2¶
رشتههایی که اعلان اصلی و ثانویه مفسر را مشخص میکنند. اینها تنها در صورتی تعریف میشوند که مفسر در حالت تعاملی باشد. مقادیر اولیه آنها در این حالت
'>>> 'و'... 'هستند. اگر یک شیء غیررشتهای به یکی از این متغیرها اختصاص داده شود،str()آن هر بار که مفسر برای خواندن یک دستور تعاملی جدید آماده میشود، دوباره ارزیابی میشود؛ این میتواند برای پیادهسازی یک اعلان پویا استفاده شود.
- sys.setdlopenflags(n)¶
پرچمهایی را که مفسر برای فراخوانیهای
dlopen()به کار میبرد، تنظیم کنید، مانند زمانی که مفسر ماژولهای توسعهای را بارگذاری میکند. از جمله، اگر بهصورتsys.setdlopenflags(0)فراخوانی شود، این کار حل با تأخیر نمادها را هنگام ایمپورت یک ماژول فعال میکند. برای اشتراکگذاری نمادها میان ماژولهای توسعهای، بهصورتsys.setdlopenflags(os.RTLD_GLOBAL)فراخوانی کنید. نامهای نمادین برای مقادیر پرچم را میتوان در ماژولosیافت (ثابتهایRTLD_xxx، برای مثالos.RTLD_LAZY).دسترسپذیری: Unix.
- sys.set_int_max_str_digits(maxdigits)¶
محدودیت طول تبدیل عدد صحیح به رشته را که این مفسر از آن استفاده میکند، تنظیم کنید. همچنین
get_int_max_str_digits()را ببینید.اضافه شده در نسخهی 3.11.
- sys.setprofile(profilefunc)¶
تابع پروفایل سیستم را تنظیم کنید، که به شما امکان میدهد یک پروفایلگیر برای کد منبع پایتون را در پایتون پیادهسازی کنید. برای اطلاعات بیشتر درباره پروفایلگیر پایتون، فصل پروفایلگیرهای پایتون را ببینید. تابع پروفایل سیستم مشابه تابع ردگیری سیستم فراخوانی میشود (به
settrace()مراجعه کنید)، اما با رویدادهای متفاوتی فراخوانی میشود؛ برای مثال، بهازای هر خط کدی که اجرا میشود فراخوانی نمیشود (فقط در فراخوانی و بازگشت فراخوانی میشود، اما رویداد بازگشت حتی زمانی که استثنایی تنظیم شده باشد گزارش میشود). این تابع مختص نخ است، اما راهی برای آگاهی پروفایلگیر از تعویضهای زمینه بین نخها وجود ندارد، بنابراین استفاده از آن در حضور چند نخ معنادار نیست. همچنین، از مقدار بازگشتی آن استفاده نمیشود، بنابراین میتواند بهسادگیNoneرا برگرداند. خطا در تابع پروفایل باعث میشود که این تابع برداشته شود.توجه
برای
setprofile()از همان سازوکار ردگیریای استفاده میشود که برایsettrace()به کار میرود. برای ردگیری فراخوانیها باsetprofile()درون یک تابع ردگیری (مثلاً در یک نقطهی توقف اشکالزدا)،call_tracing()را ببینید.توابع پروفایلگیری باید سه آرگومان داشته باشند: frame، event و arg. frame فریم پشتهی فعلی است. event یک رشته است:
'call'،'return'،'c_call'،'c_return'یا'c_exception'. arg به نوع رویداد بستگی دارد.رویدادها معانی زیر را دارند:
'call'یک تابع فراخوانی میشود (یا وارد بلوک کد دیگری میشوید). تابع پروفایل فراخوانی میشود؛ arg برابر
Noneاست.'return'یک تابع (یا بلوک کد دیگر) در آستانه بازگشت است. تابع پروفایل فراخوانی میشود؛ arg مقداری است که بازگردانده خواهد شد، یا اگر رویداد به دلیل پرتاب شدن یک استثنا رخ داده باشد،
Noneاست.'c_call'یک تابع C در آستانه فراخوانی است. این ممکن است یک تابع افزونهای یا توکار باشد. arg شیء تابع C است.
'c_return'یک تابع C بازگشت کرده است. arg شیء تابع C است.
'c_exception'یک تابع C استثناای را پرتاب کرده است. arg شیء تابع C است.
یک رویداد حسابرسی
sys.setprofileرا بدون آرگومان پرتاب میکند.
- sys.setrecursionlimit(limit)¶
حداکثر عمق پشته مفسر پایتون را روی limit تنظیم میکند. این محدودیت مانع از آن میشود که بازگشت بینهایت باعث سرریز پشته C و از کار افتادن پایتون شود.
بالاترین حد ممکن به سکو وابسته است. ممکن است کاربر نیاز داشته باشد حد را بالاتر تنظیم کند، هنگامی که برنامهای داشته باشد که به بازگشت عمیق نیاز دارد و سکویی داشته باشد که از حد بالاتری پشتیبانی کند. این کار باید با احتیاط انجام شود، زیرا حد بیش از حد بالا میتواند منجر به فروپاشی شود.
اگر حد جدید در عمق بازگشت فعلی بیش از حد کم باشد، استثنای
RecursionErrorپرتاب میشود.تغییر یافته در نسخهی 3.5.1: اکنون اگر حد جدید در عمق بازگشت فعلی بیش از حد کم باشد، استثنای
RecursionErrorپرتاب میشود.
- sys.setswitchinterval(interval)¶
بازهی تعویض نخ مفسر (به ثانیه) را تنظیم میکند. این مقدار ممیز شناور، مدت ایدهآل «اسلایسهای زمانی» (timeslices) اختصاصدادهشده به نخهای پایتونی که بهطور همزمان اجرا میشوند را تعیین میکند. لطفاً توجه داشته باشید که مقدار واقعی میتواند بیشتر باشد، بهویژه اگر از توابع یا متدهای درونی با اجرای طولانی استفاده شود. همچنین، اینکه در پایان بازه کدام نخ برای اجرا زمانبندی شود، تصمیم سیستمعامل است. مفسر زمانبند اختصاصی خود را ندارد.
اضافه شده در نسخهی 3.2.
- sys.settrace(tracefunc)¶
تابع ردگیری سیستم را تنظیم کنید، که به شما امکان میدهد یک اشکالزدای کد منبع پایتون را در پایتون پیادهسازی کنید. این تابع مختص هر نخ است؛ برای اینکه یک اشکالزدا از چندین نخ پشتیبانی کند، باید برای هر نخی که اشکالزدایی میشود با استفاده از
settrace()یک تابع ردگیری ثبت کند یا ازthreading.settrace()استفاده کند.توابع ردگیری باید ۳ آرگومان داشته باشند: frame، event و arg. frame فریم پشته جاری است. event یک رشته است:
'call'،'line'،'return'،'exception'یا'opcode'. arg به نوع رویداد بستگی دارد.تابع ردگیری هر زمان که وارد یک محدوده محلی جدید شود (با event تنظیمشده روی
'call') فراخوانی میشود؛ این تابع باید ارجاعی به یک تابع ردگیری محلی برای استفاده در محدوده جدید برگرداند، یاNoneاگر محدوده نباید ردگیری شود.تابع ردگیری محلی باید ارجاعی به خودش یا به تابع دیگری بازگرداند که سپس بهعنوان تابع ردگیری محلی برای محدوده استفاده خواهد شد.
اگر خطایی در تابع ردگیری رخ دهد، آن لغو میشود، درست مانند این که
settrace(None)فراخوانی شده باشد.توجه
ردگیری هنگام فراخوانی تابع ردگیری غیرفعال میشود (برای مثال تابعی که توسط
settrace()تنظیم شده است). برای ردگیری بازگشتی،call_tracing()را ببینید.رویدادها معانی زیر را دارند:
'call'یک تابع فراخوانی میشود (یا وارد بلوک کد دیگری میشوید). تابع ردگیری سراسری فراخوانی میشود؛ arg برابر
Noneاست؛ مقدار بازگشتی، تابع ردگیری محلی را مشخص میکند.'line'The interpreter is about to execute a new line of code or re-execute the condition of a loop. The local trace function is called; arg is
None; the return value specifies the new local trace function. See InternalDocs/code_objects.md for a detailed explanation of how this works. Per-line events may be disabled for a frame by settingf_trace_linestoFalseon that frame.'return'یک تابع (یا بلوک کد دیگر) در شرف بازگشت است. تابع ردگیری محلی فراخوانی میشود؛ arg مقداری است که برگردانده خواهد شد، یا اگر رویداد ناشی از پرتاب شدن یک استثنا باشد
Noneاست. مقدار بازگشتی تابع ردگیری نادیده گرفته میشود.'exception'استثنایی رخ داده است. تابع ردگیری محلی فراخوانی میشود؛ arg یک تاپل
(exception, value, traceback)است؛ مقدار بازگشتی، تابع ردگیری محلی جدید را مشخص میکند.'opcode'مفسر در آستانه اجرای یک آپکدی جدید (opcode) است (برای جزئیات آپکدی به
disمراجعه کنید). تابع ردگیری محلی فراخوانی میشود؛ arg برابرNoneاست؛ مقدار بازگشتی، تابع ردگیری محلی جدید را مشخص میکند. بهطور پیشفرض، رویدادهای بهازای هر آپکدی منتشر نمیشوند: این رویدادها باید بهصراحت با تنظیمf_trace_opcodesرویTrueدر فریم درخواست شوند.
توجه داشته باشید که هنگامی که یک استثنا در زنجیرهی فراخوانندهها به پایین منتشر میشود، یک رویداد
'exception'در هر سطح تولید میشود.برای استفادهی دقیقتر، میتوانید با انتساب صریح
frame.f_trace = tracefuncیک تابع ردگیری را تنظیم کنید، به جای آنکه به تنظیم غیرمستقیم آن از طریق مقدار بازگشتی یک تابع ردگیری از پیش نصبشده تکیه کنید. این کار همچنین برای فعالسازی تابع ردگیری در فریم جاری لازم است، کهsettrace()آن را انجام نمیدهد. توجه داشته باشید که برای اینکه این کار کند، باید یک تابع ردگیری سراسری باsettrace()نصب شده باشد تا سازوکار ردگیری رانتایم فعال شود، اما لازم نیست همان تابع ردگیری باشد (برای مثال، میتواند یک تابع ردگیری کمسربار باشد که صرفاًNoneرا برمیگرداند تا خود را بلافاصله در هر فریم غیرفعال کند).برای اطلاعات بیشتر درباره اشیای کد و فریم، به سلسلهمراتب انواع استاندارد مراجعه کنید.
یک رویداد حسابرسی
sys.settraceرا بدون آرگومان پرتاب میکند.تابع
settrace()فقط برای پیادهسازی اشکالزداها، پروفایلگیرها ، ابزارهای پوشش (coverage) و موارد مشابه در نظر گرفته شده است. رفتار آن بخشی از سکوی پیادهسازی است، نه بخشی از تعریف زبان، و بنابراین ممکن است در تمام پیادهسازیهای پایتون در دسترس نباشد.تغییر یافته در نسخهی 3.7: نوع رویداد
'opcode'افزوده شد؛ ویژگیهایf_trace_linesوf_trace_opcodesبه فریمها افزوده شدند
- sys.set_asyncgen_hooks([firstiter] [, finalizer])¶
دو آرگومان کلیدواژهای اختیاری میپذیرد که فراخوانیپذیر هستند و یک asynchronous generator iterator را بهعنوان آرگومان میپذیرند. فراخوانیپذیر firstiter هنگامی فراخوانی خواهد شد که یک تولیدگر ناهمگام برای اولین بار پیمایش شود. finalizer هنگامی فراخوانی خواهد شد که یک تولیدگر ناهمگام در آستانه زبالهروبی شدن باشد.
یک رویداد حسابرسی
sys.set_asyncgen_hooks_firstiterرا بدون آرگومان پرتاب میکند.یک رویداد حسابرسی
sys.set_asyncgen_hooks_finalizerرا بدون آرگومان پرتاب میکند.دو رویداد حسابرسی پرتاب میشوند، زیرا API زیربنایی از دو فراخوانی تشکیل شده است که هر یک باید رویداد خود را پرتاب کند.
اضافه شده در نسخهی 3.6: برای جزئیات بیشتر PEP 525 را ببینید، و برای یک مثال مرجع از متد نهاییساز، پیادهسازی
asyncio.Loop.shutdown_asyncgensدر Lib/asyncio/base_events.py را ببینیدتوجه
این تابع بهصورت آزمایشی افزوده شده است (برای جزئیات، PEP 411 را ببینید.)
- sys.set_coroutine_origin_tracking_depth(depth)¶
امکان فعال یا غیرفعال کردن پیگیری مبدأ همروال را فراهم میکند. هنگامی که فعال باشد، ویژگی
cr_originدر اشیای همروال شامل تاپلی از تاپلهای (نام پرونده، شمارهی خط، نام تابع) خواهد بود که ردگیری پشتهی محل ایجاد شیء همروال را توصیف میکند، بهطوری که جدیدترین فراخوانی در ابتدا قرار دارد. هنگامی که غیرفعال باشد،cr_originبرابرNoneخواهد بود.برای فعالسازی، مقداری برای depth بزرگتر از ۰ ارسال کنید؛ این کار تعداد فریمهایی را که اطلاعات آنها ضبط خواهد شد تنظیم میکند. برای غیرفعالسازی، depth را روی ۰ تنظیم کنید.
این تنظیم مختص نخ است.
اضافه شده در نسخهی 3.7.
توجه
این تابع بهصورت موقت افزوده شده است (برای جزئیات PEP 411 را ببینید). از آن فقط برای اهداف اشکالزدایی استفاده کنید.
- sys.activate_stack_trampoline(backend, /)¶
بکاند ترامپولین (trampoline) پروفایلگیر پشته را فعال کنید. تنها بکاند پشتیبانیشده
"perf"است.اگر JIT فعال باشد، ترمپولینهای پشته (Stack trampolines) نمیتوانند فعال شوند.
دسترسپذیری: Linux.
اضافه شده در نسخهی 3.12.
همچنین ملاحظه نمائید
- sys.deactivate_stack_trampoline()¶
غیرفعال کردن بکاند فعلی ترامپولین (trampoline) پروفایلگیر پشته.
اگر هیچ پروفایلگیر پشتهای (stack profiler) فعال نشده باشد، این تابع هیچ تأثیری ندارد.
دسترسپذیری: Linux.
اضافه شده در نسخهی 3.12.
- sys.is_stack_trampoline_active()¶
اگر ترامپولین پروفایلگیر پشته (stack profiler trampoline) فعال باشد،
Trueرا برمیگرداند.دسترسپذیری: Linux.
اضافه شده در نسخهی 3.12.
- sys.remote_exec(pid, script)¶
script، پروندهای حاوی کد پایتون، را در فرایند راه دور با pid دادهشده اجرا میکند.
این تابع بلافاصله بازمیگردد و کد در اولین فرصت ممکن توسط نخ اصلی فرایند هدف اجرا خواهد شد، مشابه نحوه مدیریت سیگنالها. هیچ رابطی برای تعیین زمان اجرای کد وجود ندارد. فراخواننده مسئول است اطمینان حاصل کند که پرونده هر زمان که فرایند راهدور سعی میکند آن را بخواند، هنوز وجود دارد و بازنویسینشده است.
فرایند راه دور باید در حال اجرای یک مفسر CPython با همان نسخهی اصلی و فرعی فرایند محلی باشد. اگر مفسر محلی یا راه دور پیشانتشار (آلفا، بتا یا نامزد انتشار) باشد، مفسرهای محلی و راه دور باید دقیقاً نسخهی یکسانی داشته باشند.
برای اطلاعات بیشتر درباره سازوکار اشکالزدایی راهدور، پروتکل اتصال اشکالزدایی راه دور را ببینید.
هنگامی که کد در فرایند راهدور اجرا میشود، یک رویداد حسابرسی
sys.remote_execبا pid و مسیر پرونده اسکریپت پرتاب میشود. این رویداد در فرایندی کهsys.remote_exec()را فراخوانی کرده است، پرتاب میشود.هنگامی که اسکریپت در فرایند راهدور اجرا میشود، یک رویداد حسابرسی
cpython.remote_debugger_scriptبههمراه مسیر درون فرایند راهدور پرتاب میشود. این رویداد در فرایند راهدور پرتاب میشود، نه در فرایندی کهsys.remote_exec()را فراخوانی کرده است.دسترسپذیری: Unix, Windows.
اضافه شده در نسخهی 3.14: برای جزئیات بیشتر، PEP 768 را ببینید.
- sys._enablelegacywindowsfsencoding()¶
برای سازگاری با نسخههای پایتون پیش از 3.6، کدگذاری و مدیریت خطای سامانه فایلبندی را بهترتیب به 'mbcs' و 'replace' تغییر میدهد.
این معادل تعریف متغیر محیطی
PYTHONLEGACYWINDOWSFSENCODINGپیش از اجرای پایتون است.همچنین
sys.getfilesystemencoding()وsys.getfilesystemencodeerrors()را ببینید.دسترسپذیری: Windows.
توجه
تغییر کدگذاری سامانه فایلبندی پس از راهاندازی پایتون خطرناک است، زیرا ممکن است fsencoding قدیمی یا مسیرهای کدگذاریشده با fsencoding قدیمی در جایی در نهانگاه ذخیره شده باشند. بهجای آن از
PYTHONLEGACYWINDOWSFSENCODINGاستفاده کنید.اضافه شده در نسخهی 3.6: برای جزئیات بیشتر PEP 529 را ببینید.
منسوخ شده از نسخهی 3.13, در نسخهی 3.16 حذف خواهد شد: بهجای آن از
PYTHONLEGACYWINDOWSFSENCODINGاستفاده کنید.
- sys.stdin¶
- sys.stdout¶
- sys.stderr¶
اشیای پرونده که توسط مفسر برای ورودی، خروجی و خطاهای استاندارد استفاده میشوند:
از
stdinبرای تمام ورودیهای تعاملی (از جمله فراخوانیهایinput()) استفاده میشود؛stdoutبرای خروجیprint()و دستورهای عبارت و برای اعلانهایinput()استفاده میشود؛اعلانهای خود مفسر و پیامهای خطای آن به
stderrفرستاده میشوند.
این جریانها، پروندههای متنی عادی هستند، مانند آنهایی که تابع
open()برمیگرداند. پارامترهای آنها بهصورت زیر انتخاب شدهاند:کدگذاری و مدیریت خطا از
PyConfig.stdio_encodingوPyConfig.stdio_errorsمقداردهی اولیه میشوند.در ویندوز، برای دستگاه کنسول از UTF-8 استفاده میشود. دستگاههای غیرنویسهای مانند پروندههای دیسک و پایپها از کدگذاری زبان locale سیستم (یعنی کدپیج ANSI) استفاده میکنند. دستگاههای نویسهای غیرکنسولی مانند NUL (یعنی مواردی که
isatty()مقدارTrueبرمیگرداند) در هنگام راهاندازی از مقدار کدپیجهای ورودی و خروجی کنسول استفاده میکنند، بهترتیب برای stdin و stdout/stderr. اگر فرایند در ابتدا به یک کنسول متصل نباشد، این مقدار بهطور پیشفرض locale encoding سیستم است.میتوان رفتار ویژهی کنسول را با تنظیم متغیر محیطی PYTHONLEGACYWINDOWSSTDIO پیش از آغاز پایتون لغو کرد. در این صورت، صفحهکدهای کنسول مانند هر دستگاه نویسهای دیگری استفاده میشوند.
در همهی سکوها، میتوانید کدگذاری نویسهها را با تنظیم متغیر محیطی
PYTHONIOENCODINGپیش از شروع پایتون یا با استفاده از گزینهی جدید خط فرمان-Xutf8و متغیر محیطیPYTHONUTF8بازنویسی کنید. با این حال، برای کنسول ویندوز، این فقط زمانی اعمال میشود کهPYTHONLEGACYWINDOWSSTDIOنیز تنظیم شده باشد.در حالت تعاملی، جریان
stdoutبهصورت سطری بافر میشود. در غیر این صورت، مانند پروندههای متنی معمولی بهصورت بلوکی بافر میشود. جریانstderrدر هر دو حالت بهصورت خطی بافر میشود. شما میتوانید با استفاده از گزینهی خط فرمان-uیا تنظیم متغیر محیطیPYTHONUNBUFFERED، هر دو جریان را بدون بافر کنید.
تغییر یافته در نسخهی 3.9:
stderrغیرتعاملی اکنون بهجای بافر کامل، بهصورت خطی بافر میشود.توجه
برای نوشتن یا خواندن دادههای دودویی به/از جریانهای استاندارد، از شیء دودویی زیرین
bufferاستفاده کنید. برای مثال، برای نوشتن بایتها بهstdout، ازsys.stdout.buffer.write(b'abc')استفاده کنید.با این حال، اگر در حال نوشتن یک کتابخانه هستید (و کنترلی بر اینکه کد آن در چه زمینهای اجرا میشود ندارید)، توجه داشته باشید که جریانهای استاندارد ممکن است با اشیای شبهپرونده مانند
io.StringIOجایگزین شوند که از ویژگیbufferپشتیبانی نمیکنند.
- sys.__stdin__¶
- sys.__stdout__¶
- sys.__stderr__¶
این اشیاء حاوی مقادیر اصلی
stdin،stderrوstdoutدر آغاز برنامه هستند. آنها در طول نهاییسازی استفاده میشوند و میتوانند برای چاپ در جریان استاندارد واقعی مفید باشند، صرفنظر از اینکه شیءsys.std*تغییر مسیر داده شده باشد.همچنین میتوان از آن برای بازگرداندن پروندههای واقعی به اشیای پرونده سالمِ شناختهشده استفاده کرد، در صورتی که آنها با یک شیء خراب بازنویسی شده باشند. با این حال، روش ترجیحی برای انجام این کار آن است که پیش از جایگزینی، جریان قبلی را بهصراحت ذخیره کنید و شیء ذخیرهشده را بازگردانید.
توجه
در برخی شرایط،
stdin،stdoutوstderrو همچنین مقادیر اصلی__stdin__،__stdout__و__stderr__ممکن استNoneباشند. این حالت معمولاً برای برنامههای GUI ویندوز که به کنسول متصل نیستند و برنامههای پایتون که با pythonw اجرا میشوند، رخ میدهد.
- sys.stdlib_module_names¶
یک مجموعه تغییرناپذیر (frozenset) از رشتهها که شامل نام ماژولهای کتابخانهی استاندارد است.
در همهی سکوها یکسان است. ماژولهایی که در برخی سکوها در دسترس نیستند و ماژولهایی که هنگام ساخت پایتون غیرفعال شدهاند نیز فهرست شدهاند. همهی انواع ماژول فهرست شدهاند: ماژولهای پایتون خالص، توکار، فریز و توسعهای. ماژولهای آزمون مستثنی شدهاند.
برای بستهها، فقط بستهی اصلی فهرست میشود: زیربستهها و زیرماژولها فهرست نمیشوند. برای مثال، بستهی
emailفهرست شده است، اما زیربستهیemail.mimeو زیرماژولemail.messageفهرست نشدهاند.همچنین فهرست
sys.builtin_module_namesرا ببینید.اضافه شده در نسخهی 3.10.
- sys.thread_info¶
یک named tuple حاوی اطلاعاتی دربارهی پیادهسازی نخ.
- thread_info.name¶
نام پیادهسازی نخ:
"nt": نخهای ویندوز"pthread": نخهای POSIX"pthread-stubs": نخهای POSIX بهصورت stub (در سکوهای WebAssembly بدون پشتیبانی از نخها)"solaris": نخهای Solaris
- thread_info.lock¶
نام پیادهسازی قفل:
"semaphore": یک قفل از یک سمافور استفاده میکند"mutex+cond": یک قفل از یک قفل متقابل (mutex) و یک متغیر شرط (condition variable) استفاده میکندNoneاگر این اطلاعات شناختهنشده باشد
- thread_info.version¶
نام و نسخهی کتابخانهی نخ. این یک رشته است، یا اگر این اطلاعات نامشخص باشد
Noneخواهد بود.
اضافه شده در نسخهی 3.3.
- sys.tracebacklimit¶
هنگامی که این متغیر روی یک مقدار عدد صحیح تنظیم شود، حداکثر تعداد سطوح اطلاعات ردگیری پشته را که در هنگام رخ دادن یک استثنای مدیریتنشده چاپ میشود تعیین میکند. مقدار پیشفرض
1000است. هنگامی که روی0یا کمتر تنظیم شود، تمام اطلاعات ردگیری پشته مهار میشود و تنها نوع و مقدار استثنا چاپ میشوند.
- sys.unraisablehook(unraisable, /)¶
یک استثنای غیرقابل پرتاب را مدیریت کنید.
هنگامی فراخوانی میشود که استثنایی رخ داده باشد اما پایتون هیچ راهی برای مدیریت آن نداشته باشد. برای مثال، زمانی که یک تخریبکننده استثنایی را پرتاب میکند یا در حین زبالهروبی (
gc.collect()).آرگومان unraisable دارای ویژگیهای زیر است:
exc_type: نوع استثنا.exc_value: مقدار استثنا، میتواندNoneباشد.exc_traceback: ردگیری پشتهی استثنا، میتواندNoneباشد.err_msg: پیام خطا، میتواندNoneباشد.object: شیء ایجادکنندهی استثنا، میتواندNoneباشد.
قلاب پیشفرض،
err_msgوobjectرا بهصورتf'{err_msg}: {object!r}'قالببندی میکند؛ اگرerr_msgبرابرNoneباشد، از پیام خطای "Exception ignored in" استفاده میکند.میتوان
sys.unraisablehook()را بازنویسی کرد تا چگونگی مدیریت استثناهای غیرقابلپرتاب کنترل شود.همچنین ملاحظه نمائید
excepthook()که استثناهای گرفتهنشده را مدیریت میکند.هشدار
ذخیرهی
exc_valueبا استفاده از یک قلاب سفارشی میتواند یک چرخهی ارجاع ایجاد کند. هنگامی که دیگر نیازی به استثنا نیست، باید بهصورت صریح پاک شود تا چرخهی ارجاع شکسته شود.ذخیرهسازی
objectبا استفاده از یک قلاب سفارشی (custom hook) میتواند باعث زندهسازی مجدد آن شود، اگر به شیءای تنظیم شده باشد که در حال نهاییسازی است. برای جلوگیری از زندهسازی مجدد اشیاء، پس از تکمیل قلاب سفارشی (custom hook) از ذخیرهسازیobjectخودداری کنید.هنگامی که استثنایی غیرقابل مدیریت رخ میدهد، یک رویداد حسابرسی
sys.unraisablehookرا با آرگومانهای hook و unraisable پرتاب میکند. شیء unraisable همان چیزی است که به قلاب ارسال خواهد شد. اگر هیچ قلابی تنظیم نشده باشد، hook ممکن استNoneباشد.اضافه شده در نسخهی 3.8.
- sys.version¶
رشتهای شامل شمارهی نسخهی مفسر پایتون بههمراه اطلاعات تکمیلی دربارهی شمارهی ساخت و کامپایلر استفادهشده. این رشته هنگام راهاندازی مفسر تعاملی نمایش داده میشود. اطلاعات نسخه را از آن استخراج نکنید، بلکه از
version_infoو توابع ارائهشده توسط ماژولplatformاستفاده کنید.
- sys.api_version¶
نسخهی C API، معادل ماکروی C
PYTHON_API_VERSION. برای سازگاری با نسخههای پیشین تعریف شده است.در حال حاضر، این ثابت در نسخههای جدید پایتون بهروزرسانی نمیشود و برای نسخهبندی مفید نیست. این ممکن است در آینده تغییر کند.
- sys.version_info¶
یک تاپل شامل پنج کامپوننت از شماره نسخه: major، minor، micro، releaselevel و serial. همه مقادیر بهجز releaselevel عدد صحیح هستند؛ سطح انتشار یکی از
'alpha'،'beta'،'candidate'یا'final'است. مقدارversion_infoمتناظر با نسخه 2.0 پایتون برابر با(2, 0, 0, 'final', 0)است. این کامپوننتها با نام نیز قابل دسترسی هستند، بنابراینsys.version_info[0]معادلsys.version_info.majorاست و به همین ترتیب.تغییر یافته در نسخهی 3.1: ویژگیهای کامپوننت نامدار افزوده شد.
- sys.warnoptions¶
این جزئیاتی از پیادهسازی چارچوب هشدارها است؛ این مقدار را تغییر ندهید. برای اطلاعات بیشتر درباره چارچوب هشدارها به ماژول
warningsمراجعه کنید.
- sys.winver¶
شماره نسخهای که برای تشکیل کلیدهای رجیستری در سکوهای ویندوزی به کار میرود. این مقدار بهعنوان منبع رشته 1000 در DLL پایتون ذخیره شده است. این مقدار معمولاً نسخههای اصلی و فرعی مفسر پایتون در حال اجرا است. این مقدار در ماژول
sysبرای اهداف اطلاعرسانی ارائه شده است؛ تغییر این مقدار تأثیری بر کلیدهای رجیستری مورد استفاده پایتون ندارد.دسترسپذیری: Windows.
- sys.monitoring
فضای نامی شامل توابع و ثابتها برای ثبت کالبکها و کنترل رویدادهای پایش. برای جزئیات،
sys.monitoringرا ببینید.
- sys._xoptions¶
یک دیکشنری از پرچمهای مختلف خاصِ پیادهسازی که از طریق گزینهی خط فرمان
-Xمنتقل میشوند. نام گزینهها یا در صورت داده شدن بهصورت صریح به مقدارهای خود نگاشت میشوند، یا بهTrue. مثال:$ ./python -Xa=b -Xc Python 3.2a3+ (py3k, Oct 16 2010, 20:14:50) [GCC 4.4.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys._xoptions {'a': 'b', 'c': True}
این یک روش مخصوص CPython برای دسترسی به گزینههای ارسالشده از طریق
-Xاست. سایر پیادهسازیها ممکن است آنها را از روشهای دیگری اکسپورت کنند، یا اصلاً اکسپورت نکنند.اضافه شده در نسخهی 3.2.
ارجاعات
ISO/IEC 9899:1999. «زبانهای برنامهنویسی -- C.» پیشنویس عمومی از این استاندارد در دسترس است: https://www.open-std.org/jtc1/sc22/wg14/www/docs/n1256.pdf.