English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

دليل أساسي لتعلم Python

تحكم في العملية في Python

الوظائف في Python

أنواع البيانات في Python

عمليات ملفات Python

أ objetos و classes في Python

تاريخ وتوقيت Python

معرفة متقدمة في Python

دليل Python

الوحدات في Python

في هذا المقال، ستتعلم كيفية إنشاء وتشغيل modules مخصصة باستخدام Python. كما ستجد تقنيات مختلفة لاستيراد واستخدام modules المخصصة والمدروجة مسبقًا في Python.

ما هو المodule في Python؟

المكتبة هي ملف يحتوي على تعريفات وجمل بايثون.

ملفات تحتوي على كود بايثون، مثل example.py، تُدعى مكتبات، ويكون اسم المكتبة example.

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

يمكننا تعريف الدوال الأكثر استخدامًا في المكتبة واستيرادها بدلاً من نسخ التعريفات إلى برامج أخرى.

لنقم بإنشاء مكتبة. اكتب النص التالي واخزنه باسم example.py.

# مثال على مكتبة بايثون
def add(a, b):
   """هذا البرنامج يقوم بجمع إثنين من الأرقام"""
       ويعيد الناتج الذي تم جمعه.
   result = a + b
   return result

في هذا المثال، قمنا بتعريف دالة add() في مكتبة تُدعى example.الدالة. هذه الدالة تأخذ数字ين وتعيد مجموعهما.

كيفية استيراد المكتبات في بايثون؟

يمكننا استيراد التعريفات الداخلية للمكتبة إلى مكتبة أخرى أو إلى المفسر التفاعلي لبايثون.

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

>>> import example

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

باستخدام اسم المكتبة، يمكننا الوصول إلى الدوال باستخدام وصفة النقاط. على سبيل المثال:

>>> example.add(4, 5.5)
9.5

بايثون يحتوي على العديد من المكتبات القياسية المتاحة.

يمكنك الرجوع إلىالمكتبات القياسية لبايثونالقائمة الكاملة لها وأغراضها. هذه الملفات تقع في مجلد Lib الموجود في موقع تثبيت بايثون.

يمكننا استيراد المكتبات القياسية مثل استيراد المكتبات المحددة من المستخدم.

هناك عدة طرق لاستيراد المكتبات. تمت عرضها كما يلي.

جملة استيراد بايثون

يمكننا استخدام جملة import لاستيراد المكتبات واستخدام وصفة النقاط لاستخدام التعريفات الداخلية لها. هذا مثال.

# مثال على جملة استيراد
# استيراد مكتبة قياسية matematية
import math
print("قيمة π", math.pi)

عند تشغيل هذا البرنامج، الناتج سيكون:

قيمة π 3.141592653589793

إعادة تسمية الاستيراد

يمكننا إعادة تسمية استيراد المكتبات مثل ذلك.

# استيراد مكتبة عبر إعادة التسمية
import math as m
print("قيمة π", m.pi)

لقد قمنا بتحويل اسم مكتبة math إلى m. في بعض الحالات، هذا يمكن أن يوفر لنا وقت الكتابة.

الرجاء الانتباه، لا يمكن التعرف على الاسم math في نطاقنا. لذلك، math.pi غير صالح، بينما m.pi هو الطريقة الصحيحة لاستخدامها.

جملة from ... import في Python

يمكننا استيراد أسماء معينة من الوحدة دون استيراد الوحدة بأكملها. هذا مثال.

# استيراد pi من وحدة الرياضيات فقط
from math import pi
print("قيمة π", pi)

نستورد خاصية pi من الوحدة فقط.

في هذه الحالة، لا نستخدم محدد النقطة. يمكننا استيراد عدة خصائص كما يلي.

>>> from math import pi, e
>>> pi
3.141592653589793
>>> e
2.718281828459045

استيراد جميع الأسماء

يمكننا استخدام بنية معينة لاستيراد جميع الأسماء (التعريفات) من الوحدة.

# استيراد جميع الأسماء من وحدة math القياسية
from math import *
print("قيمة pi", pi)

نستورد جميع التعريفات من وحدة الرياضيات.

ليس من المعتاد استيراد كل شيء يحتوي على رمز النجمة (*). هذا يمكن أن يؤدي إلى تعريف تكرار التعريف. سيؤثر هذا أيضًا على قابلية قراءة كودنا.

مسار البحث عن الوحدات في Python

عند استيراد الوحدة، يقوم Python بالبحث في عدة مواقع. يبدأ الم解释ر بالبحث عن وحدة مدمجة، ثم (إذا لم يجد) يدخل في قائمة المجلدات المحددة sys.path. يتم البحث وفق هذا الترتيب.

  • المجلد الحالي.

  • PYTHONPATH (م�ر بيئي يحتوي على قائمة المجلدات).

  • المجلدات الافتراضية المرتبطة بالتثبيت.

>>> import sys
>>> sys.path
['',
"C:\\Python33\\Lib\\idlelib",
"C:\\Windows\\system32\\python33.zip",
"C:\\Python33\\DLLs",
"C:\\Python33\\lib",
"C:\\Python33",
"C:\\Python33\\lib\\site-packages"

يمكننا إضافة تعديل هذا القائمة لإضافة مساراتنا الخاصة.

إعادة تحميل الوحدة

يستورد معالج Python الوحدة مرة واحدة فقط خلال الجلسة. هذا يجعل الأمور أكثر كفاءة. هذا مثال يوضح كيفية عمله.

افترض أن يحتوي على الكود التالي my_module في وحدة تسمى.

# هذا الوحدة عرض
# استيراد متعدد وإعادة إضافة
print("هذا الكود تم تنفيذه")

الآن نرى تأثير الاستيراد المتكرر.

>>> import my_module
هذا الكود تم تنفيذه
>>> import my_module
>>> import my_module

نحن نرى أن كودنا تم تنفيذه مرة واحدة فقط. هذا يعني أن وحدةنا تم استيرادها مرة واحدة فقط.

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

يقدم Python طريقة بسيطة. يمكننا استخدام دالة reload() في الوحدة imp لإعادة تحميل الوحدة. كيف يتم القيام بذلك.

>>> import imp
>>> import my_module
هذا الكود تم تنفيذه
>>> import my_module
>>> imp.reload(my_module)
هذا الكود تم تنفيذه
<module 'my_module' from '.\my_module.py'>

دالة داخلية dir()

يمكننا استخدام دالة dir() للعثور على الأسماء المحددة داخل الوحدة.

على سبيل المثال، قمنا بتعريف وظيفة add() في الوحدة البداية example.

>>> dir(example)
['__builtins__',
'__cached__',
'__doc__',
'__file__',
'__initializing__',
'__loader__',
'__name__',
'__package__',
'add'

في هذا السياق، يمكننا رؤية قائمة مرتبة من الأسماء (إضافة إلى add). جميع الأسماء التي تبدأ بتحتهيكل تبدو هي خاصيات Python الافتراضية المرتبطة بالوحدة (لم نحددها نحن).

على سبيل المثال، يحتوي على خاصية __name__ على اسم الوحدة.

>>> import example
>>> example.__name__
'example'

يمكنك استخدام دالة dir() بدون أي معلمات لتحديد جميع الأسماء المحددة في مجال الاسم الحالي.

>>> a = 1
>>> b = "hello"
>>> import math
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'b', 'math', 'pyscripter']