ไลบรารี OpenMV MicroPython¶
Warning
สรุปสำคัญของส่วนนี้
MicroPython มีโมดูลในตัวที่สะท้อนฟังก์ชันการทำงานของ ไลบรารีมาตรฐาน Python (เช่น
os,time) รวมถึง โมดูลเฉพาะของ MicroPython (เช่นbluetooth,machine)โมดูลไลบรารีมาตรฐาน Python ส่วนใหญ่ใช้งานฟังก์ชันเพียงบางส่วนของโมดูล Python เทียบเท่า และในบางกรณีมีส่วนขยายเฉพาะของ MicroPython (เช่น
array,os)เนื่องจากข้อจำกัดด้านทรัพยากรหรือข้อจำกัดอื่นๆ พอร์ตหรือเวอร์ชันเฟิร์มแวร์บางรุ่นอาจไม่รวมฟังก์ชันทั้งหมดที่อธิบายไว้ที่นี่
เพื่อรองรับการขยายฟังก์ชัน โมดูลในตัวบางโมดูลสามารถ ขยายจากโค้ด Python ที่โหลดลงบนระบบไฟล์ของอุปกรณ์ได้
บทนี้อธิบายโมดูล (ไลบรารีของฟังก์ชันและคลาส) ที่ฝังอยู่ใน MicroPython เอกสารนี้โดยทั่วไปมุ่งหมายที่จะอธิบายโมดูลและฟังก์ชัน/คลาสทั้งหมดที่นำไปใช้งานในโครงการ MicroPython อย่างไรก็ตาม MicroPython มีความยืดหยุ่นสูง และแต่ละพอร์ตไปยังบอร์ด/ระบบฝังตัวอาจรวมเฉพาะส่วนหนึ่งของไลบรารี MicroPython ที่มี
ด้วยเหตุนี้ โปรดทราบว่าฟังก์ชัน/คลาสบางอย่างในโมดูล (หรือแม้แต่โมดูลทั้งหมด) ที่อธิบายในเอกสารนี้ อาจไม่พร้อมใช้งาน ในบิลด์ MicroPython บนระบบใดระบบหนึ่ง แหล่งข้อมูลที่ดีที่สุดสำหรับข้อมูลทั่วไปเกี่ยวกับความพร้อมใช้งาน/ไม่พร้อมใช้งานของฟีเจอร์ใดฟีเจอร์หนึ่งคือส่วน "General Information" ซึ่งมีข้อมูลเกี่ยวกับ MicroPython port เฉพาะ
ในบางพอร์ต คุณสามารถค้นหาไลบรารีในตัวที่พร้อมใช้งานซึ่งนำเข้าได้โดยพิมพ์คำสั่งต่อไปนี้ที่ REPL
help('modules')
นอกเหนือจากไลบรารีในตัวที่อธิบายในเอกสารนี้ โมดูลเพิ่มเติมอีกมากจากไลบรารีมาตรฐาน Python รวมถึงส่วนขยาย MicroPython เพิ่มเติม สามารถพบได้ใน micropython-lib
ไลบรารีมาตรฐาน Python และไมโคร-ไลบรารี¶
ไลบรารีมาตรฐาน Python ต่อไปนี้ได้รับการ "ย่อขนาด" ให้เหมาะกับปรัชญาของ MicroPython โดยมีฟังก์ชันหลักของโมดูลนั้นๆ และมุ่งหมายให้เป็นตัวแทนที่ใช้แทนกันได้กับไลบรารีมาตรฐาน Python
array--- arrays of numeric dataasyncio--- ตัวกำหนดเวลา I/O แบบอะซิงโครนัสbinascii--- การแปลงไบนารี/ASCIIbuiltins--- ฟังก์ชันและข้อยกเว้นในตัวcmath--- ฟังก์ชันทางคณิตศาสตร์สำหรับจำนวนเชิงซ้อนcollections--- ชนิดข้อมูลคอลเลกชันและคอนเทนเนอร์errno--- รหัสข้อผิดพลาดของระบบgc--- ควบคุม garbage collectorgzip--- การบีบอัดและขยายไฟล์ gziphashlib--- อัลกอริทึมการแฮชheapq--- อัลกอริทึม heap queueio--- สตรีมอินพุต/เอาต์พุตjson--- การเข้ารหัสและถอดรหัส JSONmarshal--- การแปลงรูปแบบออบเจ็กต์ Pythonmath--- ฟังก์ชันทางคณิตศาสตร์os--- บริการ "ระบบปฏิบัติการ" พื้นฐานplatform--- การเข้าถึงข้อมูลระบุตัวตนของแพลตฟอร์มที่ใช้งานอยู่random--- สร้างตัวเลขสุ่มre--- นิพจน์ทั่วไปแบบง่ายselect--- รอเหตุการณ์บน stream ชุดหนึ่งsocket--- socket modulessl--- โมดูล SSL/TLSstring.templatelib--- รองรับ Template Stringstruct--- pack และ unpack ชนิดข้อมูลพื้นฐานsys--- ฟังก์ชันเฉพาะระบบtime--- ฟังก์ชันเกี่ยวกับเวลาtypes--- ชื่อสำหรับประเภทที่มีอยู่ในตัวzlib--- การบีบอัดและคลายการบีบอัด zlib
ไลบรารี OpenMV Cam¶
ส่วนต่อไปนี้อธิบายไลบรารีที่มีในแต่ละบอร์ดที่ OpenMV รองรับ รวมถึงทั้งโมดูลในตัวเฉพาะของ MicroPython และส่วนขยายของ OpenMV เอง
โมดูลทั่วไป¶
ฝังอยู่ในเฟิร์มแวร์ของบอร์ดกล้อง OpenMV ทุกรุ่น
bluetooth--- Bluetooth ระดับต่ำcryptolib--- การเข้ารหัสแบบสมมาตรdeflate--- การบีบอัดและคลายการบีบอัด deflateframebuf--- การจัดการบัฟเฟอร์เฟรมmachine--- ฟังก์ชันที่เกี่ยวข้องกับฮาร์ดแวร์micropython--- การเข้าถึงและควบคุมภายใน MicroPythonnetwork--- การกำหนดค่าเครือข่ายopenamp--- รองรับ Asymmetric Multiprocessing (AMP) มาตรฐานuctypes--- เข้าถึงข้อมูลไบนารีในรูปแบบโครงสร้างvfs--- การควบคุมระบบไฟล์เสมือนcsi--- เซ็นเซอร์กล้องsensor--- camera sensorimage--- การมองเห็นของเครื่องgif--- การบันทึก GIFmjpeg--- การบันทึก MJPEGaudio--- โมดูล Audiodisplay--- ไดรเวอร์ดิสเพลย์fir--- ไดรเวอร์เซนเซอร์ความร้อน (fir == far infrared)tof--- ไดรเวอร์เซนเซอร์วัดระยะ time-of-flightimu--- imu sensoromv--- OpenMV Cam Informationcrc--- การคำนวณ CRCml--- Machine Learningulab--- ไลบรารีอาร์เรย์ที่เข้ากันได้กับ numpyprotocol--- ช่องสัญญาณโปรโตคอล OpenMVlogging--- การบันทึกเหตุการณ์senml--- Sensor Markup Language
ตัวช่วย Python แบบ Frozen ที่ส่งมากับบอร์ดกล้อง OpenMV ส่วนใหญ่ (ไดรเวอร์, เครือข่าย และยูทิลิตี):
aioble--- Async BLErpc--- ไลบรารี rpcrtsp--- ไลบรารี rtspmqtt--- Simple MQTT clientrequests--- HTTP clientmutex--- mutex modulepid--- ตัวควบคุม Proportional-Integral-Derivativebno055--- ไดรเวอร์ BNO055 IMUmodbus--- Modbus RTU slave protocolvl53l1x--- ไดรเวอร์เซนเซอร์วัดระยะ VL53L1X ToF
ตัวช่วยเครือข่าย (ต้องการอินเทอร์เฟซเครือข่ายที่ใช้งานได้):
เว็บเฟรมเวิร์ก¶
โมดูลเว็บเซิร์ฟเวอร์เฟรมเวิร์ก ดูส่วนต่อบอร์ดด้านล่างเพื่อดูว่าบอร์ดใดรวมโมดูลใด
โมดูลเฉพาะพอร์ต¶
โมดูลที่ผูกกับตระกูล MCU เฉพาะ ดูส่วนต่อบอร์ดด้านล่างเพื่อดูว่าบอร์ดใดรวมโมดูลใด
ไดรเวอร์ฮาร์ดแวร์¶
ไดรเวอร์สำหรับเซนเซอร์, จอแสดงผล และอุปกรณ์ต่อพ่วงอื่นๆ ที่มาพร้อมกับบอร์ดที่ OpenMV รองรับหนึ่งรุ่นขึ้นไป ดูส่วนต่อบอร์ดด้านล่างเพื่อดูว่าบอร์ดใดรวมโมดูลใด
dht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม LED แบบ WS2812 / NeoPixellsm6dsox--- IMU 6 แกน LSM6DSOXbmi270--- BMI270 6-axis IMUbmm150--- BMM150 3-axis magnetometerlsm9ds1--- IMU 9 แกน LSM9DS1hts221--- เซนเซอร์ความชื้น/อุณหภูมิ HTS221lps22h--- sensor ความดัน LPS22HB/HHhs3003--- เซนเซอร์ความชื้น/อุณหภูมิ HS3003espflash--- ตัวแฟลชเฟิร์มแวร์ ESP32 ROM bootloaderimu--- ตัวช่วย IMU สำหรับ Arduino Nano 33 BLE Sensessd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612pca9674a--- I2C Expander Drivertfp410--- ตัวควบคุม DVI/HDMIft5x06--- ไดรเวอร์หน้าจอสัมผัสgt911--- ตัวควบคุมสัมผัส GT911 แบบ 5 จุด Capacitivelora--- ไดรเวอร์โมเด็ม LoRaapds9960--- ไดรเวอร์เซนเซอร์ตรวจจับระยะใกล้ ท่าทาง และสีromfs--- ยูทิลิตีช่วยเหลือ ROMFS
ความพร้อมใช้งานตามบอร์ด¶
รายการด้านล่างแสดงโมดูลเฉพาะพอร์ตและโมดูลไดรเวอร์ที่มาพร้อมกับแต่ละบอร์ด โมดูลทั้งหมดใน Common, Frozen Python helpers และ Networking helpers (ด้านบน) พร้อมใช้งานบนบอร์ดกล้องทุกรุ่นหากไม่ได้ระบุไว้เป็นอื่น
OpenMV N6
STM32N657 (Cortex-M55 @ 800 MHz) พร้อม NPU บนชิปความเร็ว 1 GHz ที่ได้รับการประเมินที่ 600 GOPS INT8 จับคู่กับเซนเซอร์ PAG7936 1 MP global-shutter
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUsssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612jwt--- JSON Web Tokensmicrodot--- เฟรมเวิร์ก HTTP ขนาดเล็ก
OpenMV AE3
Alif Ensemble E3 dual-core SoC: Cortex-M55 @ 400 MHz (HP) บวก Cortex-M55 @ 160 MHz (HE) พร้อม NPU บนชิปสองตัว (HP NPU 400 MHz / 204 GOPS + HE NPU 160 MHz / 46 GOPS)
alif--- ฟังก์ชัน Alif Ensemble SoCromfs--- ยูทิลิตีตัวช่วย ROMFSpca9674a--- ไดรเวอร์ PCA9674A I2C expanderjwt--- JSON Web Tokensmicrodot--- เฟรมเวิร์ก HTTP ขนาดเล็ก
OpenMV Cam RT1062
บอร์ด machine vision ประหยัดพลังงานรอบๆ NXP i.MX RT1062 (Cortex-M7 @ 600 MHz) รวม USB-C high-speed networking, Wi-Fi / Bluetooth และ Ethernet 10/100
mimxrt--- ฟังก์ชันเฉพาะสำหรับ NXP i.MX RTdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDsssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612pca9674a--- ไดรเวอร์ PCA9674A I2C expanderjwt--- JSON Web Tokensmicrodot--- เฟรมเวิร์ก HTTP ขนาดเล็ก
OpenMV Pure Thermal
บอร์ด thermal imaging แบบครบระบบรอบๆ STM32H743 (Cortex-M7 @ 480 MHz) พร้อม SDRAM ภายนอก 64 MB, แฟลช QSPI 32 MB, codec JPEG ฮาร์ดแวร์ และเอาต์พุต DVI/HDMI
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUstfp410--- DVI/HDMI serializerft5x06--- ไดรเวอร์จอสัมผัสแบบ capacitivedht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDsssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612
OpenMV Cam H7 Plus
STM32H743 (Cortex-M7 @ 480 MHz) พร้อม SDRAM ภายนอก 32 MB, แฟลช QSPI 32 MB, codec JPEG ฮาร์ดแวร์ และโมดูลกล้อง OV5640 5MP
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUsdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDsssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612
OpenMV Cam H7
STM32H743 (Cortex-M7 @ 480 MHz) พร้อม SRAM ภายใน 1 MB, แฟลชภายใน 2 MB และ codec JPEG ฮาร์ดแวร์
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUsdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDsssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612
OpenMV Cam M7
STM32F765 (Cortex-M7 @ 216 MHz) พร้อม SRAM ภายใน 512 KB และแฟลชภายใน 2 MB มาพร้อมกับเซนเซอร์ OV7725
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUsdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDsssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612
OpenMV Cam M4
STM32F427 (Cortex-M4 @ 180 MHz) พร้อม SRAM ภายใน 256 KB และแฟลชภายใน 1 MB มาพร้อมกับเซนเซอร์ OV7725
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUsdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDsssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612
Arduino Nicla Vision
บอร์ด machine vision ขนาด 22.86 × 22.86 mm รอบๆ STM32H747AII6 dual-core SoC: Cortex-M7 @ 400 MHz บวก Cortex-M4 @ 200 MHz
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUslsm6dsox--- LSM6DSOX 6-axis IMUdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22ds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20onewire--- โปรโตคอลบัส 1-Wireneopixel--- ควบคุม WS2812 / NeoPixel LEDs
Arduino Portenta H7
บอร์ด industrial dev ขนาด 66 × 25 mm รอบๆ STM32H747XI dual-core SoC: Cortex-M7 @ 400 MHz บวก Cortex-M4 @ 200 MHz
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUsdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22ds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20onewire--- โปรโตคอลบัส 1-Wireneopixel--- ควบคุม WS2812 / NeoPixel LEDslora--- ไดรเวอร์ LoRa modemssd1306--- ไดรเวอร์ OLEDtb6612--- ไดรเวอร์มอเตอร์ TB6612
Arduino Giga R1 WiFi
บอร์ด Mega-form-factor ขนาด 101 × 53 mm รอบๆ STM32H747XI dual-core SoC: Cortex-M7 @ 480 MHz บวก Cortex-M4 @ 240 MHz พร้อมจอสัมผัส 800x480 บนบอร์ด
pyb--- ฟังก์ชันที่เกี่ยวข้องกับบอร์ดstm--- ฟังก์ชันเฉพาะสำหรับ STM32 MCUsdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireneopixel--- ควบคุม WS2812 / NeoPixel LEDsgt911--- ตัวควบคุมสัมผัส GT911 5-point capacitiveft5x06--- ไดรเวอร์จอสัมผัสแบบ capacitive
Arduino Nano RP2040 Connect
บอร์ด Nano-form-factor ที่ใช้ RP2040 พร้อมโมดูล Wi-Fi/Bluetooth U-blox NINA-W102 ไม่ได้รับการสนับสนุนอย่างแข็งขันอีกต่อไป รีลีสเฟิร์มแวร์ OpenMV ล่าสุดสำหรับบอร์ดนี้ยังคงเก็บไว้เพื่อการเก็บถาวร
rp2--- ตัวช่วย PIO / DMA / flash เฉพาะ RP2040espflash--- โปรแกรมแฟลชเฟิร์มแวร์ ESP32 ROM bootloaderlsm6dsox--- LSM6DSOX 6-axis IMUdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDs
Arduino Nano 33 BLE Sense
บอร์ด Nordic nRF52840 Nano-form-factor พร้อมชุดเซนเซอร์ Arduino บนบอร์ด ไม่ได้รับการสนับสนุนอย่างแข็งขันอีกต่อไป รีลีสเฟิร์มแวร์ OpenMV ล่าสุดสำหรับบอร์ดนี้ยังคงเก็บไว้เพื่อการเก็บถาวร
ubluepy--- Bluetooth LE peripheral และ central API บน Nordic SoftDevicebmi270--- BMI270 6-axis IMUbmm150--- BMM150 3-axis magnetometerlsm9ds1--- LSM9DS1 9-axis IMUhts221--- เซนเซอร์ความชื้น/อุณหภูมิ HTS221lps22h--- เซนเซอร์ความดัน LPS22HB/HHhs3003--- เซนเซอร์ความชื้น/อุณหภูมิ HS3003apds9960--- ไดรเวอร์เซนเซอร์ proximity, gesture และสีdht--- เซนเซอร์อุณหภูมิ/ความชื้น DHT11 และ DHT22onewire--- โปรโตคอลบัส 1-Wireds18x20--- ไดรเวอร์เซนเซอร์อุณหภูมิ DS18x20neopixel--- ควบคุม WS2812 / NeoPixel LEDs
การขยายไลบรารีในตัวจาก Python¶
โมดูลในตัวบางส่วนสามารถขยายได้โดยโค้ด Python โดยจัดหาโมดูลที่มีชื่อเดียวกันในระบบไฟล์ ความสามารถในการขยายนี้ใช้กับโมดูลไลบรารีมาตรฐาน Python ต่อไปนี้ที่ฝังอยู่ในเฟิร์มแวร์: array, binascii, collections, errno, gzip, hashlib, heapq, io, json, os, platform, random, re, select, socket, ssl, struct, time, zlib รวมถึงโมดูล machine เฉพาะของ MicroPython โมดูลในตัวอื่นๆ ทั้งหมดไม่สามารถขยายได้จากระบบไฟล์
สิ่งนี้ช่วยให้ผู้ใช้จัดหาการใช้งานขยายของไลบรารีในตัว (เพื่อให้ความเข้ากันได้กับ CPython เพิ่มเติมหรือฟังก์ชันที่ขาดหายไป) ซึ่งใช้อย่างแพร่หลายใน micropython-lib ดู การจัดการแพ็กเกจ สำหรับข้อมูลเพิ่มเติม โดยทั่วไปโมดูลระบบไฟล์จะทำการ wildcard import โมดูลในตัวเพื่อสืบทอด globals ทั้งหมด (คลาส, ฟังก์ชัน และตัวแปร) จากโมดูลในตัว
ใน MicroPython v1.21.0 ขึ้นไป เพื่อป้องกันไม่ให้โมดูลระบบไฟล์นำเข้าตัวเอง สามารถบังคับการนำเข้าโมดูลในตัวได้โดยการล้าง sys.path ชั่วคราวระหว่างการนำเข้า ตัวอย่างเช่น ในการขยายโมดูล time จาก Python ไฟล์ชื่อ time.py บนระบบไฟล์จะทำดังนี้:
_path = sys.path
sys.path = ()
try:
from time import *
finally:
sys.path = _path
del _path
def extra_method():
pass
ผลลัพธ์คือ time.py มี globals ทั้งหมดของโมดูล time ในตัว แต่เพิ่ม extra_method
ในเวอร์ชัน MicroPython เก่ากว่า คุณสามารถบังคับการนำเข้าโมดูลในตัวได้โดยการเพิ่ม u ที่ต้นชื่อ ตัวอย่างเช่น import utime แทนที่ import time สำหรับอินสแตนซ์ time.py บนระบบไฟล์อาจมีลักษณะดังนี้:
from utime import *
def extra_method():
pass
วิธีนี้ยังคงรองรับ แต่วิธี sys.path ที่อธิบายข้างต้นเป็นที่นิยมมากกว่าในขณะนี้ เนื่องจากคำนำหน้า u จะถูกลบออกจากชื่อโมดูลในตัวในเวอร์ชัน MicroPython อนาคต
นอกจากเมื่อจำเป็นต้องบังคับการใช้งานโมดูลในตัวโดยเฉพาะ โค้ดควรใช้ import module เสมอ แทนที่จะใช้ import umodule