مقدمة
لغة البرمجة Python تأتي مع مجموعة متنوعة من الدوال المدمجة. ومن بين هذه الدوال عدة دوال شائعة، بما في ذلك:
print()
التي تقوم بطباعة التعابيرabs()
التي ترجع القيمة المطلقة لعددint()
التي تحول نوع بيانات آخر إلى عدد صحيحlen()
التي ترجع طول تسلسل أو مجموعة
ومع ذلك، تكون هذه الدوال المدمجة محدودة، ويمكننا الاستفادة من الوحدات لإنشاء برامج أكثر تطورًا.
الوحدات هي ملفات Python .py
تتألف من كود Python. يمكن الرجوع إلى أي ملف Python باعتباره وحدة. ملف Python يُسمى hello.py
لديه اسم وحدة هو hello
يمكن استيراده في ملفات Python أخرى أو استخدامه في محرر الأوامر التفاعلي لـ Python. يمكنك التعرف على كيفية إنشاء وحدات خاصة بك من خلال قراءة كيفية كتابة الوحدات في Python 3.
يمكن للوحدات تعريف الوظائف والفئات والمتغيرات التي يمكنك الرجوع إليها في ملفات Python الأخرى أو عبر محرر أوامر Python.
في Python، يتم الوصول إلى الوحدات باستخدام البيان import. عند القيام بذلك، تقوم بتنفيذ كود الوحدة، مما يحافظ على نطاقات التعريفات بحيث يمكن لملف(ات)ك الحالي(ة) استخدام هذه النطاقات.
عندما يقوم Python بإستيراد وحدة تسمى hello على سبيل المثال، سيقوم المترجم أولاً بالبحث عن وحدة مضمنة تسمى hello. إذا لم يتم العثور على وحدة مضمنة، سيقوم المترجم بالبحث عن ملف يسمى hello.py في قائمة الدلائل التي يتلقاها من متغير sys.path.
ستقوم هذه الدورة التعليمية بإرشادك خلال التحقق من وتثبيت الوحدات، واستيراد الوحدات، وإعطاء الوحدات أسماء مستعارة.
المتطلبات المسبقة
يجب أن تكون لديك Python 3 مثبتًا وبيئة برمجة مهيأة على جهاز الكمبيوتر أو الخادم الخاص بك. إذا لم يكن لديك بيئة برمجة مهيأة، يمكنك الرجوع إلى دليل التثبيت والإعداد لبيئة برمجة محلية أو لبيئة برمجة على الخادم مناسبة لنظام التشغيل الخاص بك (Ubuntu، CentOS، Debian، إلخ).
التحقق وتثبيت الوحدات
هناك عدد من الوحدات التي تم بناؤها في المكتبة القياسية لـ Python، التي تحتوي على العديد من الوحدات التي توفر الوصول إلى وظائف النظام أو توفر حلول موحدة. المكتبة القياسية لـ Python هي جزء من كل تثبيت لـ Python.
معلومات: لمتابعة الأمثلة في هذا البرنامج التعليمي، افتح واجهة تفاعلية Python على نظامك المحلي عبر تشغيل الأمر python3
. بعد ذلك، يمكنك نسخ، لصق، أو تعديل الأمثلة عن طريق إضافتها بعد العلامة التفاعلية >>>
.
للتحقق مما إذا كانت هذه الوحدات البرمجية في Python جاهزة للاستخدام، ادخل إلى بيئة البرمجة الخاصة بك المحلية أو بيئة البرمجة المستندة إلى الخادم وابدأ محرر Python في سطر الأوامر الخاص بك كالتالي:
من داخل المحرر، يمكنك تشغيل البيان البرمجي import
للتأكد من جاهزية الوحدة المعطاة ليتم استدعاؤها، كما في:
بما أن math
هي وحدة مدمجة، يجب أن يكتمل المحرر الخاص بك المهمة بدون أي ردود فعل، مع العودة إلى سطر الأمر. وهذا يعني أنه ليس عليك فعل أي شيء لبدء استخدام وحدة math
.
لنقم بتشغيل البيان البرمجي import
باستخدام وحدة قد لا يكون لديك تثبيتها، مثل مكتبة الرسم البياني ثنائي الأبعاد matplotlib
:
إذا لم يتم تثبيت matplotlib
، ستتلقى خطأ مثل هذا:
OutputImportError: No module named 'matplotlib'
يمكنك إيقاف تشغيل محرر Python بـ CTRL + D
ثم تثبيت matplotlib
بواسطة pip
.
بعد ذلك، يمكننا استخدام pip
لتثبيت وحدة matplotlib
:
بمجرد تثبيته، يمكنك استيراد matplotlib
في محرر Python باستخدام import matplotlib
، وسيتم اكتماله بدون أخطاء.
استيراد الوحدات
للاستفادة من الوظائف في وحدة معينة، ستحتاج إلى استيراد الوحدة باستخدام بيان import
.
يتكون البيان import من كلمة مفتاحية import مع اسم الوحدة.
في ملف Python، سيتم تعريف هذا في أعلى الشفرة، تحت أي خطوط shebang أو تعليقات عامة.
لذلك، في ملف البرنامج Python my_rand_int.py، سنقوم بإستيراد وحدة random لتوليد الأرقام العشوائية بهذه الطريقة:
عندما نقوم بإستيراد وحدة، فإننا نجعلها متاحة لنا في برنامجنا الحالي كمساحة أسماء منفصلة. هذا يعني أنه يتعين علينا الرجوع إلى الوظيفة بتعليمات النقطة، كما في [وحدة]. [وظيفة].
في الممارسة، باستخدام مثال وحدة random، يمكن أن يبدو هذا مثل وظيفة مثل:
random.randint()
التي تستدعي الوظيفة لإرجاع عدد صحيح عشوائي، أوrandom.randrange()
التي تستدعي الوظيفة لإرجاع عنصر عشوائي من نطاق محدد.
لنقم بإنشاء حلقة for لنري كيفية استدعاء وظيفة من وحدة random داخل برنامجنا my_rand_int.py:
هذا البرنامج الصغير يقوم أولاً بإستيراد وحدة random في السطر الأول، ثم ينتقل إلى حلقة for التي ستعمل مع 10 عناصر. داخل الحلقة، سيقوم البرنامج بطباعة عدد صحيح عشوائي ضمن نطاق من 1 إلى 25 (شامل). يتم تمرير الأعداد الصحيحة 1 و 25 إلى random.randint() كمعلمات له.
عند تشغيل البرنامج بالأمر python my_rand_int.py
، سنحصل على 10 أعداد صحيحة عشوائية كنتيجة. نظرًا لأن هذه الأعداد عشوائية، فمن المحتمل أن تحصل على أعداد مختلفة في كل مرة تقوم فيها بتشغيل البرنامج، ولكنها ستكون متشابهة مثل هذا:
Output6
9
1
14
3
22
10
1
15
9
لا ينبغي أن تقل الأعداد الصحيحة عن 1 أو تزيد عن 25.
إذا كنت ترغب في استخدام وظائف من أكثر من وحدة، يمكنك فعل ذلك عن طريق إضافة عدة تعليمات import
:
قد ترى برامج تقوم باستيراد وحدات متعددة مع فواصل تفصل بينها — مثل import random, math
— ولكن هذا غير متسق مع دليل أسلوب PEP 8.
للاستفادة من الوحدة الإضافية لدينا، يمكننا إضافة الثابت pi
من math
إلى برنامجنا، وتقليل عدد الأعداد الصحيحة العشوائية المطبوعة:
الآن، عند تشغيل البرنامج، سنحصل على مخرجات تبدو مثل هذا، مع تقريب لقيمة pi كآخر سطر في المخرجات:
Output18
10
7
13
10
3.141592653589793
تسمح التعليمة import
لك باستيراد وحدة واحدة أو أكثر إلى برنامج Python الخاص بك، مما يتيح لك الاستفادة من التعريفات المنشأة في تلك الوحدات.
استخدام from
… import
للإشارة إلى العناصر من وحدة في فضاء أسماء برنامجك، يمكنك استخدام البيان from
… import
. عندما تقوم باستيراد الوحدات بهذه الطريقة، يمكنك الإشارة إلى الوظائف بالاسم بدلاً من استخدام العلامة النقطية
في هذا البناء، يمكنك تحديد النسخ التي تريد الإشارة إليها مباشرة.
في برامج أخرى، قد ترى بيان الاستيراد يأخذ مراجع إلى كل ما تم تحديده داخل الوحدة باستخدام علامة النجمة (*
) كحرف مطابق، ولكن هذا مستحب بواسطة PEP 8.
لنراجع أولاً استيراد وظيفة محددة واحدة، randint()
من الوحدة random
:
هنا، نستخدم الكلمة المفتاحية from
أولاً، ثم random
للوحدة. بعد ذلك، نستخدم الكلمة المفتاحية import
ونستدعي الوظيفة المحددة التي نود استخدامها.
الآن، عند تنفيذ هذه الوظيفة داخل برنامجنا، لن نقوم بكتابة الوظيفة بعلامة نقطة كما في random.randint()
ولكن سنكتب فقط randint()
:
عند تشغيل البرنامج، ستتلقى إخراجاً مماثلاً لما تلقيناه في وقت سابق.
استخدام بناء from
… import
يتيح لنا الإشارة إلى العناصر المحددة من وحدة داخل فضاء أسماء برنامجنا، مما يتيح لنا تجنب العلامة النقطية.
الاسم المستعار للوحدات
من الممكن تعديل أسماء الوحدات ووظائفها داخل لغة البرمجة Python باستخدام الكلمة المفتاحية as
.
قد ترغب في تغيير الاسم لأنك قد استخدمت الاسم نفسه بالفعل لشيء آخر في برنامجك، أو أن وحدة أخرى قمت بتوريدها تستخدم أيضًا ذلك الاسم، أو قد ترغب في اختصار اسم طويل تستخدمه كثيرًا.
يبدو بناء هذا البيان كما يلي:
لنقم بتعديل اسم وحدة math
في ملف برنامجنا my_math.py
. سنغير اسم الوحدة من math
إلى m
لاختصاره. سيبدو برنامجنا المعدل كما يلي:
في البرنامج، نشير الآن إلى الثابت pi
باستخدام m.pi
بدلاً من math.pi
.
بالنسبة لبعض الوحدات، من الشائع استخدام الأسماء المستعارة. تطلب matplotlib.pyplot
وثائق الوحدة استخدام plt
كاسم مستعار:
يسمح هذا للمبرمجين بإضافة الكلمة القصيرة plt
إلى أي من الوظائف المتاحة داخل الوحدة، كما في plt.show()
. يمكنك رؤية بيان استيراد الاسم المستعار هذا في استخدامنا “دليل كيفية عرض البيانات في Python 3 باستخدام matplotlib
.”
الختام
عندما نقوم باستيراد الوحدات، نستطيع استدعاء الوظائف التي ليست مدمجة في Python. يتم تثبيت بعض الوحدات كجزء من Python، ويتم تثبيت البعض الآخر عبر pip
.
استخدام الوحدات يسمح لنا بجعل برامجنا أكثر قوة ومتانة حيث نستفيد من الشيفرة الموجودة بالفعل. يمكننا أيضًا إنشاء وحداتنا الخاصة لأنفسنا ولمبرمجين آخرين لاستخدامها في البرامج المستقبلية.
Source:
https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3