أساسيات بايثون 24: شرح Modules و import في Python للمبتدئين

أساسيات بايثون 24 شرح Modules و import في Python للمبتدئين من بايثون العرب

{getToc} $title={محتوى المقال}

في الدروس السابقة من أساسيات بايثون تعلمنا كيف نتعامل مع الملفات، ثم تعلمنا كيف نستخدم try و except لمعالجة الأخطاء بدل أن يتوقف البرنامج فجأة.

في هذا الدرس سننتقل إلى فكرة مهمة جدًا في بايثون، وهي فكرة Modules أو الوحدات البرمجية. ستتعلم ما معنى Module، ولماذا نستخدم الأمر import، وكيف نستفيد من مكتبات بايثون الجاهزة بدل أن نكتب كل شيء من الصفر.

الفكرة ببساطة: بدل أن تكتب كل الأدوات بنفسك، يمكنك استدعاء أدوات جاهزة في بايثون باستخدام import. {alertInfo}

ما معنى Module في Python؟

شرح فكرة Module و import في Python وكيف تستدعي مكتبة جاهزة داخل برنامج بايثون

الـ Module في بايثون هو ملف يحتوي على كود جاهز يمكنك استخدامه داخل برنامجك. قد يحتوي هذا الملف على دوال، متغيرات، كائنات، أو أوامر تساعدك في تنفيذ مهام معينة.

مثلاً، بدل أن تكتب بنفسك دوال رياضية متقدمة، يمكنك استخدام مكتبة math. وبدل أن تكتب طريقة عشوائية لاختيار رقم، يمكنك استخدام مكتبة random.

يعني الـ Module يشبه صندوق أدوات جاهز. عندما تحتاج أداة معينة، تستدعي الصندوق وتستخدم الأداة التي تريدها.

ما وظيفة import في بايثون؟

الأمر import يستخدم لاستدعاء Module داخل برنامجك حتى تستطيع استخدام الدوال أو الأدوات الموجودة فيه.

مثال بسيط:

import math

result = math.sqrt(16)

print(result)

الناتج:

4.0

في المثال السابق استدعينا مكتبة math، ثم استخدمنا الدالة sqrt() لحساب الجذر التربيعي للعدد 16.

ملاحظة مهمة: عندما تستخدم import math يجب أن تكتب اسم المكتبة قبل الدالة، مثل math.sqrt(). {alertInfo}

مثال عملي على استخدام مكتبة math

مثال استخدام مكتبة math و random في بايثون للمبتدئين مع أوامر import

مكتبة math تحتوي على أدوات رياضية كثيرة، مثل الجذر التربيعي، التقريب، الثوابت الرياضية، وغير ذلك.

import math

print(math.sqrt(25))
print(math.ceil(4.2))
print(math.floor(4.9))

الناتج:

5.0
5
4

شرح المثال:

  • sqrt() تحسب الجذر التربيعي.
  • ceil() تقرب الرقم إلى الأعلى.
  • floor() تقرب الرقم إلى الأسفل.

استخدام from import لاستدعاء جزء محدد

أحيانًا لا تحتاج إلى استدعاء المكتبة كاملة، بل تريد دالة واحدة فقط. هنا يمكنك استخدام:

from math import sqrt

print(sqrt(36))

الناتج:

6.0

لاحظ هنا أننا لم نكتب math.sqrt()، بل كتبنا sqrt() مباشرة لأننا استدعينا الدالة نفسها من المكتبة.

مقارنة بين import و from import و import as في Python مع أمثلة مبسطة للمبتدئين
الطريقة مثال متى تستخدمها؟
import math math.sqrt(16) عندما تريد استخدام أكثر من دالة من نفس المكتبة.
from math import sqrt sqrt(16) عندما تحتاج دالة محددة فقط.

استخدام as لتغيير اسم المكتبة

في بعض الأحيان يكون اسم المكتبة طويلًا، أو تريد اختصاره داخل الكود. هنا نستخدم as.

import math as m

print(m.sqrt(49))

الناتج:

7.0

في هذا المثال جعلنا اسم مكتبة math هو m داخل البرنامج.

نصيحة: لا تختصر أسماء المكتبات بشكل مبالغ فيه. استخدم اختصارًا واضحًا حتى يبقى الكود مفهومًا لك ولغيرك. {alertWarning}

مثال على مكتبة random

مكتبة random تستخدم لتوليد أرقام عشوائية أو اختيار عناصر بشكل عشوائي.

import random

number = random.randint(1, 10)

print(number)

هذا الكود يطبع رقمًا عشوائيًا من 1 إلى 10.

كل مرة تشغل البرنامج قد تحصل على نتيجة مختلفة.

اختيار عنصر عشوائي من قائمة

يمكنك أيضًا استخدام random.choice() لاختيار عنصر عشوائي من قائمة.

import random

names = ["Ali", "Sara", "Omar"]

winner = random.choice(names)

print(winner)

هذا المثال يختار اسمًا عشوائيًا من القائمة.

مثال صغير: برنامج قرعة بسيط

لنطبق الآن على مثال عملي بسيط. سنكتب برنامجًا يختار فائزًا عشوائيًا من قائمة أسماء.

import random

students = ["أحمد", "سارة", "محمد", "ليلى"]

winner = random.choice(students)

print("الفائز هو:", winner)

هذا النوع من الأمثلة مفيد جدًا للمبتدئ لأنه يجمع بين أكثر من فكرة تعلمناها سابقًا:

  • استخدام القوائم في بايثون.
  • استخدام المتغيرات.
  • استخدام import.
  • استخدام دالة جاهزة من مكتبة خارجية.
  • طباعة النتيجة باستخدام print().

ما الفرق بين المكتبات المدمجة والمكتبات الخارجية؟

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

النوع المعنى أمثلة
مكتبات مدمجة تأتي مع بايثون ولا تحتاج إلى تثبيت إضافي. math، random، datetime، os
مكتبات خارجية تحتاج إلى تثبيت باستخدام أدوات مثل pip. requests، pandas، flask

في هذا الدرس نركز على المكتبات المدمجة حتى تفهم فكرة import بدون الدخول في مشاكل التثبيت.

مثال على مكتبة datetime

مكتبة datetime تساعدك في التعامل مع التاريخ والوقت.

import datetime

today = datetime.date.today()

print(today)

هذا الكود يطبع تاريخ اليوم.

وقد تختلف النتيجة حسب تاريخ تشغيل البرنامج.

مثال عملي: عرض تاريخ اليوم برسالة واضحة

import datetime

today = datetime.date.today()

print("تاريخ اليوم هو:", today)

هذا المثال بسيط، لكنه يوضح كيف يمكن لمكتبة جاهزة أن تضيف ميزة مفيدة إلى برنامجك بدون كتابة تفاصيل معقدة.

هل يمكن إنشاء Module خاص بي؟

نعم، يمكنك إنشاء Module خاص بك في بايثون. أي ملف Python بامتداد .py يمكن اعتباره Module.

مثلاً، لنفترض أن لديك ملفًا اسمه:

my_tools.py

وبداخله هذا الكود:

def say_hello(name):
    print("مرحبا", name)

ثم في ملف آخر داخل نفس المجلد يمكنك استدعاؤه هكذا:

import my_tools

my_tools.say_hello("أحمد")

الناتج:

مرحبا أحمد

بهذه الطريقة تستطيع تقسيم مشروعك إلى ملفات صغيرة بدل وضع كل الكود في ملف واحد كبير.

فائدة مهمة: تقسيم الكود إلى Modules يجعل المشروع أسهل في القراءة، وأسهل في التعديل، وأسهل في الصيانة. {alertSuccess}

أخطاء شائعة عند استخدام import

ملخص أخطاء import الشائعة في بايثون مثل ModuleNotFoundError و ImportError وكيف تتجنبها

قد تظهر لك بعض الأخطاء عند استخدام import، خصوصًا في بداية التعلم.

الخطأ السبب المحتمل الحل
ModuleNotFoundError اسم المكتبة غير صحيح أو المكتبة غير مثبتة. تأكد من كتابة الاسم بشكل صحيح، أو ثبت المكتبة إذا كانت خارجية.
NameError استخدمت دالة من مكتبة بدون استدعاء المكتبة. اكتب import قبل استخدام الدالة.
AttributeError استدعيت دالة غير موجودة داخل المكتبة. راجع اسم الدالة وتأكد من كتابته بشكل صحيح.

مثال على خطأ بسبب نسيان import

number = random.randint(1, 10)

print(number)

هذا الكود سيسبب خطأ لأننا استخدمنا random بدون استدعائها.

الصحيح:

import random

number = random.randint(1, 10)

print(number)

هل أستخدم import في بداية الملف أم في وسط الكود؟

الأفضل غالبًا أن تضع أوامر import في بداية ملف Python، حتى يكون واضحًا من أول الكود ما هي المكتبات التي يعتمد عليها البرنامج.

مثال منظم:

import random
import datetime

name = "Ali"
number = random.randint(1, 100)
today = datetime.date.today()

print("Name:", name)
print("Random number:", number)
print("Today:", today)

أفضل ممارسات استخدام import للمبتدئين

  • اكتب أوامر import في بداية الملف.
  • لا تستورد مكتبات لا تستخدمها داخل البرنامج.
  • استخدم import module عندما تحتاج أكثر من دالة من نفس المكتبة.
  • استخدم from module import function عندما تحتاج دالة واحدة فقط.
  • لا تستخدم أسماء ملفات مثل random.py أو math.py حتى لا تتعارض مع أسماء مكتبات بايثون.
  • عند ظهور خطأ، اقرأ اسم الخطأ بعناية قبل تعديل الكود.
تنبيه مهم: لا تسمِّ ملفك باسم مكتبة جاهزة مثل random.py أو math.py، لأن ذلك قد يسبب مشاكل عند الاستدعاء. {alertWarning}

مثال تطبيقي: برنامج اختيار تحدي عشوائي

لنكتب برنامجًا بسيطًا يختار لك تحديًا عشوائيًا من قائمة تحديات للمبتدئين.

import random

challenges = [
    "اكتب برنامج يجمع رقمين",
    "اكتب برنامج يحسب العمر",
    "اكتب برنامج يطبع الأرقام من 1 إلى 10",
    "اكتب برنامج يختار اسمًا عشوائيًا من قائمة"
]

challenge = random.choice(challenges)

print("تحدي اليوم:")
print(challenge)

هذا المثال مناسب جدًا للمراجعة لأنه يستخدم:

  • قائمة list.
  • مكتبة random.
  • الأمر import.
  • الدالة choice().
  • طباعة النصوص باستخدام print().

روابط مفيدة من بايثون العرب

حتى تفهم هذا الدرس بشكل أفضل، أنصحك بمراجعة هذه الدروس من موقع بايثون العرب:

ويمكنك أيضًا الرجوع إلى توثيق بايثون الرسمي لمعرفة المزيد عن الوحدات البرمجية: Python Modules Documentation.

تمرين بسيط على الدرس

جرّب كتابة برنامج يقوم بالآتي:

  1. يستورد مكتبة random.
  2. ينشئ قائمة تحتوي على 5 أرقام.
  3. يختار رقمًا عشوائيًا من القائمة.
  4. يطبع الرقم المختار للمستخدم.

حاول تنفيذ التمرين بنفسك أولًا، ثم قارن حلك بهذا الحل:

import random

numbers = [10, 20, 30, 40, 50]

selected_number = random.choice(numbers)

print("الرقم المختار هو:", selected_number)

خلاصة الدرس

تعلمنا في هذا الدرس أن Module هو ملف أو مكتبة تحتوي على كود جاهز يمكننا استخدامه داخل برامجنا. وتعلمنا أن الأمر import يستخدم لاستدعاء هذه المكتبات.

كما تعلمنا الفرق بين:

  • import module
  • from module import function
  • import module as name

واستخدمنا أمثلة عملية على مكتبات مثل math و random و datetime.

الخلاصة المهمة: استخدام import يجعلك تستفيد من أدوات جاهزة في بايثون، ويوفر عليك الوقت، ويجعل برامجك أقوى وأسهل في التطوير. {alertSuccess}

أسئلة شائعة مع إجاباتها

ما معنى import في Python؟

الأمر import يستخدم لاستدعاء مكتبة أو Module داخل برنامج بايثون حتى تستطيع استخدام الدوال والأدوات الموجودة فيه.

ما الفرق بين import math و from math import sqrt؟

عند استخدام import math تستدعي المكتبة كاملة وتستخدم الدالة بهذا الشكل math.sqrt(). أما عند استخدام from math import sqrt فيمكنك استخدام sqrt() مباشرة.

هل مكتبات مثل random و math تحتاج إلى تثبيت؟

لا، مكتبات مثل random و math و datetime تأتي مدمجة مع بايثون ولا تحتاج إلى تثبيت إضافي.

لماذا يظهر خطأ ModuleNotFoundError؟

يظهر هذا الخطأ غالبًا عندما تكتب اسم المكتبة بشكل خاطئ، أو عندما تحاول استدعاء مكتبة خارجية غير مثبتة على جهازك.

هل يمكنني إنشاء Module خاص بي؟

نعم، أي ملف Python بامتداد .py يمكن استدعاؤه كـ Module من ملف آخر إذا كان في نفس المجلد أو في مسار يمكن لبايثون الوصول إليه.

إرسال تعليق

أحدث أقدم