"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيف يمكنني الحصول على قائمة بالوحدات النمطية المستوردة في برنامج Python الخاص بي؟

كيف يمكنني الحصول على قائمة بالوحدات النمطية المستوردة في برنامج Python الخاص بي؟

تم النشر بتاريخ 2024-11-01
تصفح:132

How can I get a list of imported modules in my Python program?

الحصول على قائمة الوحدات المستوردة

تعد قائمة الوحدات المستوردة تقنية قيمة لفهم تبعيات وبنية برنامج بايثون. لحسن الحظ، توفر بايثون طريقة مباشرة لاسترداد هذه المعلومات.

لتعداد كافة الوحدات المستوردة إلى برنامجك، استخدم الكود التالي:

import sys
sys.modules.keys()
يصل هذا المقتطف إلى قاموس sys.modules، الذي يحتوي على مفاتيح تمثل أسماء الوحدات. من خلال التكرار على هذه المفاتيح، يمكنك استرداد قائمة الوحدات المستوردة.

على سبيل المثال، بالنظر إلى الكود:

import os
import sys
نتيجة تنفيذ الأمر هي ['os', 'sys']، مما يوفر لك أسماء الوحدات المستوردة.

إذا كنت مهتمًا بالحصول على قائمة من الواردات على وجه التحديد ضمن الوحدة الحالية، يمكنك استخدام النهج التالي:

import types
def imports():
    for name, val in globals().items():
        if isinstance(val, types.ModuleType):
            yield val.__name__
تستكشف هذه الوظيفة globals() للوحدة الحالية وتقوم بتصفية الإدخالات التي تمثل مثيلات للأنواع.ModuleType. يُرجع هذا التقريب أسماء الوحدات الأصلية حتى لو تم استخدام الأسماء المستعارة في عمليات الاستيراد.

لاحظ أن هذه الوظيفة لا تتضمن عمليات الاستيراد المحلية أو عمليات الاستيراد غير التابعة للوحدة مثل 'from x import y'. بالإضافة إلى ذلك، تقوم بإرجاع val.__name__، الذي يتوافق مع اسم الوحدة الأصلية. للحصول على الأسماء المستعارة بدلاً من ذلك، يمكنك استخدام اسم العائد في الوظيفة.

أحدث البرنامج التعليمي أكثر>

تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.

Copyright© 2022 湘ICP备2022001581号-3