كيفية استيراد الوحدات في Python 3

مقدمة

لغة البرمجة 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 في سطر الأوامر الخاص بك كالتالي:

  1. python

من داخل المحرر، يمكنك تشغيل البيان البرمجي import للتأكد من جاهزية الوحدة المعطاة ليتم استدعاؤها، كما في:

  1. import math

بما أن math هي وحدة مدمجة، يجب أن يكتمل المحرر الخاص بك المهمة بدون أي ردود فعل، مع العودة إلى سطر الأمر. وهذا يعني أنه ليس عليك فعل أي شيء لبدء استخدام وحدة math.

لنقم بتشغيل البيان البرمجي import باستخدام وحدة قد لا يكون لديك تثبيتها، مثل مكتبة الرسم البياني ثنائي الأبعاد matplotlib:

  1. import matplotlib

إذا لم يتم تثبيت matplotlib، ستتلقى خطأ مثل هذا:

Output
ImportError: No module named 'matplotlib'

يمكنك إيقاف تشغيل محرر Python بـ CTRL + D ثم تثبيت matplotlib بواسطة pip.

بعد ذلك، يمكننا استخدام pip لتثبيت وحدة matplotlib:

  1. pip install matplotlib

بمجرد تثبيته، يمكنك استيراد matplotlib في محرر Python باستخدام import matplotlib، وسيتم اكتماله بدون أخطاء.

استيراد الوحدات

للاستفادة من الوظائف في وحدة معينة، ستحتاج إلى استيراد الوحدة باستخدام بيان import.

يتكون البيان import من كلمة مفتاحية import مع اسم الوحدة.

في ملف Python، سيتم تعريف هذا في أعلى الشفرة، تحت أي خطوط shebang أو تعليقات عامة.

لذلك، في ملف البرنامج Python my_rand_int.py، سنقوم بإستيراد وحدة random لتوليد الأرقام العشوائية بهذه الطريقة:

my_rand_int.py
import random

عندما نقوم بإستيراد وحدة، فإننا نجعلها متاحة لنا في برنامجنا الحالي كمساحة أسماء منفصلة. هذا يعني أنه يتعين علينا الرجوع إلى الوظيفة بتعليمات النقطة، كما في [وحدة]. [وظيفة].

في الممارسة، باستخدام مثال وحدة random، يمكن أن يبدو هذا مثل وظيفة مثل:

  • random.randint() التي تستدعي الوظيفة لإرجاع عدد صحيح عشوائي، أو
  • random.randrange() التي تستدعي الوظيفة لإرجاع عنصر عشوائي من نطاق محدد.

لنقم بإنشاء حلقة for لنري كيفية استدعاء وظيفة من وحدة random داخل برنامجنا my_rand_int.py:

my_rand_int.py
import random


for i in range(10):
    print(random.randint(1, 25))

هذا البرنامج الصغير يقوم أولاً بإستيراد وحدة random في السطر الأول، ثم ينتقل إلى حلقة for التي ستعمل مع 10 عناصر. داخل الحلقة، سيقوم البرنامج بطباعة عدد صحيح عشوائي ضمن نطاق من 1 إلى 25 (شامل). يتم تمرير الأعداد الصحيحة 1 و 25 إلى random.randint() كمعلمات له.

عند تشغيل البرنامج بالأمر python my_rand_int.py، سنحصل على 10 أعداد صحيحة عشوائية كنتيجة. نظرًا لأن هذه الأعداد عشوائية، فمن المحتمل أن تحصل على أعداد مختلفة في كل مرة تقوم فيها بتشغيل البرنامج، ولكنها ستكون متشابهة مثل هذا:

Output
6 9 1 14 3 22 10 1 15 9

لا ينبغي أن تقل الأعداد الصحيحة عن 1 أو تزيد عن 25.

إذا كنت ترغب في استخدام وظائف من أكثر من وحدة، يمكنك فعل ذلك عن طريق إضافة عدة تعليمات import:

my_rand_int.py
import random
import math

قد ترى برامج تقوم باستيراد وحدات متعددة مع فواصل تفصل بينها — مثل import random, math — ولكن هذا غير متسق مع دليل أسلوب PEP 8.

للاستفادة من الوحدة الإضافية لدينا، يمكننا إضافة الثابت pi من math إلى برنامجنا، وتقليل عدد الأعداد الصحيحة العشوائية المطبوعة:

my_rand_int.py
import random
import math


for i in range(5):
    print(random.randint(1, 25))

print(math.pi)

الآن، عند تشغيل البرنامج، سنحصل على مخرجات تبدو مثل هذا، مع تقريب لقيمة pi كآخر سطر في المخرجات:

Output
18 10 7 13 10 3.141592653589793

تسمح التعليمة import لك باستيراد وحدة واحدة أو أكثر إلى برنامج Python الخاص بك، مما يتيح لك الاستفادة من التعريفات المنشأة في تلك الوحدات.

استخدام fromimport

للإشارة إلى العناصر من وحدة في فضاء أسماء برنامجك، يمكنك استخدام البيان fromimport. عندما تقوم باستيراد الوحدات بهذه الطريقة، يمكنك الإشارة إلى الوظائف بالاسم بدلاً من استخدام العلامة النقطية

في هذا البناء، يمكنك تحديد النسخ التي تريد الإشارة إليها مباشرة.

في برامج أخرى، قد ترى بيان الاستيراد يأخذ مراجع إلى كل ما تم تحديده داخل الوحدة باستخدام علامة النجمة (*) كحرف مطابق، ولكن هذا مستحب بواسطة PEP 8.

لنراجع أولاً استيراد وظيفة محددة واحدة، randint() من الوحدة random:

my_rand_int.py
from random import randint

هنا، نستخدم الكلمة المفتاحية from أولاً، ثم random للوحدة. بعد ذلك، نستخدم الكلمة المفتاحية import ونستدعي الوظيفة المحددة التي نود استخدامها.

الآن، عند تنفيذ هذه الوظيفة داخل برنامجنا، لن نقوم بكتابة الوظيفة بعلامة نقطة كما في random.randint() ولكن سنكتب فقط randint():

my_rand_int.py
from random import randint


for i in range(10):
    print(randint(1, 25))

عند تشغيل البرنامج، ستتلقى إخراجاً مماثلاً لما تلقيناه في وقت سابق.

استخدام بناء fromimport يتيح لنا الإشارة إلى العناصر المحددة من وحدة داخل فضاء أسماء برنامجنا، مما يتيح لنا تجنب العلامة النقطية.

الاسم المستعار للوحدات

من الممكن تعديل أسماء الوحدات ووظائفها داخل لغة البرمجة Python باستخدام الكلمة المفتاحية as.

قد ترغب في تغيير الاسم لأنك قد استخدمت الاسم نفسه بالفعل لشيء آخر في برنامجك، أو أن وحدة أخرى قمت بتوريدها تستخدم أيضًا ذلك الاسم، أو قد ترغب في اختصار اسم طويل تستخدمه كثيرًا.

يبدو بناء هذا البيان كما يلي:

import [module] as [another_name]

لنقم بتعديل اسم وحدة math في ملف برنامجنا my_math.py. سنغير اسم الوحدة من math إلى m لاختصاره. سيبدو برنامجنا المعدل كما يلي:

my_math.py
import math as m


print(m.pi)
print(m.e)

في البرنامج، نشير الآن إلى الثابت pi باستخدام m.pi بدلاً من math.pi.

بالنسبة لبعض الوحدات، من الشائع استخدام الأسماء المستعارة. تطلب matplotlib.pyplot وثائق الوحدة استخدام plt كاسم مستعار:

import matplotlib.pyplot as plt

يسمح هذا للمبرمجين بإضافة الكلمة القصيرة plt إلى أي من الوظائف المتاحة داخل الوحدة، كما في plt.show(). يمكنك رؤية بيان استيراد الاسم المستعار هذا في استخدامنا “دليل كيفية عرض البيانات في Python 3 باستخدام matplotlib.”

الختام

عندما نقوم باستيراد الوحدات، نستطيع استدعاء الوظائف التي ليست مدمجة في Python. يتم تثبيت بعض الوحدات كجزء من Python، ويتم تثبيت البعض الآخر عبر pip.

استخدام الوحدات يسمح لنا بجعل برامجنا أكثر قوة ومتانة حيث نستفيد من الشيفرة الموجودة بالفعل. يمكننا أيضًا إنشاء وحداتنا الخاصة لأنفسنا ولمبرمجين آخرين لاستخدامها في البرامج المستقبلية.

Source:
https://www.digitalocean.com/community/tutorials/how-to-import-modules-in-python-3