__import__() دالة import المنخفضة المستوى
آخر تحديث: 2026-09-22
__import__() دالة import المنخفضة المستوى
__import__ هي الدالة التي تستدعيها عبارة import في المستوى المنخفض؛ استخدم عبارة import في الاستخدام اليومي. تُستخدم فقط في سيناريوهات الاستيراد الديناميكي.
| التصنيف | الدوال المدمجة |
|---|---|
| النوع | دالة مدمجة |
| إصدار بايثون | all |
📝 الصياغة
__import__(name, globals=None, locals=None, fromlist=(), level=0)
⚙️ المعاملات
| name مطلوب | The module name (string). |
|---|---|
| globals اختياري | The global namespace dict.(القيمة الافتراضية:None) |
| locals اختياري | The local namespace dict.(القيمة الافتراضية:None) |
| fromlist اختياري | Names of submodules or attributes to import.(القيمة الافتراضية:()) |
| level اختياري | Relative import level; 0 means absolute.(القيمة الافتراضية:0) |
القيمة المُعادة:The top-level module object (not the attributes in fromlist).
💥 الاستثناءات
ImportError— Raised when the module cannot be found or imported.
▶ مثال
عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:
المخرجات:
4.0
⚠️ تحذير تحميل أسماء وحدات غير موثوقة ديناميكيًا ينطوي على مخاطر أمنية؛ استخدم import في الاستخدام اليومي.
🏷️ دوال مدمجة ذات صلة
💡 حالات ذات صلة
المزيد من الحالات قادم قريباً — تابعونا.
❓ أسئلة شائعة
Qلماذا لا أستدعي __import__() مباشرة بدل جملة import؟
Aتتولى جملة import ربط الأسماء ودلالات fromlist وتفاصيل أخرى؛ __import__() مجرد دالة تنفيذ منخفضة المستوى — استخدم import للاستيراد اليومي.
Qماذا تُرجع __import__('math')؟
Aتُرجع كائن وحدة math. لاحظ أنها تُرجع الوحدة العليا: بالنسبة إلى import a.b تُرجع __import__ الوحدة a لا b.
Qماذا أستخدم للاستيراد الديناميكي؟
Aأفضل استخدام importlib.import_module(name)؛ فهو يُرجع الوحدة المحددة لا العليا، بدلالة أوضح من __import__.
Qهل الاستيراد الديناميكي لاسم وحدة غير موثوق خطر؟
Aنعم — قد يُحمّل وينفّذ كودًا اعتباطيًا؛ عندما يأتي اسم الوحدة من مدخلات مستخدم يجب التحقق منه بدقة ضد قائمة بيضاء.