sys --- ฟังก์ชันเฉพาะระบบ¶
โมดูลนี้ให้การเข้าถึงตัวแปรและฟังก์ชันเฉพาะของอินเทอร์พรีเตอร์ รวมถึงอาร์กิวเมนต์บรรทัดคำสั่ง เส้นทางค้นหาโมดูล สตรีมมาตรฐาน และข้อมูลเกี่ยวกับการใช้งานที่กำลังทำงานอยู่
ฟังก์ชัน¶
- sys.exit(retval: object = 0, /) NoReturn¶
สิ้นสุดโปรแกรมปัจจุบันด้วยรหัสออกที่กำหนด โดยพื้นฐานแล้ว ฟังก์ชันนี้จะยก
SystemExitขึ้น ถ้าให้อาร์กิวเมนต์ ค่าของอาร์กิวเมนต์นั้นจะถูกส่งต่อไปยังSystemExitบน OpenMV Cam หาก
SystemExitไม่ได้รับการจัดการ จะทำให้เกิด รีเซ็ตแบบซอฟต์ ของ MicroPython ในขณะนี้
- sys.atexit(func: Callable[[], None] | None) Callable[[], None] | None¶
ลงทะเบียน func ให้เรียกใช้เมื่อสิ้นสุดโปรแกรม func ต้องเป็น callable ที่ไม่รับอาร์กิวเมนต์ หรือ
Noneเพื่อยกเลิกการเรียก ฟังก์ชันatexitจะคืนค่าที่ตั้งไว้ก่อนหน้าโดยฟังก์ชันนี้ ซึ่งเริ่มต้นเป็นNoneความแตกต่างจาก CPython
ฟังก์ชันนี้เป็นส่วนขยายของ MicroPython ที่ออกแบบมาเพื่อให้ฟังก์ชันการทำงานคล้ายกับโมดูล
atexitใน CPython
- sys.print_exception(exc: BaseException, file: Any = sys.stdout, /) None¶
พิมพ์ข้อยกเว้นพร้อม traceback ไปยังออบเจกต์คล้ายไฟล์ file (หรือ
sys.stdoutโดยค่าเริ่มต้น)ความแตกต่างจาก CPython
นี่คือเวอร์ชันที่ลดความซับซ้อนของฟังก์ชันที่ปรากฏในโมดูล
tracebackของ CPython แตกต่างจากtraceback.print_exception()ตรงที่ฟังก์ชันนี้รับเพียงค่าของข้อยกเว้นแทนที่จะเป็นประเภท ค่า และออบเจกต์ traceback ของข้อยกเว้น; อาร์กิวเมนต์ file ควรเป็น positional; ไม่รองรับอาร์กิวเมนต์เพิ่มเติม โมดูลtracebackที่เข้ากันได้กับ CPython สามารถพบได้ในmicropython-lib
- sys.settrace(tracefunc: Callable | None) None¶
เปิดใช้งานการติดตามการทำงานของ bytecode สำหรับรายละเอียดดูได้ที่ เอกสาร CPython
ฟังก์ชันนี้ ไม่พร้อมใช้งานบน OpenMV Cam มันถูกปิดใช้งานโดยค่าเริ่มต้นเพราะทำให้การทำงานของโค้ดช้าลง การเปิดใช้งานต้องการการสร้างเฟิร์มแวร์แบบกำหนดเอง
ค่าคงที่¶
- sys.implementation: object¶
ออบเจกต์พร้อมข้อมูลเกี่ยวกับการใช้งาน Python ปัจจุบัน สำหรับ MicroPython มีแอตทริบิวต์ดังนี้:
name - สตริง "micropython"
version - ทูเพิล (major, minor, micro, releaselevel) เช่น (1, 22, 0, '')
_machine - สตริงที่อธิบายเครื่องพื้นฐาน
_mpy - เวอร์ชันรูปแบบไฟล์ mpy ที่รองรับ (แอตทริบิวต์เสริม)
_build - สตริงที่ช่วยระบุการกำหนดค่าที่ MicroPython ถูกสร้างขึ้น
_thread - แอตทริบิวต์สตริงเสริม มีอยู่หากเป้าหมายมีการทำงานแบบ threading และเป็นค่า "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 (global interpreter lock) แอตทริบิวต์นี้จะเป็น"GIL"มิฉะนั้น แอตทริบิวต์จะเป็น"unsafe"และเป้าหมายมีการทำงานแบบ threading แต่ไม่เปิดใช้งาน GIL และออบเจกต์ Python ที่แก้ไขได้ (เช่นbytearray,listและdict) ที่แชร์ระหว่าง thread จะต้องได้รับการปกป้องอย่างชัดเจนด้วย lock เช่น_thread.allocate_lockความแตกต่างจาก CPython
CPython กำหนดให้มีแอตทริบิวต์เพิ่มเติมสำหรับออบเจกต์นี้ แต่ค่าขั้นต่ำที่มีประโยชน์จริงๆ ได้รับการใช้งานใน MicroPython
- sys.maxsize: int¶
ค่าสูงสุดที่ประเภทจำนวนเต็มแบบ native สามารถเก็บได้บนแพลตฟอร์มปัจจุบัน หรือค่าสูงสุดที่ประเภทจำนวนเต็ม MicroPython สามารถแทนได้ ถ้ามันเล็กกว่าค่าสูงสุดของแพลตฟอร์ม (นั่นคือกรณีสำหรับพอร์ต MicroPython ที่ไม่รองรับ long int)
แอตทริบิวต์นี้มีประโยชน์สำหรับการตรวจสอบ "bitness" ของแพลตฟอร์ม (32-bit กับ 64-bit เป็นต้น) แนะนำให้ไม่นำแอตทริบิวต์นี้ไปเปรียบเทียบกับค่าโดยตรง แต่ให้นับจำนวนบิตในนั้นแทน:
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 modules ณ จุดนั้นในการค้นหา หากไม่พบ frozen module การค้นหาจะ ไม่ มองหาไดเรกทอรีชื่อ.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 prompt หลัก ค่าเริ่มต้นจะให้ Python prompt มาตรฐานของ
>>>ดูเพิ่มเติมที่sys.ps2สำหรับ continuation prompt
- sys.ps2: str¶
แอตทริบิวต์ที่แก้ไขได้ซึ่งเก็บสตริงที่ใช้สำหรับ REPL continuation prompt ค่าเริ่มต้นจะให้ Python prompt มาตรฐานของ
...ดูเพิ่มเติมที่sys.ps1สำหรับ primary prompt