sys --- دوال خاصة بالنظام¶
توفر هذه الوحدة الوصول إلى المتغيرات والدوال الخاصة بالمفسّر، بما في ذلك وسائط سطر الأوامر، ومسار البحث عن الوحدات، والتدفقات القياسية، والمعلومات حول التنفيذ الجاري.
الدوال¶
- sys.exit(retval: object = 0, /) NoReturn¶
ينهي البرنامج الحالي برمز خروج معطى. ضمنياً، تثير هذه الدالة استثناء
SystemExit. إذا أُعطي وسيط، فإن قيمته تُمرَّر كوسيط إلىSystemExit.على OpenMV Cam، يؤدي استثناء
SystemExitغير المعالَج حالياً إلى إعادة التعيين الناعمة لـ MicroPython.
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
يسجّل func ليتم استدعاؤه عند الإنهاء. يجب أن يكون func قابلاً للاستدعاء ولا يأخذ أي وسائط، أو
Noneلتعطيل الاستدعاء. ستعيد دالةatexitالقيمة السابقة التي ضبطتها هذه الدالة، والتي تكون مبدئياًNone.الفرق عن CPython
هذه الدالة هي امتداد من MicroPython يهدف إلى توفير وظيفة مشابهة لوحدة
atexitفي CPython.
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
يطبع الاستثناء مع تتبّع للمكدس إلى كائن شبيه بالملف file (أو
sys.stdoutافتراضياً).الفرق عن CPython
هذه نسخة مبسّطة من دالة تظهر في وحدة
tracebackفي CPython. على عكسtraceback.print_exception()، تأخذ هذه الدالة قيمة الاستثناء فقط بدلاً من نوع الاستثناء وقيمة الاستثناء وكائن التتبّع؛ يجب أن يكون الوسيط file موضعياً؛ والوسائط الإضافية غير مدعومة. يمكن العثور على وحدةtracebackالمتوافقة مع CPython فيmicropython-lib.
- sys.settrace(tracefunc: Callable | None) None¶
يُمكّن تتبّع تنفيذ البايت كود. للحصول على التفاصيل راجع وثائق CPython.
هذه الدالة غير متوفرة على OpenMV Cam. وهي معطّلة افتراضياً لأنها تبطئ تنفيذ الكود؛ ويتطلب تمكينها بناء برنامج ثابت مخصص.
الثوابت¶
- sys.implementation: object¶
كائن يحتوي على معلومات حول تنفيذ Python الحالي. بالنسبة إلى MicroPython، يحتوي على السمات التالية:
name - السلسلة "micropython"
version - صف tuple (major, minor, micro, releaselevel)، على سبيل المثال (1, 22, 0, '')
_machine - سلسلة تصف الجهاز الأساسي
_mpy - إصدار صيغة ملف mpy المدعوم (سمة اختيارية)
_build - سلسلة يمكن أن تساعد في تحديد التهيئة التي بُني بها MicroPython
_thread - سمة سلسلة اختيارية، توجد إذا كان الهدف يدعم خيوط المعالجة وتكون إما "GIL" أو "unsafe"
هذا الكائن هو الطريقة الموصى بها لتمييز MicroPython عن تنفيذات Python الأخرى (لاحظ أنه قد لا يوجد في المنافذ الأدنى جداً).
ابتداءً من الإصدار 1.22.0-preview، العقدة الرابعة releaselevel في implementation.version هي إما سلسلة فارغة أو
"preview".أُضيف الإدخال _build في الإصدار 1.25.0 وهو مجموعة من العناصر مفصولة بشرطات. قد تُضاف عناصر جديدة في المستقبل، لذا من الأفضل الوصول إلى هذا الحقل باستخدام
sys.implementation._build.split("-"). العناصر المستخدمة حالياً هي:على OpenMV Cam، يكون العنصر الأول هو اسم اللوحة والعنصر الثاني (إن وُجد) هو متغيّر اللوحة.
أُضيف الإدخال _thread في الإصدار 1.26.0 وإذا كان موجوداً فإن الهدف يمتلك وحدة
_thread. إذا مكّن الهدف الـ GIL (القفل العام للمفسّر) فإن هذه السمة تكون"GIL". وإلا فإن السمة تكون"unsafe"ويمتلك الهدف خيوط المعالجة لكنه لا يمكّن الـ GIL، ويجب حماية كائنات Python القابلة للتعديل (مثلbytearrayوlistوdict) المشتركة بين الخيوط بشكل صريح بواسطة أقفال مثل_thread.allocate_lock.الفرق عن CPython
يفرض CPython سمات أكثر لهذا الكائن، لكن الحد الأدنى المفيد فعلياً منفّذ في MicroPython.
- sys.maxsize: int¶
أقصى قيمة يمكن أن يحملها نوع عدد صحيح أصلي على المنصة الحالية، أو أقصى قيمة قابلة للتمثيل بنوع العدد الصحيح في MicroPython، إذا كانت أصغر من القيمة القصوى للمنصة (وهذا هو الحال في منافذ MicroPython بدون دعم الأعداد الصحيحة الطويلة).
هذه السمة مفيدة لاكتشاف "عدد البتات" للمنصة (32 بت مقابل 64 بت، إلخ). يُوصى بعدم مقارنة هذه السمة بقيمة ما مباشرة، وإنما بدلاً من ذلك حساب عدد البتات فيها:
bits = 0 v = sys.maxsize while v: bits += 1 v >>= 1 if bits > 32: # 64-bit (or more) platform ... else: # 32-bit (or less) platform # Note that on 32-bit platform, value of bits may be less than 32 # (e.g. 31) due to peculiarities described above, so use "> 16", # "> 32", "> 64" style of comparisons.
- sys.path: list[str]¶
قائمة قابلة للتعديل بالأدلة التي يُبحث فيها عن الوحدات المستوردة.
الفرق عن CPython
في MicroPython، يشير إدخال بالقيمة
".frozen"إلى أن عملية الاستيراد يجب أن تبحث عن الوحدات المجمّدة عند تلك النقطة في البحث. إذا لم يُعثر على وحدة مجمّدة فإن البحث لن يبحث عن دليل باسم.frozen، بل سيتابع مع الإدخال التالي فيsys.path.
- sys.platform: str¶
المنصة التي يعمل عليها MicroPython. هذه سلسلة محددة من المنفذ/اللوحة -- على سبيل المثال
"mimxrt"على OpenMV RT1060 و"alif"على OpenMV AE3 (تبلّغ بعض كاميرات OpenMV Cam الأقدم عن سلسلة خاصة بالطراز مثل"OpenMV4-H7"). للتحقق مما إذا كان برنامجك يعمل على MicroPython (مقابل تنفيذ Python آخر)، استخدمsys.implementationبدلاً من ذلك.
- sys.ps1: str¶
سمة قابلة للتعديل تحمل السلسلة المستخدمة لموجّه REPL الأساسي. يعطي الافتراضي موجّه Python القياسي
>>>. راجع أيضاًsys.ps2لموجّه المتابعة.
- sys.ps2: str¶
سمة قابلة للتعديل تحمل السلسلة المستخدمة لموجّه متابعة REPL. يعطي الافتراضي موجّه Python القياسي
.... راجع أيضاًsys.ps1للموجّه الأساسي.