2.18. استخدام الوحدات¶
الوحدة هي مجموعة من شيفرة Python -- دوال وفئات وثوابت -- مُحزّمة بحيث يمكن إعادة استخدامها عبر العديد من البرامج النصية. تأتي Python مع مكتبة قياسية مليئة بها، ويضيف البرنامج الثابت لـ OpenMV المزيد منها للتحدث مع الكاميرا. يتم الوصول إلى وحدة باستخدام import.
2.18.1. import¶
أكثر الصيغ مباشرةً تجلب الوحدة بأكملها تحت اسمها الخاص:
import math
print(math.sqrt(2))
المخرجات:
1.4142135623730951
بعد import، يصبح كل اسم معرّف في math قابلًا للوصول كـ math.<name>. يأتي اسم الوحدة من اسم ملفها (دون .py)؛ وبادئة فضاء الأسماء تمنع تصادم وحدتين تحملان دالة بالاسم نفسه.
2.18.2. from ... import¶
لجلب أسماء محددة مباشرةً إلى النطاق الحالي، استخدم from:
from math import sqrt, pi
print(sqrt(2), pi)
المخرجات:
1.4142135623730951 3.141592653589793
لم تعد هناك بادئة فضاء أسماء. هذا ملائم للأسماء كثيرة الاستخدام، لكن استيراد from الذي يجلب أسماء كثيرة يجعل من الأصعب معرفة من أين أتى كل اسم. غالبًا ما يكون import math العادي أوضح في البرامج النصية الأكبر.
صيغة النجمة from math import * تجلب كل شيء تصدّره الوحدة. تجاوزها -- فهي تلوّث فضاء الأسماء وتعرقل الإكمال التلقائي في الـ IDE.
2.18.3. إسناد اسم بديل باستخدام as¶
يمكن اختصار أسماء الوحدات الطويلة باستخدام as:
import json as j
j.dumps({"ok": True})
تعمل الحيلة نفسها على الأسماء المفردة المستوردة باستخدام from:
from math import sqrt as root
root(9) # 3.0
بالنسبة لشيفرة Python العامة، استخدم الاسم البديل فقط عندما يكون الاسم الأصلي طويلًا فعلًا أو يتعارض مع شيء آخر موجود في النطاق.
2.18.4. الوحدات المتاحة¶
مرجع المكتبة يسرد كل وحدة مشحونة على الكاميرا -- المكتبة القياسية لـ MicroPython والوحدات الخاصة بـ OpenMV التي تشغّل مستشعر الصورة، وتنفّذ الرؤية الآلية، وتتحكم في العتاد المدمج. وكلها تستخدم آلية import نفسها الموضّحة أعلاه.