• 0
mohamedz

الدرس السابع عشر : المكتبات و الحزم

سؤال

مكتبات بايثون

تعرفنا في الدرس السابق على المكتبة os، اليوم سنتعلم كيفية برمجة مكتبات بايثون (python libs/modules) خاصة بنا لإستخدامها في برامجنا.

على سبيل المثال بايثون لا تقوم بتوفير الدوال الخاصة بالرياضيات مباشرة :

>>> cos(30)

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
cos(30)
NameError: name 'cos' is not defined

إذا كيف أتعامل مع الدوال الرياضية ؟

علينا إستدعاء المكتبة المسماة math و هي مكتبة تحتوي على العديد من الدوال الرياضية، كالتالي :

import math

كما يمكننا الإستفادة من دوالها كالتالي :

>>> import math
>>> math.cos(30)
0.15425144988758405
>>> math.sin(30)
-0.9880316240928618
>>> math.factorial(3)
6

لكن أين توجد هذه المكتبات ؟

مفسر بايثون لا يعلم عن كل ملف بايثون في جهازك لكن هناك بعض الأماكن التي يبحث فيها عن المكتبات فور إستدعائها مثل المجلد الحالي للسكربت و مجلد بايثون و مجلد site-package (يفضل إستخدامه عند إظافة مكتبات بايثون خاصة بك).

للحصول على القائمة كاملة التي يبحث فيها المفسر نستعمل الدالة path الموجودة في مكتبة sys.

>>> import sys
>>> sys.path
['', 'C:\\Python27\\Lib\\idlelib', 'C:\\WINDOWS\\system32\\python27.zip', 'C:\\Python27\\DLLs', 'C:\\Python27\\lib', 'C:\\Python27\\lib\\plat-win', 'C:\\Python27\\lib\\lib-tk', 'C:\\Python27', 'C:\\Python27\\lib\\site-packages']

مكتبتي الأولى

سننشئ مكتبة للرياضيات إسمها MyMath تقوم بالعمليات الأساسية +,-,*,/ :

#################
# MyMath #
# VERSION : 0.1 #
#################

def add(x, y) :
return x + y
def sub(x, y) :
return x - y
def mul(x, y) :
return x * y
def div(x, y) :
return x / y

قم بحفظ هذا الملف بإسم MyMath.py في المسار التالي :

/usr/lib/python/site-packages

إستخدام المكتبة

نستدعي المكتبة كالتالي :

import MyMath

شرح إستخدام المكتبة عن طريق سكربت :

#!/usr/bin/python
import MyMath
print MyMath.add(1, 9)
print MyMath.sub(10, 2)
print MyMath.mul(5, 5)
print MyMath.div(25, 5)

عند التنفيذ :

>>> ================================ RESTART ================================
>>>
10
8
25
5
>>>

النسخة الثانية من مكتبة MyMath

سنقوم بتطوير module السابقة بإضافة الدالة pwr التي تحسب القوة (الأس)، و الدالة rod التي تحسب باقي قسمة عدد على عدد، و الدالة sqr التي تحسب الجذر. كالتالي :

#################
# MyMath #
# VERSION : 0.2 #
#################

def add(x, y) :
return x + y
def sub(x, y) :
return x - y
def mul(x, y) :
return x * y
def div(x, y) :
return x / y
def pwr(x, y) :
return x ** y
def rod(x, y) :
return x % y
def sqr(x) :
return x ** 0.5

هذا السكربت يستخدم النسخة الثانية من المكتبة :

#!/usr/bin/python
import MyMath
print MyMath.add(1, 9)
print MyMath.sub(10, 2)
print MyMath.mul(5, 5)
print MyMath.div(25, 5)
print MyMath.pwr(3, 2)
print MyMath.rod(9, 2)
print MyMath.sqr(9)

عند التنفيذ :

>>> ================================ RESTART ================================
>>>
10
8
25
5
9
1
3.0
>>>

النسخة الثالثة من مكتبة MyMath (كائنية)

سنقوم بتطوير المكتبة لتتبع أسلوب البرمجة الكائنية المنحى. كالتالي :

#################
# MyMath #
# VERSION : 0.3 #
#################

class calc(object) :
def add(self, x, y) :
return x + y
def sub(self, x, y) :
return x - y
def mul(self, x, y) :
return x * y
def div(self, x, y) :
return x / y
def pwr(self, x, y) :
return x ** y
def rod(self,x, y) :
return x % y
def sqr(self, x) :
return x ** 0.5
calc = calc()

هذا السكربت يستخدم النسخة الثالثة من المكتبة :

#!/usr/bin/python
import MyMath
print MyMath.calc.add(1, 9)
print MyMath.calc.sub(10, 2)
print MyMath.calc.mul(5, 5)
print MyMath.calc.div(25, 5)
print MyMath.calc.pwr(3, 2)
print MyMath.calc.rod(9, 2)
print MyMath.calc.sqr(9)

عند التنفيذ :

>>> ================================ RESTART ================================
>>>
10
8
25
5
9
1
3.0
>>>

الحزم Packages

عندما يكون المشروع كبير قد نطور الكثير من المكتبات، مكتبات لقواعد البيانات، مكتبات للتعامل مع الملفات، مكتبات للشبكات ... إلخ. لذا يتوجب علينا تنظيم هذه المكتبات و فصلها في حزم كل حزمة تختص بشيء.

حزمتي الأولى - My first Package

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

أولا ننشئ مجلد جديد بإسم MyMath في المسار التالي :

/usr/lib/python/site-packages

هذا المجلد الأن ماهو إلا مجلد ليصبح حزمة علينا إنشاء ملف بإسم __init__ و بامتداد py في هذا المجلد، بإمكاننا ترك الملف فارغ لكن من الأفضل كتابة تعليقات فيه، هذا هو ملف __init__ :

"""
This package contains the following modules :
-- add --
-- sub --
-- mul --
-- div --
"""

المكتبة add :

################
# add module #
# add.py #
################

def add(x, y) :
return x + y

المكتبة sub :

################
# sub module #
# sub.py #
################

def sub(x, y) :
return x - y

المكتبة mul :

################
# mul module #
# mul.py #
################

def mul(x, y) :
return x * y

المكتبة div :

################
# div module #
# div.py #
################

def div(x, y) :
return x / y

سكربت يشرح إستخدام الحزمة MyMath :

#!/usr/bin/python
from MyMath import add, sub, mul, div
print add.add(1, 9)
print sub.sub(10, 2)
print mul.mul(5, 5)
print div.div(25, 5)

عند التنفيذ :

>>> ================================ RESTART ================================
>>>
10
8
25
5
>>>

فهرس الدورة

الفصل الاول : أساسيات بايثون

دورة بايثون من الصفر الى الاحتراف

الدرس الاول : أمر الطباعة print + التعليقات

الدرس الثاني : المتغيرات Variables

الدرس الثالث : الإدخال Input

الدرس الرابع : الجملة الشرطية if

الدرس الخامس : المقاطع string

الدرس السادس : الكائنات متعددة العناصر (الجزء الأول)

الدرس السابع : الكائنات متعددة العناصر (الجزء الثاني)

الدرس الثامن : الحلقات loops (الجزء الأول)

الدرس التاسع : الحلقات loops (الجزء الثاني)

إزالة الغموض من الفصل الأول

الفصل الثاني : Functions & Procedures

الدرس العاشر : الدوال Function

الدرس الحادي عشر : دوال بايثون الجاهزة

ملخص الفصل الثاني

الفصل الثالث : البرمجة الكائنية المنحى oop

الدرس الثاني عشر : رابط لتعلم البرمجة الكائنية المنحى

الفصل الرابع : الأخطاء و الإستثناءات Errors, Exceptions

الدرس الثالث عشر : التعامل مع الأخطاء (الجزء الأول)

الدرس الرابع عشر : التعامل مع الأخطاء (الجزء الثاني)

الفصل الخامس : التعامل مع الملفات

الدرس الخامس عشر : الملفات (الجزء الأول)

الدرس السادس عشر : الملفات (الجزء الثاني)

الفصل السادس : المكتبات و الحزم

الدرس السابع عشر : المكتبات و الحزم

تم تعديل بواسطه mohamedz
6

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

4 إجابة على هذا السؤال .

  • 0

جزاك الله خيرا .. دوره ممتازه جدا لكن ليا سؤال اعذرنى

انا مبتدأ بايثون وقررت ابدأ الدوره معاك من الدرس الاول الحمد لله وقاربت على انهاء الفصل الاول باتقان ..

السؤال هو هل الدوره دى من اولها لاخرها مش هتحتاج بدائل ؟ يعنى هل اعتمد عليها كليا .. ولا انى المفروض اروح لمراجع تانيه برضه ؟

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مشكور عمل قيم

0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه
  • 0

مبدع يالغالي استمر بالابداع تستاهل 100000000000000000+

تم تعديل بواسطه THE [email protected]
0

شارك هذا الرد


رابط المشاركة
شارك الرد من خلال المواقع ادناه

من فضلك سجل دخول لتتمكن من التعليق

ستتمكن من اضافه تعليقات بعد التسجيل



سجل دخولك الان

  • يستعرض القسم حالياً   0 members

    لا يوجد أعضاء مسجلين يشاهدون هذه الصفحة .