‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫خلف‬ ‫علي‬ ‫أشرف‬ : ‫ترجمــه‬
‫حسني‬ ‫خالد‬ : ‫راجعه‬
Byte of Python
Swaroop C H
‫للفهرس‬ ‫عودة‬|
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الصدارة‬1.20
© ‫النشر‬ ‫حقوق‬2003-2005.‫ه‬ .‫س‬ ‫سوارو‬‫پ‬
‫التجارية‬ ‫غير‬ ‫العامة‬ ‫البداع‬ ‫رخصة‬ ‫بموجب‬ ‫الكتاب‬ ‫هذا‬ ‫يصدر‬
‫بالمثل‬ ‫المشاركة‬2.0.
‫ملخص‬
‫كنت‬ ‫سواء‬ ،‫بيثون‬ ‫البرمجة‬ ‫لغة‬ ‫تعلم‬ ‫على‬ ‫الكتاب‬ ‫هذا‬ ‫سيساعدك‬
.‫متمرسا‬ ‫مبرمجا‬ ‫أو‬ ‫الحواسيب‬ ‫على‬ ‫جديدا‬
‫للفهرس‬ ‫عودة‬|1
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫المحتويات‬ ‫قائمة‬
‫تمهيد‬
.............................................................................. ‫الكتاب؟‬ ‫هذا‬ ‫لمن‬09
................................................................................ ‫الكتاب‬ ‫تاريخ‬10
‫حالة‬.................................................................................. ‫الكتاب‬10
.............................................................................. ‫الرسمي‬ ‫الموقع‬10
‫الترخيص‬ ‫بنود‬.................. ...........................................................11
....................................................................................‫القتراحات‬11
‫فيه‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬‫ا‬....................................................................11
1‫مقدمــة‬ .
‫مقدمة‬.....................................................................................12
............................................................................. ‫بيثون‬ ‫مميزات‬12
‫الخلصة‬......................................................................................15
.......................................................................... ‫بيرل؟‬ ‫ليس‬ ‫لماذا‬15
..................................................................... ‫المبرمجون‬ ‫يقول‬ ‫ماذا‬16
2‫بايثون‬ ‫ثبيت‬ .
.............................................................. ‫لينكس/بيإسدي‬ ‫لمستخدمي‬17
‫لمستخدمي‬.........................................................................‫ويندوز‬18
..................................................................................... ‫الخلصة‬18
3‫الولى‬ ‫الخطوات‬ .
...................................................................................... ‫مقدمة‬19
........................................................................... ‫المحث‬ ‫استخدام‬20
............................................................................ ‫محرر‬ ‫اختيار‬21
.................................................................... ‫مصدري‬ ‫ملف‬ ‫استخدام‬21
..................................................................................... ‫الخرْج‬21
............................................................................... ‫يعمل‬ ‫كيف‬22
.................................................................... ‫تنفيذية‬ ‫بيثون‬ ‫برامج‬22
................................................................. ‫المساعدة‬ ‫على‬ ‫الحصول‬24
................................................................................. ‫الخلصة‬24
4‫الساسيات‬ .
.......................................................................... ‫الحرفية‬ ‫الثوابت‬25
‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|2
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
...................................................................................... ‫العداد‬26
.................................................................................... ‫السلسل‬28
.................................................................................. ‫المتغيرات‬28
............................................................................. ‫المعرف‬ ‫تسمية‬29
.............................................................................. ‫البيانات‬ ‫أنواع‬29
.................................................................................... ‫الكائنات‬29
................................................................................... ‫الخرْج‬30
................................................................................ ‫يعمل‬ ‫كيف‬30
............................................................... ‫والمنطقية‬ ‫المادية‬ ‫السطور‬31
.................................................................................... ‫الزاحة‬33
.................................................................................... ‫الخلصة‬33
5‫والتعبيرات‬ ‫العوامل‬ .
‫مقدمة‬.......................................................................................34
..................................................................................... ‫العوامل‬34
............................................................................. ‫العوامل‬ ‫أسبقية‬36
............................................................................ ‫الحساب‬ ‫ترتيب‬38
................................................................................. ‫الرتباطية‬38
.................................................................................. ‫التعبيرات‬38
........................................................................ ‫التعبيرات‬ ‫استخدام‬38
................................................................................... ‫الخلصة‬39
6‫التدفق‬ ‫في‬ ‫التحكم‬ .
..................................................................................... ‫مقدمة‬40
43 ...........................................................................if ‫إفادة‬ ‫استخدام‬
................................................................................ ‫يعمل‬ ‫كيف‬42
43 ............................................................................while ‫إفادة‬
43..................................................................... while ‫إفادة‬ ‫استخدام‬
45 ............................................................................... for ‫الحلقة‬
45 ............................................................................ for ‫استخدام‬
47 ........................................................................... break ‫الفادة‬
47 ........................................................................ break ‫استخدام‬
48 ........................................................................continue ‫الفادة‬
48 .............................................................continue ‫الفادة‬ ‫استخدام‬
.................................................................................. ‫الخلصة‬49
‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|3
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
7‫الدوال‬ .
..................................................................................... ‫مقدمة‬50
............................................................................... ‫دالة‬ ‫تعريف‬50
........................................................................... ‫الدالة‬ ‫معاملت‬51
.................................................................. ‫الدالة‬ ‫معاملت‬ ‫استخدام‬50
........................................................................ ‫المحلية‬ ‫المتغيرات‬52
.............................................................. ‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬52
53 ................................................................. global ‫اللادة‬ ‫استخدام‬
................................................................. ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬54
....................................................... ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬55
............................................................... ‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬56
‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬56
57........................................................................... return ‫الفادة‬
57 ................................................................. return ‫إفادة‬ ‫استخدام‬
.............................................................................. ‫التوثيق‬ ‫جمل‬58
.................................................................... ‫التوثيق‬ ‫جمل‬ ‫استخدام‬58
................................................................................... ‫الخلصة‬59
8‫الوحدات‬ .
..................................................................................... ‫مقدمة‬59
60 .................................................................... sys ‫الوحدة‬ ‫استخدام‬
62 ............................................................ pyc ‫المصرفة‬ ‫البيتات‬ ‫ملفات‬
63 ...................................................... ........from .. import ‫الفادة‬
__ ‫خاصية‬name........................................................... ‫للوحدة‬ __63
__ ‫استخدام‬name.......................................................... ‫الوحدة‬ __63
.................................................................. ‫الخاصة‬ ‫وحداتك‬ ‫عمل‬64
................................................................. ‫الخاصة‬ ‫وحداتك‬ ‫إنشاء‬64
65 ............................................................................... dir() ‫الدالة‬
65 ................................ .................................. dir() ‫الدالة‬ ‫استخدام‬
................................................................................ ‫الخلصة‬66
9‫البيانات‬ ‫هياكل‬ .
................................................................................... ‫مقدمة‬67
................................................................................... ‫القائمة‬68
..................................................... ‫والفئات‬ ‫الكائنات‬ ‫إلى‬ ‫سريعه‬ ‫مقدمة‬68
......................................................................... ‫القوائم‬ ‫استخدام‬68
‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|4
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
................................................................................... ‫الصف‬70
...................................................................... ‫الصفوف‬ ‫استخدام‬70
72......................................... ....................... print ‫وإفادة‬ ‫الصفوف‬
................................................................................. ‫القاموس‬73
...................................................................... ‫القاموس‬ ‫استخدام‬73
............................................................................. ‫المتسلسلت‬76
.................................................................... ‫المتسلسلت‬ ‫استخدام‬76
................................................................................. ‫الشارات‬78
...................................................................... ‫والشارات‬ ‫الكائنات‬79
............................................................ ‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬80
.................................................................. ‫النصية‬ ‫السلسل‬ ‫طرق‬80
................................................................................. ‫الخلصة‬82
10‫بيثون‬ ‫سكربت‬ ‫كتابة‬ - ‫المشاكل‬ ‫حل‬ .
................................................................................. ‫المشكلة‬83
.................................................................................... ‫الحل‬84
.......................................................................... ‫الول‬ ‫الصدار‬84
........................................................................ ‫الثاني‬ ‫الصدار‬87
.......................................................................... ‫الثالث‬ ‫الصدار‬89
.......................................................................... ‫الرابع‬ ‫الصدار‬91
.................................................................. ‫التحسينات‬ ‫من‬ ‫المزيد‬93
‫تط‬ ‫عملية‬................................................................ ‫ويرالبرمجيات‬94
................................................................................ ‫الخلصة‬95
11‫الموجهة‬ ‫الكائنية‬ ‫البرمجة‬ .
‫مقدمة‬.................................................................................96
................................................................................... ‫الذات‬97
................................................................................. ‫الفئات‬98
‫إنشاء‬‫الفئة‬..........................................................................99
‫طرق‬........................................................................ ‫الكائنات‬99
‫استخدام‬‫طرق‬.............................................................. ‫الكائنات‬100
100 ......................................................................... init ‫طريقة‬
100............................................................... init ‫طريقة‬ ‫استخدام‬
‫والكائن‬ ‫الفئة‬ ‫متغيرات‬...............................................................101
‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|5
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫استخدام‬‫متغيرات‬‫الفئة‬.................................................... ‫والكائن‬101
.................................................................................. ‫التوارث‬106
‫استخدام‬‫التوارث‬........................................................................106
‫الخلصة‬.................................................................................108
12‫الدخل/الخرج‬ .
‫ال‬‫ملفات‬.................................................................................109
‫الملف‬ ‫استخدام‬......................................................................109
110 ............................................................................... Pickle
110 ........................................................ Pickling ‫و‬ Unpickling
............. ‫الخلصة‬.................................................................112
13‫الستثناءات‬ .
‫الخطاء‬..............................................................................113
114....................................................................... Try..Except
.................................................................... ‫الستثناءات‬ ‫معالجة‬114
‫الستثناءات‬ ‫رفع‬..........................................................................115
‫الستثناءات‬ ‫رفع‬ ‫كيفية‬..................................................................115
117 ..................................................................... Try ..Finally
117 ............................................................................ Finally
‫الخلصة‬...............................................................................118
14‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ .
................................................................................. ‫مقدمة‬119
119 .......................................................................... sys ‫الوحدة‬
................................................................ ‫الوامر‬ ‫سطر‬ ‫معطيات‬119
122 .................................................................... sys ‫عن‬ ‫المزيد‬
122 ............................................................................ os ‫الوحدة‬
.............................................................................. ‫الخلصة‬123
15‫بيثون‬ ‫من‬ ‫مزيد‬ .
........................................................................ ‫الخاصة‬ ‫الطرق‬124
............................................................... ‫المفردة‬ ‫الفادات‬ ‫لبنات‬125
............................................................ ‫المضمنة‬ ‫القوائم‬ ‫استخدام‬126
‫استقبال‬‫الصفوف‬‫والقوائم‬‫في‬‫الدالة‬................................................126
........................................................................ ‫لمبدا‬ ‫نماذج‬127
‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|6
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
................................................................. ‫لمدا‬ ‫نماذج‬ ‫استخدام‬127
128 ............................................................... exec ‫و‬ eval ‫إفادات‬
128 .........................................................................assert ‫إفادة‬
128............................................................................ repr ‫دالة‬
.............................................................................. ‫الخلصة‬129
16‫بعد؟‬ ‫وماذا‬ .
‫الرسومية‬ ‫البرمجيات‬.................................................................130
‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬........................................................131
‫المزيد‬ ‫استكشف‬.......................................................................132
‫الخلصة‬................................................................................133
A‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ ......................................................134
Bْ‫عن‬ .........................................................................................137
‫الطبع‬ ‫بيانات‬...................................................................................137
‫المؤلف‬ ‫عن‬....................................................................................137
C‫المراجعة‬ ‫تأريخ‬ .
‫الزمني‬ ‫الختم‬.........................................................................137
‫الجداول‬ ‫قائمة‬
5.1............................................... ‫واستخداماتها‬ ‫الرياضية‬ ‫العوامل‬ .35
5.2‫العوامل‬ ‫أسبقية‬ ...................................................................37
15.1‫الخاصة‬ ‫الساليب‬ ‫بعض‬ .......................................................124
‫المثلة‬ ‫قائمة‬
3.1‫بيثون‬ ‫مفسر‬ ‫محث‬ ‫استعمال‬ .
3.2‫مصدري‬ ‫ملف‬ ‫استخدام‬ .
4.1‫الحرفية‬ ‫والثوابت‬ ‫المتغيرات‬ ‫استخدام‬ .
5.1‫التعبيرات‬ ‫استخدام‬ .
6.2‫إفادة‬ ‫استخدام‬ .while
6.3‫إفادة‬ ‫استخدام‬ .for
6.4‫الفادة‬ ‫استخدام‬ .break
6.5‫الفادة‬ ‫استخدام‬ .continue
7.1‫دالة‬ ‫تعريف‬ .
7.2‫الدالة‬ ‫معاملت‬ ‫استخدام‬ .
7.3‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬ .
7.4‫الفادة‬ ‫استخدام‬ .global
7.5‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬ .
‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|7
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
7.6‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬ .
7.7‫الفادة‬ ‫استخدام‬ .return
7.8‫التوثيق‬ ‫جمل‬ ‫استخدام‬ .
8.1‫الوحدة‬ ‫استخدام‬ .sys
8.2__ ‫الوحدة‬ ‫استخدام‬ .name__
8.3‫الخاصة‬ ‫وحداتك‬ ‫تنشئ‬ ‫كيف‬ .
8.4‫الدالة‬ ‫استخدام‬ .dir
9.1‫القوائم‬ ‫استخدام‬ .
9.2‫الصفوف‬ ‫استخدام‬
9.3‫الصفوف‬ ‫استخدام‬ ‫خرج‬ .
9.4‫القواميس‬ ‫استخدام‬ .
9.5‫المتسلسلت‬ ‫استخدام‬ .
9.6‫والمرجعيات‬ ‫الكائنات‬ .
9.7‫النصية‬ ‫السلسل‬ ‫طرق‬ .
10.1‫الول‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ .
10.2‫الثاني‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ .
10.3(‫يغمل‬ ‫)ل‬ ‫الثالث‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫برنامج‬ .
10.4‫الرابع‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫برنامج‬ .
11.1‫فئة‬ ‫.إنشاء‬
11.2‫الكائنات‬ ‫طرق‬ ‫استخدام‬ .
11.3‫طريقة‬ ‫استخدام‬ .
11.4‫والفئة‬ ‫الكائن‬ ‫قيم‬ ‫استخدام‬ .
11.5‫التوارث‬ ‫استخدام‬ .
12.1‫الملفات‬ ‫استخدام‬ .
12.2.Pickling and Unpickling
13.1‫الستثناءات‬ ‫معالجة‬ .
13.2‫الستثناءات‬ ‫رفع‬ ‫كيفية‬ .
13.3‫استخدام‬ .Finally
14.1‫استخدام‬ .sys.argv
15.1‫المضمنة‬ ‫القوائم‬ ‫استخدام‬ .
15.2‫لمدا‬ ‫نماذج‬ ‫استخدام‬ .
‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|8
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫تمهيــــد‬
‫المحتويات‬ ‫قائمة‬
‫الكتاب؟‬ ‫هذا‬ ‫لمن‬
‫الكتاب‬ ‫تاريخ‬
‫الكتاب‬ ‫حالة‬
‫الرسمي‬ ‫الموقع‬
‫الترخيص‬ ‫بنود‬
‫القتراحات‬
‫فيها‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬
‫لغة‬ ‫إنها‬ .‫والقوة‬ ‫البساطة‬ ‫بين‬ ‫تجمع‬ ‫أنها‬ ‫الدعاء‬ ‫يمكننا‬ ‫التي‬ ‫القليلة‬ ‫اللغات‬ ‫تلك‬ ‫من‬ ‫واحدة‬ ‫هي‬ ‫بيثون‬
‫إلى‬ ‫الكتاب‬ ‫يهدف‬ .‫بها‬ ‫البرمجة‬ ‫في‬ ‫المتعة‬ ‫الهم‬ ‫والمر‬ ،‫سواء‬ ‫حد‬ ‫على‬ ‫وللمحترفين‬ ‫للمبتدئين‬ ‫جيدة‬
‫هو‬ ‫الواقع‬ ‫وفى‬ – ‫وسهولة‬ ‫بسرعة‬ ‫المور‬ ‫إنجاز‬ ‫كيفية‬ ‫ويريك‬ ‫الرائعه‬ ‫اللغة‬ ‫هذه‬ ‫تعلم‬ ‫في‬ ‫مساعدتك‬
.'‫البرمجية‬ ‫لمشاكلك‬ ‫المثالي‬ ‫'الترياق‬
‫الكتاب؟‬ ‫هذا‬ ‫لمن‬
‫بيثون‬ ‫البرمجة‬ ‫للغة‬ ‫تعليمي‬ ‫دليل‬ ‫بمثابة‬ ‫الكتاب‬ ‫هذا‬.‫المبتدئين‬ ‫أساسا‬ ‫تستهدف‬ ‫وهي‬.‫مفيدة‬ ‫وهي‬
‫كذلك‬ ‫الخبرة‬ ‫ذوي‬ ‫للمبرمجين‬.
‫النصية‬ ‫الملفات‬ ‫حفظ‬ ‫كيفية‬ ‫هو‬ ‫الحواسيب‬ ‫عن‬ ‫تعرفه‬ ‫ما‬ ‫كل‬ ‫كان‬ ‫إذا‬ ‫عموما‬ ‫ذلك‬ ‫من‬ ‫والهدف‬
‫الكتاب‬ ‫هذا‬ ‫من‬ ‫بيثون‬ ‫تتعلم‬ ‫أن‬ ‫إذن‬ ‫فيمكنك‬.‫أيضا‬ ‫فيمكنك‬ ‫البرمجة‬ ‫عن‬ ‫مسبقة‬ ‫خبرة‬ ‫لديك‬ ‫كان‬ ‫وإذا‬
‫الكتاب‬ ‫هذا‬ ‫من‬ ‫بيثون‬ ‫تتعلم‬ ‫أن‬.
‫برمجتك‬ ‫ولغة‬ ‫بيثون‬ ‫بين‬ ‫الختلف‬ ‫بأوجه‬ ‫مهتما‬ ‫فستكون‬ ،‫بالبرمجة‬ ‫مسبقة‬ ‫خبرة‬ ‫لك‬ ‫كان‬ ‫إذا‬
‫المفضلة‬-‫الختلفات‬ ‫هذه‬ ‫من‬ ‫الكثير‬ ‫على‬ ‫الضوء‬ ‫ألقيت‬ ‫لقد‬.،‫بسيط‬ ‫تنبيه‬ ‫فلي‬ ‫ذلك‬ ‫من‬ ‫الرغم‬ ‫على‬
‫المفضلة‬ ‫برمجتك‬ ‫لغة‬ ‫تصبح‬ ‫سوف‬ ‫قريب‬ ‫عما‬ ‫بيثون‬.
‫للفهرس‬ ‫عودة‬‫الكتاب؟‬ ‫هذا‬ ‫لمن‬|9
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الكتـاب‬ ‫تاريخ‬
‫يتي‬‫لبرمج‬ ‫تثبيت‬ ‫برنامج‬ ‫إلى‬ ‫احتجت‬ ‫عندما‬ ‫بيثون‬ ‫مع‬ ‫بدأت‬ ‫المر‬ ‫أول‬ ‫في‬Diamond‫حتى‬ ،
‫مكتبة‬ ‫مع‬ ‫بيرل‬ ‫و‬ ‫بيثون‬ ‫ارتباطات‬ ‫بين‬ ‫الختيار‬ ‫علي‬ ‫وكان‬ .‫سهل‬ ‫التثبيت‬ ‫أجعل‬QT‫في‬ ‫وبحثت‬
- ‫والمشهور‬ ‫المبجل‬ ‫الهاكر‬ ‫ذلك‬ - ‫رايموند‬ .‫إس‬ ‫لِريك‬ ‫مقالة‬ ‫على‬ ‫عثرت‬ ‫حتى‬ ‫النترنت‬ ‫شبكة‬
‫ارتباطات‬ ‫أن‬ ‫اكتشفت‬ ‫وكذلك‬ .‫المفضلة‬ ‫برمجته‬ ‫لغة‬ ‫هي‬ ‫بيثون‬ ‫أصبحت‬ ‫كيف‬ ‫عن‬ ‫فيها‬ ‫يتكلم‬
PyQt‫مع‬ ‫بالمقارنة‬ ‫جدا‬ ‫جيدة‬Perl-Qt.‫لغتي‬ ‫هي‬ ‫بيثون‬ ‫أن‬ ‫قررت‬ ‫لذلك‬ .
‫بعض‬ ‫وجدت‬ ‫وقد‬ ،!!‫منها‬ ‫أيا‬ ‫أجد‬ ‫لم‬ ‫ولكني‬ .‫بيثون‬ ‫لغة‬ ‫في‬ ‫جيد‬ ‫كتاب‬ ‫عن‬ ‫البحث‬ ‫بدأت‬ ‫بعدها‬
‫كتب‬O'Reilly‫إلى‬ ‫منها‬ ‫المرجعي‬ ‫الكتيب‬ ‫إلى‬ ‫أقرب‬ ‫أو‬ ،‫للغاية‬ ‫الثمن‬ ‫باهظة‬ ‫إما‬ ‫كانت‬ ‫ولكنها‬
،‫وصغيرة‬ ‫جدا‬ ‫مختصرة‬ ‫كانت‬ ‫لكنها‬ ،‫بيثون‬ ‫مع‬ ‫جاءت‬ ‫التي‬ ‫الوثائق‬ ‫إلى‬ ‫هت‬‫اتج‬ ‫وبالتالي‬ .‫دليل‬
‫كان‬ ‫حيث‬ ‫معها‬ ‫التعامل‬ ‫أمكنني‬ ‫وقد‬ .‫مكتملة‬ ‫تكن‬ ‫لم‬ ‫ولكنها‬ ،‫بيثون‬ ‫عن‬ ‫جيدة‬ ‫فكرة‬ ‫أعطتني‬ ‫وقد‬
.‫للمبتدئين‬ ‫ملئمة‬ ‫غير‬ ‫ولكنها‬ ،‫بالبرمجة‬ ‫مسبقة‬ ‫خبرة‬ ‫لدي‬
‫ات‬‫ه‬‫رده‬ ‫من‬ (‫ا‬‫ه‬‫وقته‬ ‫)فهي‬ ‫توزيعهة‬ ‫آخهر‬ ‫بتثهبيت‬ ‫قمهت‬ ‫بيثهون‬ ‫مهع‬ ‫لهي‬ ‫اء‬‫ه‬‫لق‬ ‫أول‬ ‫مهن‬ ‫شهر‬‫أ‬ ‫سهتة‬ ‫بعهد‬
Red Hat 9‫ببرنامهج‬ ‫ألعهب‬ ‫وبهدأت‬ ،KWord‫فكهرة‬ ‫لهي‬ ‫خطهرت‬ ‫وفجهأة‬ ‫إثهارة‬ ‫أزداد‬ ‫وكنهت‬ ،
‫ين‬‫ثلث‬ ‫صبحت‬‫أ‬ ‫سريعا‬ ‫ها‬‫ولكن‬ ،‫صفحات‬‫ال‬ ‫من‬ ‫يل‬‫بقل‬ ‫بة‬‫الكتا‬ ‫بدأت‬ ‫قد‬‫و‬ .‫ثون‬‫بي‬ ‫عن‬ ‫مادة‬ ‫بة‬‫كتا‬
‫وبعد‬ .‫كتاب‬ ‫شكل‬ ‫على‬ ‫فائدة‬ ‫أكثر‬ ‫جعلها‬ ‫في‬ ‫جادا‬ ‫صبحت‬ ‫بعدها‬ ،‫طويلة‬ ‫صفحة‬‫الكثير‬‫إعادة‬ ‫من‬
‫الكتهاب‬ ‫ههذا‬ ‫أعتهبر‬ ‫وأنها‬ ،‫بيثهون‬ ‫لغهة‬ ‫تعلهم‬ ‫فهي‬ ‫مفيهدا‬ ‫مرجعها‬ ‫كهونه‬ ‫مرحلهة‬ ‫فهي‬ ‫أصهبح‬ ،‫الكتابهة‬
.‫المفتوحة‬ ‫المصادر‬ ‫لمجتمع‬ ‫وتحيتي‬ ‫مساهمتي‬
‫أني‬ ‫من‬ ‫بالرغم‬ ،‫النظرة‬ ‫نفس‬ ‫إليه‬ ‫أنظر‬ ‫زلت‬ ‫وما‬ ‫بيثون‬ ‫عن‬ ‫شخصية‬ ‫كملحظات‬ ‫الكتاب‬ ‫هذا‬ ‫بدأ‬
(: ‫اﻵخرين‬ ‫عند‬ ‫قبول‬ ‫أكثر‬ ‫ليكون‬ ‫الجهد‬ ‫من‬ ‫الكثير‬ ‫فيه‬ ‫بذلت‬
،‫البناءة‬ ‫القتراحات‬ ‫من‬ ‫الكثير‬ ‫تلقيت‬ ،‫المفتوحة‬ ‫المصادر‬ ‫لمجتمع‬ ‫الحقيقية‬ ‫الروح‬ ‫خلل‬ ‫ومن‬
‫و‬ ‫والنتقادات‬‫فعل‬ ‫ردود‬.‫الكتاب‬ ‫هذا‬ ‫تحسين‬ ‫على‬ ‫كثيرا‬ ‫ساعدني‬ ‫مما‬ ‫القراء‬ ‫من‬ ‫متحمسة‬
‫الكتـاب‬ ‫حالة‬
‫الكتاب‬ ‫هذا‬ ‫يزال‬ ‫ما‬‫العمل‬ ‫قيد‬‫ذلك‬ ‫ومع‬ ،‫وتتحسن‬ ‫باستمرار‬ ‫تتغير‬ ‫الفصول‬ ‫من‬ ‫الكثير‬ ‫حيث‬ .
‫فضلك‬ ‫من‬ .‫الكتاب‬ ‫هذا‬ ‫من‬ ‫بسهولة‬ ‫بيثون‬ ‫لتعلم‬ ‫مستعدا‬ ‫وستكون‬ ،‫كثيرا‬ ‫نضج‬ ‫قد‬ ‫فالكتاب‬
.‫مفهوم‬ ‫غير‬ ‫أو‬ ‫صحيح‬ ‫غير‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫جزء‬ ‫أي‬ ‫وجدت‬ ‫إن‬ ‫أخبرني‬
‫عن‬ ‫فصل‬ ‫مثل‬ ،‫المستقبل‬ ‫في‬ ‫الفصول‬ ‫من‬ ‫لمزيد‬ ‫خطط‬ ‫هناك‬wxPython Twisted‫وربما‬
‫حتى‬Boa Constructor.
‫الرسمي‬ ‫الموقع‬
‫هو‬ ‫الكتاب‬ ‫لهذا‬ ‫الرسمي‬ ‫الموقع‬http://www.byteofpython.info‫يمكنك‬ ‫الموقع‬ ‫خلل‬ ‫ومن‬
‫للفهرس‬ ‫عودة‬‫الرسمي‬ ‫الموقع‬|10
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الملحظات‬ ‫إرسال‬ ‫وكذلك‬ ،‫الكتاب‬ ‫من‬ ‫إصدار‬ ‫آخر‬ ‫تنزيل‬ ‫أو‬ ‫مباشر‬ ‫بشكل‬ ‫كامل‬ ‫الكتاب‬ ‫قراءة‬
‫لي‬.
‫الترخيص‬ ‫بنود‬
‫بموجب‬ ‫مرخص‬ ‫الكتاب‬ ‫هذا‬‫بالمثل‬ ‫المشاركة‬ ‫التجارية‬ ‫غير‬ ‫العامة‬ ‫البداع‬ ‫رخصة‬2.0.
)Creative Commons Attribution-NonCommercial-ShareAlike
License (2.0
‫هي‬ ‫القيود‬ .‫لي‬ ‫الفضل‬ ‫تنسب‬ ‫أنك‬ ‫طالما‬ ،‫الكتاب‬ ‫وعرض‬ ،‫وتوزيع‬ ‫نسخ‬ ‫في‬ ‫الحرية‬ ‫لك‬ ‫؛‬ ‫أساسا‬
‫والبناء‬ ‫التعديل‬ ‫في‬ ‫الحرية‬ ‫لك‬ .‫مني‬ ‫إذن‬ ‫بدون‬ ‫تجارية‬ ‫لغراض‬ ‫الكتاب‬ ‫استخدام‬ ‫يمكنك‬ ‫ل‬ ‫أنه‬
‫المعدل‬ ‫العمل‬ ‫وإصدار‬ ‫التغييرات‬ ‫لكل‬ ‫واضحة‬ ‫علمات‬ ‫بوضع‬ ‫تقوم‬ ‫أن‬ ‫شريطة‬ ،‫العمل‬ ‫هذا‬ ‫على‬
.‫الكتاب‬ ‫هذا‬ ‫كما‬ ‫الرخصة‬ ‫نفس‬ ‫تحت‬
‫بزيارة‬ ‫قم‬ ‫فضلك‬ ‫من‬‫الرخصة‬ ‫موقع‬‫يوجد‬ ‫إذ‬ ،‫الفهم‬ ‫سهلة‬ ‫لصدارة‬ ‫أو‬ ،‫كامل‬ ‫نصها‬ ‫لقراءة‬
.‫الرخصة‬ ‫لشرح‬ ‫مصورة‬ ‫قصة‬ ‫بالموقع‬ ‫حتى‬
‫القتراحات‬
‫وجدت‬ ‫إذا‬ ،‫ولكن‬ .‫المكان‬ ‫قدر‬ ‫على‬ ‫ومحكما‬ ‫مفيدا‬ ‫الكتاب‬ ‫هذا‬ ‫لجعل‬ ‫الجهد‬ ‫من‬ ‫الكثير‬ ‫بذلت‬ ‫لقد‬
‫بحيث‬ ،‫أبلغني‬ ‫رجاء‬ ،‫تحسين‬ ‫إلى‬ ‫بحاجة‬ ‫ببساطة‬ ‫أو‬ ،‫صحيحة‬ ‫غير‬ ‫أو‬ ‫متسقة‬ ‫غير‬ ‫المواد‬ ‫بعض‬
‫عبر‬ َّ‫إلي‬ ‫الوصول‬ ‫يمكنك‬ .‫المناسبة‬ ‫الصلحات‬ ‫عمل‬ ‫من‬ ‫أتمكن‬>
swaroop@byteofpython.info<.
‫فيها‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬
‫وإما‬ ،‫قصور‬ ‫بل‬ ‫أنها‬ ‫بوضوح‬ ‫يظهر‬ ‫بحيث‬ ‫جدا‬ ‫بسيطة‬ ‫جعلها‬ ‫هو‬ ‫أحدها‬ ‫برمجية‬ ‫لتصميم‬ ‫طريقتان‬ ‫هناك‬
.‫القصور‬ ‫أوجه‬ ‫بها‬ ‫يظهر‬ ‫ل‬ ‫بحيث‬ ‫معقدة‬ ‫جعلها‬
--C. A. R. Hoare
.‫ومثابرة‬ ‫تركيز‬ ‫هو‬ ‫ما‬ ‫بقدر‬ ‫وموهبة‬ ‫ذكاء‬ ‫مسألة‬ ‫ليس‬ ‫الحياة‬ ‫في‬ ‫النجاح‬
--C. W. Wendte
‫للفهرس‬ ‫عودة‬‫فيها‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬|11
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬1‫.مقدمـــة‬
‫المحتويات‬ ‫قائمة‬
‫مقدمة‬
‫بيثون‬ ‫مميزات‬
‫الخلصة‬
‫بيرل؟‬ ‫ليس‬ ‫لماذا‬
‫المبرمجون‬ ‫يقول‬ ‫ماذا‬
‫مقدمــة‬
‫أنها‬ ‫الدعاء‬ ‫يمكن‬ ‫التي‬ ‫القليلة‬ ‫اللغات‬ ‫تلك‬ ‫من‬ ‫واحدة‬ ‫هي‬ ‫بيثون‬‫بسيطة‬‫و‬‫قوية‬‫سواء‬ ‫حد‬ ‫على‬.
‫التي‬ ‫البرمجة‬ ‫لغة‬ ‫وأساسيات‬ ‫تراكيب‬ ‫وليس‬ ‫المشكلة‬ ‫حل‬ ‫على‬ ‫وتركز‬ ‫سهلة‬ ‫هي‬ ‫كم‬ ‫ستتفاجأ‬
‫بها‬ ‫تبرمج‬.
‫المقدم‬‫هي‬ ‫لبايثون‬ ‫الرسمية‬ ‫ة‬
‫قوية‬ ،‫التعلم‬ ‫سهلة‬ ‫برمجة‬ ‫لغة‬ ‫هي‬ ‫بيثون‬.‫وتوجه‬ ،‫كفؤة‬ ‫المستوى‬ ‫عالية‬ ‫بيانات‬ ‫هيكلة‬ ‫لها‬
‫الكائنية‬ ‫البرمجية‬ ‫نحو‬ ‫فعال‬ ‫لكن‬ ‫بسيط‬.‫جنبا‬ ،‫النواع‬ ‫تحديد‬ ‫ودينامية‬ ‫بيثون‬ ‫قواعد‬ ‫حذاقة‬
‫وتطوير‬ ‫السكربتات‬ ‫لبرمجة‬ ‫مثالية‬ ‫لغة‬ ‫بيثون‬ ‫من‬ ‫تجعل‬ ،‫التفسيرية‬ ‫طبيعتها‬ ‫مع‬ ‫جنب‬ ‫إلى‬
‫المنصات‬ ‫معظم‬ ‫على‬ ‫المجالت‬ ‫من‬ ‫العديد‬ ‫في‬ ‫السريع‬ ‫التطبيقات‬.
‫التالي‬ ‫الباب‬ ‫في‬ ‫التفصيل‬ ‫من‬ ‫بمزيد‬ ‫الميزات‬ ‫هذه‬ ‫معظم‬ ‫سأناقش‬.
‫ملحظة‬
‫روسام‬ ‫ان‬ ‫جويدو‬ ‫أطلق‬‫ڤ‬)Guido van Rossum- (‫بيثون‬ ‫لغة‬ ‫مؤلف‬-‫هذا‬ ‫عليها‬
‫البريطانية‬ ‫الذاعة‬ ‫هيئة‬ ‫عرض‬ ‫اسم‬ ‫على‬ ‫السم‬"‫الطائرة‬ ‫للثعابين‬ ‫مونتي‬ ‫سيرك‬
)"Monty Python's Flying Circus.(‫تقتل‬ ‫التي‬ ‫بالثعابين‬ ‫معجبا‬ ‫ليس‬ ‫فهو‬
‫سحقها‬ ‫ثم‬ ‫حولها‬ ‫باللتفاف‬ ‫جسدها‬ ‫تصفية‬ ‫طريق‬ ‫عن‬ ‫عليها‬ ‫لتتغذى‬ ‫الحيوانات‬.
‫بيثون‬ ‫مميزات‬
‫بسيطة‬
‫على‬ ‫النكليزية‬ ‫اللغة‬ ‫قراءة‬ ‫يشبه‬ ‫يكاد‬ ‫جيد‬ ‫بيثون‬ ‫برنامج‬ ‫قراءة‬ .‫الحدود‬ ‫لبعد‬ ‫بسيطة‬ ‫لغة‬ ‫بيثون‬
) ‫رمزية‬ ‫الشبه‬ ‫الطبيعة‬ ‫صارمة!هذه‬ ‫إنجليزية‬ ‫أنها‬ ‫من‬ ‫الرغم‬pseudo-code‫أحد‬ ‫لبايثون‬ (
‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫مميزات‬|12
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫نفسها‬ ‫اللغة‬ ‫ل‬ ‫المشكلة‬ ‫حل‬ ‫على‬ ‫التركيز‬ ‫لك‬ ‫فتتيح‬ .‫قوتها‬ ‫أسرار‬ ‫أعظم‬
‫التعلم‬ ‫سهلة‬
‫بشكل‬ ‫سهلة‬ ‫تراكيب‬ ‫تحتوي‬ ‫بيثون‬ .‫البرمجة‬ ‫تعلم‬ ‫في‬ ‫بها‬ ‫لتبدأ‬ ‫للغاية‬ ‫سهلة‬ ‫بيثون‬ ،‫سترون‬ ‫كما‬
.‫ذكره‬ ‫سبق‬ ‫كما‬ ،‫معتاد‬ ‫غير‬
‫المصدر‬ ‫ومفتوحة‬ ‫حرة‬
‫توزيع‬ ‫بحرية‬ ‫يمكنك‬ ،‫بسيطة‬ ‫بعبارات‬ .‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ ‫على‬ ‫مثال‬ ‫هي‬ ‫بيثون‬
‫أجزاء‬ ‫واستخدام‬ ‫عليها‬ ‫التغييرات‬ ‫ببعض‬ ‫القيام‬ ‫و‬ ،‫المصدر‬ ‫كود‬ ‫وقراءة‬ ،‫البرمجيات‬ ‫هذه‬ ‫من‬ ‫نسخ‬
‫الحرية‬ ‫البرمجيات‬ .‫الشياء‬ ‫هذه‬ ‫تفعل‬ ‫أن‬ ‫يمكنك‬ ‫أنه‬ ‫تعرف‬ ‫وأنت‬ ،‫جديدة‬ ‫حرة‬ ‫برمجيات‬ ‫في‬ ‫منها‬
- ‫جدا‬ ‫جيدة‬ ‫بيثون‬ ‫كون‬ ‫أسباب‬ ‫من‬ ‫واحد‬ ‫هذا‬ .‫المعرفة‬ ‫في‬ ‫يتشارك‬ ‫الذي‬ ‫المجتمع‬ ‫مبدأ‬ ‫على‬ ‫تقوم‬
‫بيثون‬ ‫يرى‬ ‫أن‬ ‫فقط‬ ‫يريد‬ ‫الذي‬ ‫المجتمع‬ ‫خلل‬ ‫من‬ ‫مستمر‬ ‫بشكل‬ ‫وتحسينها‬ ‫إنشاؤها‬ ‫تم‬ ‫قد‬ ‫لنه‬
.‫أفضل‬
‫المستوى‬ ‫عالية‬ ‫برمجـة‬ ‫لغة‬
‫الذاكرة‬ ‫إدارة‬ ‫مثل‬ ‫المستوى‬ ‫دقيقة‬ ‫بالتفاصيل‬ ‫للهتمام‬ ‫تحتاج‬ ‫ل‬ ،‫بيثون‬ ‫في‬ ‫البرامج‬ ‫تكتب‬ ‫عندما‬
.‫إلخ‬ ،‫برنامجك‬ ‫يستخدمها‬ ‫التي‬
‫محمولة‬
‫العديد‬ (‫على‬ ‫تعمل‬ ‫جعلها‬ ‫تم‬ ‫)أي‬ ‫إلى‬ ‫بيثون‬ ‫نقل‬ ‫تم‬ ،‫المصدر‬ ‫مفتوحة‬ ‫كبرمجية‬ ‫لطبيعتها‬ ‫نظرا‬
‫أن‬ ‫دون‬ ‫المنصات‬ ‫هذه‬ ‫من‬ ‫أي‬ ‫على‬ ‫يعمل‬ ‫أن‬ ‫يمكن‬ ‫بيثون‬ ‫برامج‬ ‫من‬ ‫تكتبه‬ ‫ما‬ ‫كل‬ .‫المنصات‬ ‫من‬
‫تعتمد‬ ‫خصائص‬ ‫أي‬ ‫لتجنب‬ ‫الكفاية‬ ‫فيه‬ ‫بما‬ ‫دقيقا‬ ‫كنت‬ ‫إذا‬ ‫الطلق‬ ‫على‬ ‫تغييرات‬ ‫أي‬ ‫ذلك‬ ‫يتطلب‬
.‫بعينه‬ ‫نظام‬ ‫على‬
،‫سولريس‬ ،‫ماكينتوش‬ ،‫بيإسدي‬ ‫فري‬ ،‫ويندوز‬ ،‫لينكس‬ ‫على‬ ‫بيثون‬ ‫استخدام‬ ‫يمكنك‬OS/2،
Amiga، AROS، AS/400، BeOS، OS/390، z/OS، Palm OS، QNX، VMS،
Psion، Acorn RISC OS، VxWorks، PlayStation، Sharp Zaurus،
Windows CE.‫الكفي‬ ‫الحاسوب‬ ‫وحتى‬
‫مفسَّرة‬
.‫الشرح‬ ‫من‬ ‫شيئا‬ ‫يتطلب‬ ‫هذا‬
‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫مميزات‬|13
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
) ‫مصرّفة‬ ‫بلغة‬ ‫المكتوب‬ ‫البرنامج‬compiled‫اللغة‬ ‫من‬ ‫تحويله‬ ‫يتم‬ ++‫سي‬ ‫أو‬ ‫سي‬ ‫مثل‬ (
(‫وآحاد‬ ‫أصفار‬ ‫من‬ ‫ثنائي‬ ‫)كود‬ ‫حاسوبك‬ ‫يتكلمها‬ ‫التي‬ ‫اللغة‬ ‫إلى‬ (++‫سي‬ ‫أو‬ ‫)سي‬ ‫المصدر‬
‫يقوم‬ ،‫البرنامج‬ ‫تشغيلك‬ ‫عند‬ .‫والتعليمات‬ ‫الخيارات‬ ‫مختلف‬ ‫مع‬ ‫المصرّف‬ ‫باستخدام‬
) ‫الرابط/المحمّل‬linker/loader‫في‬ ‫ويبدأ‬ ‫الذاكرة‬ ‫إلى‬ ‫الصلب‬ ‫القرص‬ ‫من‬ ‫البرنامج‬ ‫بنسخ‬ (
.‫تشغيله‬
‫فقط‬ .‫ثنائي‬ ‫كود‬ ‫إلى‬ ‫التصريف‬ ‫تحتاج‬ ‫ل‬ -‫أخرى‬ ‫ناحية‬ ‫-من‬ ‫بيثون‬‫شغل‬‫من‬ ‫مباشرة‬ ‫البرنامج‬
‫يسمى‬ ‫وسيط‬ ‫شكل‬ ‫إلى‬ ‫المصدر‬ ‫كود‬ ‫يحول‬ ‫بيثون‬ ‫فإن‬ ،‫داخليا‬ .‫المصدر‬ ‫الكود‬bytecode‫ثم‬
‫استخدام‬ ‫بكثير‬ ‫السهل‬ ‫من‬ ‫يجعل‬ ‫هذا‬ ‫كل‬ .‫يشغله‬ ‫ثم‬ ،‫لجهازك‬ ‫الصلية‬ ‫اللغة‬ ‫إلى‬ ‫هذا‬ ‫يترجم‬
‫الربط‬ ‫مكتبات‬ ‫صحة‬ ‫من‬ ‫التأكد‬ ‫أو‬ ،‫البرنامج‬ ‫بتصريف‬ ‫للهتمام‬ ‫بحاجة‬ ‫لست‬ ‫حيث‬ ‫بيثون‬
‫يمكنك‬ ‫بحيث‬ ،‫محمولية‬ ‫أكثر‬ ‫بك‬ ‫الخاصة‬ ‫بيثون‬ ‫برامج‬ ‫يجعل‬ ‫أيضا‬ ‫وهذا‬ .‫الخ‬ ،‫الخ‬ ،‫وتحميلها‬
!‫يعمل‬ ‫وبعدها‬ ،‫آخر‬ ‫حاسوب‬ ‫إلى‬ ‫بك‬ ‫الخاص‬ ‫بيثون‬ ‫برنامج‬ ‫نسخ‬ ‫مجرد‬
‫التوجـه‬ ‫كائنيـة‬
) ‫الجرائية‬ ‫البرمجة‬ ‫بيثون‬ ‫تدعم‬procedure-oriented‫الكائنية‬ ‫البرمجة‬ ‫وكذلك‬ (
)object-oriented‫اللغات‬ ‫في‬ .(‫التوجه‬ ‫إجرائية‬‫الدوال‬ ‫أو‬ ‫الجراءات‬ ‫حول‬ ‫البرنامج‬ ‫يتمحور‬ ،
‫اللغات‬ ‫وفي‬ .‫استخدامها‬ ‫إعادة‬ ‫يمكن‬ ‫البرامج‬ ‫من‬ ‫قطع‬ ‫سوى‬ ‫ليست‬ ‫التي‬‫التوجه‬ ‫كائنية‬‫يتمحور‬ ،
) ‫الكائنات‬ ‫حول‬ ‫البرنامج‬objects‫قوية‬ ‫طريقة‬ ‫ولبايثون‬ .‫والوظائف‬ ‫البيانات‬ ‫بين‬ ‫تجمع‬ ‫التي‬ (
‫أو‬ ++‫سي‬ ‫مثل‬ ‫الكبيرة‬ ‫باللغات‬ ‫مقارنتها‬ ‫عند‬ ‫خاصة‬ ‫الكائنية‬ ‫البرمجة‬ ‫لعمل‬ ‫تبسيطية‬ ‫ولكن‬ ‫جدا‬
.‫جافا‬
‫للمتداد‬ ‫قابلة‬
،‫الخوازميات‬ ‫بعض‬ ‫إخفاء‬ ‫تريد‬ ‫أو‬ ‫جدا‬ ‫سريعا‬ ‫يعمل‬ ‫الكود‬ ‫من‬ ‫حيوي‬ ‫جزء‬ ‫لجعل‬ ‫حاجة‬ ‫في‬ ‫كنت‬ ‫إذا‬
‫برنامج‬ ‫من‬ ‫تستخدمه‬ ‫وبعدها‬ ++‫سي‬ ‫أو‬ ‫سي‬ ‫بلغة‬ ‫برنامجك‬ ‫من‬ ‫الجزء‬ ‫هذا‬ ‫كتابة‬ ‫فيمكنك‬
.‫بك‬ ‫الخاص‬ ‫بيثون‬
‫للتضمين‬ ‫قابلة‬
'‫ال‬ ‫قدرات‬ ‫لعطاء‬ ++‫سي/سي‬ ‫برامج‬ ‫في‬ ‫بيثون‬ ‫تضمين‬ ‫يمكنك‬scripting‫لمستخدمي‬ '
.‫برنامجك‬
‫شاملة‬ ‫مكتبات‬
‫فيهها‬ ‫بمها‬ ‫العاديهة‬ ‫الشهياء‬ ‫مختلهف‬ ‫عمهل‬ ‫علهى‬ ‫تسهاعدك‬ .‫حقها‬ ‫ضهخمة‬ ‫مكتبهة‬ ‫القياسهية‬ ‫بيثهون‬ ‫مكتبهة‬
‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫مميزات‬|14
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
) ‫النمطيهة‬ ‫التعهابير‬regular expressions‫الخيهوط‬ ،‫الوحهدات‬ ‫اختبهار‬ ،‫التوثيهق‬ ‫توليهد‬ ،(
)threading،‫وب‬ ‫متصهفحات‬ ،‫البيانهات‬ ‫قواعهد‬ ،(CGI، ftp،‫إلكهتروني‬ ‫بريهد‬ ،XML، XML-
RPC، HTML‫ملفات‬ ،WAV‫على‬ ‫تعتمد‬ ‫التي‬ ‫الشياء‬ ‫من‬ ‫وغيرها‬ ‫الرسومية‬ ‫الواجهات‬ ،‫التعمية‬ ،
'‫مضمنة‬ ‫'البطاريات‬ ‫فلسفة‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫بيثون‬ ‫يثبت‬ ‫أينما‬ ‫دائما‬ ‫متاح‬ ‫هذا‬ ‫كل‬ ،‫تذكر‬ .‫النظام‬
.‫بيثون‬ ‫في‬
‫مثل‬ ‫الجودة‬ ‫عالية‬ ‫الخرى‬ ‫المتنوعة‬ ‫المكتبات‬ ‫من‬ ‫العديد‬ ‫توجد‬ ‫القياسية‬ ‫المكتبات‬ ‫بجانب‬
wxPython‫و‬ ،Twisted‫و‬ ،Python Imaging Library.‫الكثير‬ ‫وغيرها‬
‫ا‬‫لخلصـة‬
‫قا‬‫ح‬ ‫ية‬‫وقو‬ ‫مثيرة‬ ‫غة‬‫ل‬ ‫ثون‬‫بي‬.‫مج‬‫برا‬ ‫بة‬‫كتا‬ ‫عل‬‫تج‬ ‫لتي‬‫ا‬ ‫يزات‬‫والم‬ ‫لداء‬‫ا‬ ‫سن‬‫ح‬ ‫من‬ ‫يج‬‫مز‬ ‫هي‬‫ف‬
‫والمتعة‬ ‫السهولة‬ ‫من‬ ‫خليطا‬ ‫بيثون‬.
‫بيرل؟‬ ‫ليس‬ ‫لماذا‬
‫شعبية‬ ‫صدر‬‫الم‬ ‫حة‬‫مفتو‬ ‫سرة‬‫مف‬ ‫جة‬‫برم‬ ‫غة‬‫ل‬ ‫لخرى‬‫ا‬ ‫هي‬ ‫تبر‬‫تع‬ ‫فبيرل‬ ،‫عد‬‫ب‬ ‫عرف‬‫ت‬ ‫ل‬ ‫نت‬‫ك‬ ‫إذا‬
.‫للغاية‬
‫السهؤال‬ ‫ههذا‬ ‫عهن‬ ‫أجبهت‬ ‫قهد‬ ‫كنهت‬ ‫ربمها‬ ،‫بيهرل‬ ‫فهي‬ ‫كهبير‬ ‫برنامهج‬ ‫كتابهة‬ ‫وحهاولت‬ ‫لهك‬ ‫سهبق‬ ‫إذا‬
‫البرامهج‬ ‫فهي‬ ‫يهبرع‬ ‫وههو‬ ،‫صهغيرة‬ ‫تكهون‬ ‫عنهدما‬ ‫سههلة‬ ‫بيهرل‬ ‫برامهج‬ ‫فهإن‬ ،‫أخهرى‬ ‫بعبهارة‬ !‫بنفسهك‬
‫المراس‬ ‫صعية‬ ‫البرامج‬ ‫هذه‬ ‫تصبح‬ ‫ما‬ ‫سرعان‬ ‫لكن‬ .‫العمل‬ ‫لنجاز‬ ‫والهاكات‬ ‫والسكربتات‬ ‫الصغيرة‬
‫بلغة‬ ‫كبيرة‬ ‫برامج‬ ‫كتابة‬ ‫تجربة‬ ‫واقع‬ ‫من‬ ‫أتحدث‬ ‫وأنا‬ ،‫أكبر‬ ‫برامج‬ ‫كتابة‬ ‫في‬ ‫البدء‬ ‫بمجرد‬
!‫ياهو‬ ‫في‬ ‫بيرل‬
‫الكتابة‬ ‫في‬ ‫وأسهل‬ ،‫وأوضح‬ ،‫أبسط‬ ‫بالتأكيد‬ ‫هي‬ ‫بيثون‬ ‫على‬ ‫البرامج‬ ‫فإن‬ ،‫بيرل‬ ‫مع‬ ‫وبالمقارنة‬
‫سي‬‫أسا‬ ‫شكل‬‫ب‬ ‫ستخدامها‬‫با‬ ‫قوم‬‫وأ‬ ‫يرل‬‫ب‬ ‫غة‬‫بل‬ ‫جب‬‫مع‬ ‫نا‬‫أ‬ .‫صيانة‬‫ولل‬ ‫هم‬‫للف‬ ‫ية‬‫قابل‬ ‫كثر‬‫أ‬ ‫تالي‬‫وبال‬
‫أصبحت‬ ‫ها‬‫إن‬ ‫يث‬‫ح‬ ‫بيثون؛‬ ‫في‬ ‫ير‬‫التفك‬ ‫أبدأ‬ ،‫برنامجا‬ ‫كتبت‬ ‫ما‬‫كل‬ ‫ني‬‫ولك‬ ،‫عة‬‫متنو‬ ‫لمور‬ ‫يا‬‫يوم‬
‫ها‬‫أن‬ ‫شعر‬‫وت‬ ،‫كات‬‫والها‬ ‫يرات‬‫التغي‬ ‫من‬ ‫كبير‬ ‫عدد‬‫ل‬ ‫يرل‬‫ب‬ ‫غة‬‫ل‬ ‫ضعت‬‫خ‬ .‫لهي‬ ‫سبة‬‫بالن‬ ‫جدا‬ ‫ية‬‫طبيع‬
‫بيرل‬ ‫إصدارة‬ ‫أن‬ ‫المحزن‬ ‫ومن‬ .‫كبير‬ ‫كهاك‬ ‫تبدو‬6‫تحسينات‬ ‫بأي‬ ‫قامت‬ ‫أنها‬ ‫يبدو‬ ‫ل‬ ‫المقبلة‬
.‫بهذا‬ ‫تتعلق‬
‫الضخمة‬ ‫المكتبة‬ ‫هي‬ ‫بيرل‬ ‫في‬ ‫بها‬ ‫أشعر‬ ‫والتي‬ ‫جدا‬ ‫الهامة‬ ‫الوحيد‬ ‫الميزة‬‫بيرل‬ ‫أرشيف‬ ‫شبكة‬
‫الشاملة‬)CPAN, the Comprehensive Perl Archive Network‫يوحي‬ ‫(وكما‬
) ‫وحدات‬ ‫من‬ ‫مزيج‬ ‫جمع‬ ‫هذا‬ ،‫السم‬modules‫للحجم‬ ‫نظرا‬ ‫للعقل‬ ‫مذهل‬ ‫ببساطة‬ ‫وهو‬ ‫بيرل‬ (
.‫الوحدات‬ ‫هذه‬ ‫باستخدام‬ ‫الحاسوب‬ ‫مع‬ ‫به‬ ‫القيام‬ ‫يمكنك‬ ‫شيء‬ ‫بأي‬ ‫القيام‬ ‫عمليا‬ ‫يمكنك‬ ‫والعمق؛‬
‫ولعلي‬ .‫بكثير‬ ‫بيثون‬ ‫من‬ ‫أقدم‬ ‫كونها‬ ‫بيثون‬ ‫من‬ ‫أكثر‬ ‫بيرل‬ ‫مكتبات‬ ‫تجعل‬ ‫التي‬ ‫السباب‬ ‫أحد‬
‫للفهرس‬ ‫عودة‬‫بيرل؟‬ ‫ليس‬ ‫لماذا‬|15
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫في‬ ‫بيثون‬ ‫إلى‬ ‫بيرل‬ ‫وحدات‬ ‫لنقل‬ ‫هاك‬ ‫ورشة‬ ‫أقترح‬comp.lang.python(:
‫كهذلك؛‬‫الجديدةه‬ ‫ة‬‫الفتراضي‬ ‫ة‬‫اﻵل‬Parrot‫بيهرل‬ ‫لغهة‬ ‫مهن‬ ‫كهل‬ ‫لتشهغيل‬ ‫مصهممة‬6‫المعهاد‬
‫مثهل‬ ‫الهخرى‬ ‫المفسهرة‬ ‫واللغهات‬ ‫لبهايثون‬ ‫بالضهافة‬ ‫تمامها‬ ‫تصهميمها‬Ruby‫و‬PHP‫و‬Tcl‫مها‬ .
‫أنك‬ ‫لك‬ ‫بالنسبة‬ ‫هذا‬ ‫يعنيه‬‫ربما‬‫بيثون‬ ‫داخل‬ ‫من‬ ‫بيرل‬ ‫وحدات‬ ‫جميع‬ ‫استخدام‬ ‫على‬ ‫قادرا‬ ‫تكون‬
‫العهالم‬ ‫فهي‬ ‫مكتبهة‬ ‫أقهوى‬ ‫مهن‬ ‫كهل‬ ‫فهي‬ ‫الفضهل‬ ‫ذلهك‬ ‫سهيمنحك‬ ‫ولهذا‬ ،‫المسهتقبل‬ ‫فهي‬CPAN
.‫سيحدث‬ ‫ما‬ ‫ونرى‬ ‫ننتظر‬ ‫أن‬ ‫فقط‬ ‫علينا‬ ‫حال؛‬ ‫أية‬ ‫على‬ .‫القوية‬ ‫بيثون‬ ‫لغة‬ ‫مع‬ ‫بالشتراك‬
‫المبرمجون‬ ‫يقول‬ ‫ماذا‬
.‫رايموند‬ .‫س‬ ‫إِريك‬ ‫أمثال‬ ‫من‬ ‫الهاكر‬ ‫عظماء‬ ‫يقوله‬ ‫ما‬ ‫تقرأ‬ ‫أن‬ ‫المهم‬ ‫من‬ ‫ربما‬
‫ند‬ ‫رايمو‬ .‫س‬ ‫يك‬ ‫إِر‬) '‫والسهوق‬ ‫'الكاتدرائيهة‬ ‫اب‬‫ه‬‫كت‬ ‫مؤلهف‬The Cathedral and the
Bazaar‫يقهول‬ .'‫حة‬‫المفتو‬ ‫صادر‬‫'الم‬ ‫صطلح‬‫م‬ ‫واضهع‬ ‫ضا‬‫أي‬ ‫هو‬‫و‬ (‫لغة‬ ‫هي‬ ‫بيثون‬ ‫أصبحت‬ ‫لقد‬
‫المفضلة‬ ‫برمجته‬.‫بيثون‬ ‫مع‬ ‫خطواتي‬ ‫أولى‬ ‫في‬ ‫لي‬ ‫الحقيقي‬ ‫الملهم‬ ‫هي‬ ‫المقالة‬ ‫هذه‬ ‫وتعتبر‬ .
‫ِل‬ ‫إيك‬ ‫بروس‬‫أن‬ ‫يقهول‬ '++‫سهي‬ ‫بلغهة‬ ‫'التفكيهر‬ ‫و‬ '‫جافها‬ ‫بلغهة‬ ‫'التفكيهر‬ ‫الشههيرة‬ ‫الكتهب‬ ‫مؤلهف‬
‫الوحيدة‬ ‫اللغة‬ ‫تكون‬ ‫ربما‬ ‫بيثون‬ ‫أن‬ ‫ويقول‬ .‫بيثون‬ ‫من‬ ‫إنتاجية‬ ‫أكثر‬ ‫جعلته‬ ‫قد‬ ‫لغة‬ ‫هناك‬ ‫ليس‬
‫اقرأ‬ .‫للمبرمج‬ ‫بالنسبة‬ ‫أسهل‬ ‫المور‬ ‫جعل‬ ‫على‬ ‫تركز‬ ‫التي‬‫الكاملة‬ ‫المقابلة‬.‫التفاصيل‬ ‫من‬ ‫لمزيد‬
‫فج‬ ‫نور‬ ‫يتر‬ ‫ب‬‫سام‬‫رو‬ ‫ان‬ ‫يدو‬‫لجو‬ ‫شكرا‬) ‫جل‬‫جو‬ ‫في‬ ‫حث‬‫الب‬ ‫جودة‬ ‫مدير‬‫و‬ ‫شهير‬ ‫سب‬‫لي‬ ‫لف‬‫مؤ‬‫ڤڤ‬
‫هذا‬ ‫من‬ ‫التحقق‬ ‫يمكنك‬ .‫جوجل‬ ‫من‬ ‫أصيل‬ ‫جزءا‬ ‫دائما‬ ‫كانت‬ ‫بيثون‬ ‫أن‬ ‫يقول‬ (‫ذلك‬ ‫إلى‬ ‫لشارته‬
‫صفحة‬ ‫فهي‬ ‫ظر‬‫الن‬ ‫خلل‬ ‫من‬ ‫الواقهع‬ ‫في‬ ‫التصهريح‬‫جوجل‬ ‫وظائف‬‫فهي‬ ‫ثون‬‫بي‬ ‫غة‬‫ل‬ ‫وضهعت‬ ‫والهتي‬ .
.‫البرمجيات‬ ‫مهندسي‬ ‫من‬ ‫المطلوبة‬ ‫المعارف‬ ‫قائمة‬
‫هز‬‫يرينه‬ ‫بروس‬‫پ‬‫مؤسسههي‬ ‫أحههد‬OpenSource.org‫ومشههروع‬UserLinux‫يهههدف‬ .
Userlinux‫ضهربت‬ ‫وقهد‬ .‫متعهددين‬ ‫منتجيهن‬ ‫مهن‬ ‫مدعومهة‬ ‫لينكهس‬ ‫مهن‬ ‫قياسهية‬ ‫توزيعهة‬ ‫لعمهل‬
‫قبل‬ ‫من‬ ‫مدعومة‬ ‫ستكون‬ ‫التي‬ ‫الرئيسية‬ ‫البرمجة‬ ‫لغة‬ ‫لتصبح‬ ‫وروبي‬ ‫بيرل‬ ‫مثل‬ ‫المتنافسين‬ ‫بيثون‬
Userlinux.
‫للفهرس‬ ‫عودة‬‫المبرمجون‬ ‫يقول‬ ‫ماذا‬|16
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬2‫بيثون‬ ‫تثبيت‬ .
‫المحتويات‬ ‫قائمة‬
‫لينكس/بيإسدي‬ ‫لمستخدمي‬
‫ويندوز‬ ‫لمستخدمي‬
‫الخلصة‬
‫لينكس‬ ‫لمستخدمي‬/‫بيإسدي‬
‫إ‬‫أَو‬ ‫ماندريك‬ ‫أَو‬ ‫فيدورا‬ ‫مثل‬ ‫لينكس‬ ‫توزيعة‬ ُ‫تَستعمل‬ ‫كنت‬ ‫ذا‬}‫هنا‬ َ‫اختيارَك‬ ‫ضع‬{‫نظام‬ ‫أَو‬ ،
‫نظامك‬ ‫على‬ ‫مثبتة‬ ‫بيثون‬ ‫فغالبا‬ ،‫بيإسدي‬ ‫فري‬ ‫مثل‬ ‫بيإسدي‬.
‫طرفية‬ ‫برنامج‬ ‫افتح‬ ،َ‫لينكس‬ ‫توزيعة‬ ‫على‬ ‫عندك‬ ‫بالفعل‬ ‫موجودة‬ ‫بيثون‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫لختِبار‬
)‫مثل‬konsole‫أَو‬gnome-terminal(‫المر‬ ‫وأدخل‬python -V‫بأسفل‬ ‫موضح‬ ‫كما‬.
$ python -V
Python 2. 3. 4
‫ملحظــة‬
$‫إعهدادات‬ ‫علهى‬ ‫اعتمهادا‬ ‫لهك‬ ‫بالنسهبة‬ ‫تختلهف‬ ‫قهد‬ ‫وذلهك‬ ‫النظهام‬ ‫صهدفة‬ ‫فهي‬ ‫المحهث‬ ‫علمهة‬ ‫ههي‬
‫نظامك‬.‫فقط‬ ‫الرمز‬ ‫بهذا‬ ‫المحث‬ ‫إلى‬ ‫أشير‬ ‫سوف‬ ‫لذا‬$.
‫بالفعل‬ ‫مثبتة‬ ‫فبايثون‬ ،‫أعله‬ ‫المعروض‬ ‫مثل‬ ‫الصدارة‬ ‫عن‬ ‫المعلومات‬ ‫بعض‬ ‫رأيت‬ ‫إذا‬.
‫هذه‬ ‫مثل‬ ‫رسالة‬ ‫على‬ ‫حصلت‬ ‫إذا‬ ‫ولكن‬:
$ python -V
bash: python: command not found
‫عندك‬ ‫مثبتة‬ ‫ليست‬ ‫فبايثون‬.‫ممكن‬ ‫لكنه‬ ‫جدًا‬ ‫المستبعد‬ ‫من‬ ‫هذا‬.
: ‫نظامِك‬ ‫على‬ ‫بيثون‬ ‫لتثبيت‬ ‫طريقتان‬ ‫هناك‬ ،‫الحالة‬ ‫هذه‬ ‫في‬
‫مثل‬ ،‫النظام‬ ‫مع‬ ُ‫تَجيء‬ ‫التي‬ ‫الحزم‬ ِ‫إدارة‬ َ‫برامج‬ ‫باستخدام‬ ‫ثنائية‬ ‫حزم‬ ‫تثبيت‬yum‫لينكس‬ ‫في‬
‫و‬ ،‫فيدورا‬urpmi‫و‬ ،‫ماندراك‬ ‫لينكس‬ ‫في‬apt-get‫و‬ ،‫دبيان‬ ‫لينكس‬ ‫في‬pkg_add‫نظام‬ ‫في‬
FreeBSD‫إلخ‬ ،.‫مُلحظة‬:‫الطريقة‬ ‫هذه‬ ‫لستعمال‬ ‫بالنترنت‬ ‫اتصالًا‬ ‫ستحتاج‬.
‫إلى‬ ‫انسخها‬ ‫ذلك‬ ‫وبعد‬ ‫آخر‬ ‫مكان‬ ْ‫مِن‬ ‫الثنائية‬ ‫الحزم‬ َ‫تُحمّل‬ ْ‫أَن‬ ‫يُمْكِنُك‬ ،‫ذلك‬ ‫عن‬ ‫أوبديلًا‬
‫بتثبيتها‬ ‫وقم‬ ‫جهازك‬.
‫من‬ ‫بيثون‬ ‫تصرّف‬ ْ‫أَن‬ ُ‫يُمْكِن‬‫المصدري‬ ‫الكود‬‫وتثبتها‬.‫موقع‬ ‫في‬ ‫موجودة‬ ‫التصريف‬ ‫تعليمات‬
‫بيثون‬.
‫للفهرس‬ ‫عودة‬‫فصل‬2.‫بيثون‬ ‫تثبيت‬|17
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫ويندوز‬ ‫لمستخدمي‬
‫إلهى‬ ‫اذههب‬Python.org/download‫يبلهغ‬ .‫الموقهع‬ ‫ههذا‬ ْ‫ه‬‫مِن‬ ‫بيثهون‬ ‫إصهدارة‬ ‫آخهر‬ ‫ونهزّل‬
‫حجمها‬9.4‫و‬ .‫الخرى‬ ‫البرمجة‬ ‫لغات‬ ‫أكثر‬ ‫مع‬ ‫بالمقارنة‬ ‫جدًا‬ ُ‫مضغوطة‬ ‫وهي‬ ‫فقط‬ ‫بايت‬ .‫م‬
.‫ويندوز‬ ‫بيئة‬ ‫على‬ ‫برامج‬ ّ‫أي‬ ‫مثل‬ ‫التثبيت‬
‫تحذيـر‬
‫مكوّنات‬ ّ‫أي‬ ‫تثبيت‬ ‫بعدم‬ ‫خيارًا‬ ‫تَعطي‬ ‫عندما‬‫اختيارية‬‫ستكون‬ ‫أيها‬ ‫عن‬ ‫العلمة‬ ‫ترفع‬ ‫ل‬ ،
‫خصوصًا‬ ،‫لَك‬ ‫مفيدا‬ ِ‫المكوّنات‬ ‫هذه‬ ‫بعض‬IDLE.
‫حهوالي‬ ّ‫أنه‬ ‫المهثيرة‬ ‫الحقيقهة‬70.‫وينهدوز‬ ‫مسهتعملي‬ ‫مِهن‬ ‫بيثهون‬ ِ‫برامجه‬ ‫بتحميهل‬ ‫قهام‬ ‫ممهن‬ %
ْ‫عِنْدَهُم‬ ُ‫سَيكون‬ ‫تقريبا‬ ‫لينكس‬ ‫مستعملي‬ ّ‫كُل‬ ‫أن‬ ‫حيث‬ َ‫كاملة‬ َ‫صورة‬ ‫تَعطي‬ ‫ل‬ ‫هذه‬ ،‫بالطبع‬
.‫مبدئي‬ ‫بشكل‬ ‫أنظمتِهم‬ ‫على‬ ‫مثبتا‬ ‫بيثون‬
‫ويندوز‬ ‫أوامر‬ ‫سطر‬ ‫في‬ ‫بيثون‬ ‫استخدام‬
ُ‫تَحتاج‬ ‫فإنك‬ ،‫ويندوز‬ ‫أوامر‬ ‫سطر‬ ْ‫مِن‬ ‫بيثون‬ ‫اسْتِعْمال‬ ‫على‬ ‫قادرا‬ َ‫تَكُون‬ ‫أن‬ ‫أردت‬ ‫إذا‬
‫المتغير‬ ‫لضبط‬PATH.‫صحيح‬ ‫بشكل‬
‫هدوز‬‫لوينه‬ ‫هبة‬‫بالنسه‬2000K‫و‬XP‫و‬2003‫هى‬‫عله‬ ‫هر‬‫انقه‬ ،Control Panel ->
System -> Advanced -> Environment Variables‫هى‬‫ه‬‫عل‬ ‫هغط‬‫ه‬‫اض‬ .
‫المسمّى‬ ِ‫المتغيّر‬PATH' ‫قسم‬ ‫في‬System Variables‫اختر‬ ‫ثم‬ ،'Edit‫وأضف‬
;C:Python23‫بالطبع‬ .‫هناك‬ ‫مكتوب‬ ‫هو‬ ‫ما‬ ‫ية‬‫نها‬ ‫في‬ (‫التنصيص‬ ‫مات‬‫عل‬ ‫)بدون‬
.‫المناسب‬ ‫المجلد‬ ‫اسم‬ ‫استخدم‬
' ‫السطر‬ ‫أضف‬ ،‫ويندوز‬ ‫نظام‬ ْ‫مِن‬ ِ‫القدم‬ ‫الصدارات‬ ‫في‬PATH=%PATH%;C:
Python23‫الملف‬ ‫في‬ 'C:AUTOEXEC.BAT.(‫التنصيص‬ ‫علمات‬ ‫)بدون‬
‫لويندوز‬ ‫بالنسبة‬NT‫الملف‬ ‫استخدم‬ ،AUTOEXEC.NT.
‫الخلصة‬
‫تُثبتهها‬ ْ‫ه‬‫أَن‬ ‫فيُمْكِنُهك‬ ‫وإل‬ .َ‫نظهامِك‬ ‫علهى‬ ‫مثبّتهة‬ ‫بيثهون‬ ‫غالبها‬ ‫لينكهس‬ ‫لنظهام‬ ‫بالنسهبة‬
‫تم‬‫ي‬ ،‫ندوز‬‫وي‬ ‫ام‬‫ه‬‫لنظ‬ ‫بالنسهبة‬ .‫تك‬‫توزيع‬ ‫مهع‬ ُ‫تَجيء‬ ‫الهتي‬ ‫الحهزم‬ ِ‫إدارة‬ َ‫ه‬‫برامج‬ ‫ستخدام‬‫با‬
‫ومن‬ .‫عليه‬ ‫مرتين‬ ‫وبالنقر‬ ‫البرنامج‬ ‫ملف‬ ‫تَحميل‬ ‫خلل‬ ‫من‬ ‫كذلك‬ ‫بسهولة‬ ‫بيثون‬ ‫تثبيت‬
.‫نظامك‬ ‫على‬ ‫مثبتة‬ ‫بيثون‬ ّ‫أن‬ ‫سنفترض‬ ،‫فصاعدًَا‬ ‫اﻵن‬
.‫بيثون‬ ‫على‬ ‫الول‬ ‫برنامجَنا‬ ُ‫سَنَكْتب‬ ،‫القادم‬ ‫الفصل‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|18
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬3‫الولى‬ ‫الخطوات‬ .
‫المحتويات‬ ‫قائمة‬
‫المحث‬ ‫استخدام‬
‫محرر‬ ‫اختيار‬
‫مصدري‬ ‫ملف‬ ‫استخدام‬
‫الخرْج‬
‫يعمل‬ ‫كيف‬
‫تنفيذية‬ ‫بيثون‬ ‫برامج‬
‫المساعدة‬ ‫على‬ ‫الحصول‬
‫الخلصة‬‫مقدمة‬
‫مقدمـــة‬
َ‫ه‬‫كَيف‬ ‫اﻵهن‬ ‫َنَرى‬‫ه‬‫س‬‫التقليهدي‬ ‫البرنامهج‬ ‫نشهغل‬'Hello World'‫بيثهون‬ ‫فهي‬.‫ههذا‬ ‫َيُعلّمُك‬‫ه‬‫س‬
‫بيثون‬ َ‫برامج‬ ‫وتشغّل‬ ،‫وتحفظ‬ ،ُ‫تَكْتب‬ َ‫كَيف‬.
‫التفاعلي‬ ‫المفسر‬ ‫محث‬ ‫استخدام‬ ‫برنامجِكَ؛‬ ‫لتشغيل‬ ‫بيثون‬ ‫لستخدام‬ ‫طريقتين‬ ‫هناك‬)‫خلل‬ ‫من‬
‫طرفية‬ ‫أي‬(‫مصدري‬ ‫ملف‬ ‫استخدام‬ ‫أو‬.‫الطريقتين‬ ‫كلتا‬ ُ‫نَستعمل‬ َ‫كَيف‬ ‫اﻵن‬ ‫وسَنَرى‬.
‫المحـث‬ ‫استخدام‬
‫كلمهة‬ ‫بكتابهة‬ ‫الهوامر‬ ‫سهطر‬ ‫فهي‬ ‫المفسهر‬ ‫ابهدأ‬python‫اكتهب‬ ‫واﻵهن‬ .‫الصهَّدَفة‬ ‫محهث‬ ‫فهي‬
print 'Hello World'‫بزر‬ ‫عة‬‫متبو‬Enter‫مات‬‫الكل‬ ‫ترى‬ ‫أن‬ ‫فترض‬‫ي‬ .Hello World
.‫كناتج‬
‫المتغيّهر‬ ‫دليهل‬ ‫ضهبطت‬ ‫إذا‬ ‫الهوامر‬ ‫سهطر‬ ‫مهن‬ ‫المفسهر‬ ‫تشهغل‬ ‫أن‬ ‫يُمْكنهك‬ ،‫وينهدوز‬ ‫لمسهتخدمي‬
PATHَ‫برنهامج‬ َ‫تَسهتعمل‬ ْ‫ه‬‫أَن‬ ‫يُمْكِنُهك‬ ،‫ذلهك‬ ‫عهن‬ ‫بهديلًا‬ ‫أو‬ .‫ملئم‬ ‫بشهكل‬IDLE. IDLE
‫على‬ ‫انقر‬ .‫متكاملة‬ ‫تطوير‬ ِ‫بيئة‬ ‫عن‬ ‫عبارة‬Start -> Programs -> Python 2. 3 ->
IDLE (Python GUI‫يستعملوا‬ ‫أن‬ ‫يمكنهم‬ ِ‫لينكس‬ ‫مستخدمي‬ .(IDLE.‫أيضًا‬
.‫بيثون‬ ‫إفادات‬ ‫إدخال‬ ‫محث‬ ‫هي‬ >>> ‫العلمة‬ ‫هذه‬ ‫أن‬ ‫لحظ‬
‫مثال‬3.1‫بيثون‬ ‫مفسر‬ ‫محث‬ ‫.استعمال‬
$ python
Python 2.3.4 (#1, Oct 26 2004, 16:42:40)
‫للفهرس‬ ‫عودة‬‫المحـث‬ ‫استخدام‬|19
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> print 'hello world'
hello world
>>>
‫هو‬ ‫أدخلته‬ ‫ما‬ .‫فورًا‬ ‫السطر‬ َ‫ناتج‬ ‫تعطيك‬ ‫بيثون‬ ّ‫أن‬ ْ‫لحظ‬‫إفادة‬‫نستخدم‬ .‫واحدة‬ ‫بيثون‬print
َّ‫النَص‬ ‫أعطيناها‬ ،‫هنا‬ .‫لها‬ ‫نعطيها‬ ‫قيمة‬ ‫أيّة‬ ‫لطبع‬ -‫مفاجئة‬ ‫-ليست‬Hello World‫طُبِع‬ ‫وقد‬
.‫الشاشة‬ ‫على‬ ‫فورًا‬
‫بيثون‬ ‫محث‬ ‫من‬ ‫الخروج‬ ‫كيفية‬
‫ل‬‫مفتهاحي‬ ‫علهى‬ ‫اضهغط‬ ‫البرنامهج‬ ‫محهث‬ ‫مهن‬ ‫لخُهرُوج‬Ctrl+dُ‫تَسهتعمل‬ ‫كنهت‬ ‫إذا‬IDLE‫أَو‬
‫مفتهاح‬ ‫اضهغط‬ ،‫وينهدوز‬ ‫أوامهر‬ ‫سهطر‬ ‫حالهة‬ ‫فهي‬ .‫لينكهس/بيإسهدي‬ ‫صهددَفَة‬ ‫تسهتخدم‬Ctrl+z
‫بمفتاح‬ ‫متبوعة‬Enter.
‫محــرر‬ ‫اختيـار‬
ِ‫الملفات‬ ‫لكِتابَة‬ ‫محرّرًا‬ ُ‫نَحتاج‬ ،ِ‫المصدرية‬ ِ‫الملفات‬ ‫في‬ ‫بيثون‬ ِ‫برامج‬ ‫لكِتابة‬ ‫نَنتقل‬ ْ‫أَن‬ َ‫قَبْل‬
ُ‫تار‬‫تَخ‬ ‫ما‬‫ك‬ َ‫حرر‬‫الم‬ َ‫تار‬‫تخ‬ ْ‫ن‬َ‫أ‬ ُ‫ب‬ِ‫يَج‬ .‫ية‬‫الهم‬ ‫ية‬‫غا‬ ‫في‬ ‫مر‬‫أ‬ ِ‫حرّر‬ُ‫الم‬ ‫يار‬‫اخت‬ .ِ‫صدرية‬‫الم‬
‫رحلتَك‬ ُ‫ويَجْعل‬ ،‫بسهولة‬ ‫بيثون‬ ‫برامج‬ ‫كتابة‬ ‫على‬ ‫يُساعدُك‬ ‫الجيد‬ ‫المحرّر‬ .‫تَشتريها‬ ‫سيارة‬
.‫أمانًا‬ ‫وأكثر‬ ‫بكثير‬ ‫أسرع‬ ‫بطريقة‬ َ‫غايتِك‬ ‫إلى‬ َ‫لتَصِل‬ ‫ويُساعدُك‬ َ‫أكثر‬ ً‫مريحة‬
‫ههي‬ ‫جهدًا‬ ِ‫الساسهية‬ ِ‫المتطلبهات‬ ‫إحهدى‬‫الهتركيب‬ ‫إبراز‬)syntax highlighting‫حيهث‬ (
‫أن‬ ‫لك‬ ‫يتسنى‬ ‫حتى‬ ‫المختلفة‬ ‫بيثون‬ ِ‫برنامج‬ ‫أجزاء‬ ‫تلون‬‫تَرى‬‫كيفية‬ ُ‫وتَتصوّر‬ َ‫نامجَك‬‫بر‬
.‫عمله‬
‫استعمال‬ ‫عليك‬ ُ‫أَقترح‬ ،‫ويندوز‬ ُ‫تَستعمل‬ ‫كنت‬ ‫إذا‬IDLE‫إن‬ ‫حيث‬ .IDLE‫بإبراز‬ ‫بعمل‬ ‫يقوم‬
‫داخهل‬ َ‫برامجِكه‬ ‫تشهغيل‬ ‫مهن‬ ‫تمكينهك‬ ‫مثهل‬ ‫وأكهثر‬ ‫الهتركيب‬IDLE.‫أخهرى‬ ِ‫أشهياء‬ ‫ضهمن‬
:‫خاصّة‬ ‫مُلحظة‬ْ‫ستعمل‬ ‫ت‬ ‫ل‬Notepad‫التركيب‬ ‫بإبراز‬ ‫تقوم‬ ‫ل‬ ‫لنها‬ ‫سيئ‬ ‫اختيار‬ ‫فهي‬ ،
) ِّ‫ه‬‫النَص‬ ‫إزاحهة‬ ُ‫تَهدْعم‬ ‫ل‬ ‫أنهه‬ ‫ذلهك‬ ‫مهن‬ ‫والههم‬indentation(‫البهادءة‬ ‫المسهافات‬ ‫تنظيهم‬ ‫أي‬ ،
‫مثل‬ ‫الجيدة‬ ‫المحرّرات‬ .‫لحقًا‬ ‫سَنَرى‬ ‫كما‬ ‫حالتِنا‬ ‫في‬ ‫جدًا‬ ُ‫مهم‬ ‫وهو‬IDLE‫)وأيضًا‬VIM(
.‫ذلك‬ ‫عمَل‬ ‫على‬ ‫آليًا‬ ‫ستساعدك‬
‫كنهت‬ ‫وإذا‬ .‫منهها‬ ‫لتختهار‬ ‫المحهرّرِات‬ ْ‫ه‬‫مِن‬ ‫الكهثير‬ ‫فلهديك‬ ‫لينكهس/بيإسهدي‬ ُ‫تَسهتعمل‬ ‫كنهت‬ ‫إذا‬
‫تستعمل‬ ‫أنك‬ ‫المؤكد‬ ‫فمن‬ ،‫خبيرا‬ ‫مبرمجا‬VIM‫أو‬Emacs‫اثنان‬ ‫بأنهما‬ ‫للقول‬ ‫حاجة‬ ‫ول‬ .
ُ‫أَستعمل‬ ‫شخصيًا‬ ‫أنا‬ .‫بيثون‬ ِ‫برامج‬ ‫لكِتابَة‬ ‫استعمالهما‬ ‫من‬ ُ‫سَتَستفيد‬ ‫و‬ ‫القوى‬ ‫المحرّرات‬ ْ‫مِن‬
‫للفهرس‬ ‫عودة‬‫محــرر‬ ‫اختيـار‬|20
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
VIMَ‫تَستعمل‬ ْ‫أَن‬ ‫يُمْكِنُك‬ ‫حينئذ‬ ،‫مبتدئا‬ ‫مبرمجِا‬ ‫كنت‬ ‫إذا‬ .‫برامجِي‬ ‫لغلب‬Kate‫وهي‬ ،
‫لتَعَلّم‬ ‫وقت‬ ‫قضاء‬ ‫في‬ ‫راغبا‬ ‫كنت‬ ‫إذا‬ ‫ما‬ ‫حالة‬ ‫في‬ .ِ‫المفضّلة‬ ‫أدواتي‬ ‫إحدى‬VIM‫أَو‬Emacs،
‫في‬ ‫َك‬‫ل‬ ‫جدًا‬ ‫يدا‬‫مف‬ ‫لك‬‫ذ‬ ُ‫سَيَكُون‬ ‫يث‬‫ح‬ ‫ما‬‫منه‬ ‫أي‬ ‫سْتِعْمال‬‫ا‬ ‫ّم‬‫تَتعل‬ ‫أن‬ ‫شدة‬‫ب‬ ‫صيك‬‫أَو‬ ‫فإني‬
.‫البعيد‬ ‫المدى‬
‫انظهر‬ ،‫المحهررات‬ ‫مهن‬ ‫الهخرى‬ ‫الخيهارات‬ ‫اسْتِكْشهاف‬ ُ‫تُريهد‬ ‫تهزال‬ ‫مها‬ ‫كنهت‬ ‫إذا‬َ‫الشاملة‬ َ‫القائمة‬
‫بيثون‬ ‫لمحرّرات‬‫طالع‬ ،‫لبايثون‬ ِ‫متكاملة‬ ‫تطوير‬ ‫بيئة‬ ‫أيضًا‬ َ‫تَختار‬ ْ‫أَن‬ ‫يُمْكِنُك‬ .‫خيارك‬ ‫وحدد‬
‫التطوير‬ ‫لبيئات‬ َ‫الشاملة‬ َ‫القائمة‬.‫التفاصيل‬ ‫من‬ ‫للمزيد‬ ‫بيثون‬ ِ‫تدعم‬ ‫التي‬
‫مرحَا‬ َ‫أكثر‬ ‫بيثون‬ ‫برامج‬ ‫كتابة‬ َ‫يَجْعل‬ ‫فهو‬ ،‫جيدا‬ ‫محرّرا‬ ْ‫اختر‬ ً‫رجاء‬ ،‫أخرى‬ ً‫مرة‬ ُ‫أُكرّر‬
.‫وسهولة‬
‫مصدري‬ ‫ملف‬ ‫استخدام‬
‫و‬‫تكتبه‬ ‫مج‬‫برنا‬ ‫أول‬ ،‫يدة‬‫جد‬ ‫جة‬‫برم‬ ‫لغة‬ ‫مت‬‫تعل‬ ‫ما‬‫كل‬ ‫أنه‬ ‫يد‬‫تقل‬ ‫ناك‬‫ه‬ .‫البرمجة‬ ‫لى‬‫إ‬ ‫عد‬‫لن‬ ‫اﻵن‬
' ‫برنامهج‬ ‫ههو‬ ‫وتشهغله‬Hello World' ‫يقهول‬ ‫أن‬ ‫ههو‬ ‫يفعلهه‬ ‫مها‬ ‫كهل‬ ‫'؛‬Hello World‫عنهد‬ '
.‫تشغيله‬
‫باسم‬ ‫واحفظه‬ ‫التالي‬ ‫البرنامج‬ ‫أدخل‬ ،‫المفضل‬ ‫محررك‬ ‫شغل‬helloworld.py
‫مثال‬3.2‫مصدري‬ ‫ملف‬ ‫استخدام‬ .
#!/usr/bin/python
# Filename : helloworld.py
print 'Hello World'
:‫المصدر‬ ‫)الملف‬code/helloworld.py(
‫الهمر‬ ‫كتابهة‬ ‫ثهم‬ (‫دوس‬ ‫محهث‬ ‫أو‬ ‫لينكهس‬ ‫)طرفيهة‬ ‫الصهدفة‬ ‫فتهح‬ ‫طريهق‬ ‫عهن‬ ‫البرنامهج‬ ‫ههذا‬ ‫شهغل‬
python helloworld.py‫تسهتخدم‬ ‫كنهت‬ ‫إذا‬ .IDLE‫قائمهة‬ ‫فاسهتخدم‬Edit -> Run
Script‫المفاتيح‬ ‫لوحة‬ ‫اختصار‬ ‫أو‬Ctrl+F5.‫أدناه‬ ‫مبين‬ ‫الخرْج‬ .
‫الخرْج‬
$ python helloworld.py
Hello World
‫للفهرس‬ ‫عودة‬‫مصدري‬ ‫ملف‬ ‫استخدام‬|21
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫لك‬ ‫برنامج‬ ‫أول‬ ‫تشغيل‬ ‫في‬ ‫نجحت‬ ‫لقد‬ ،‫لك‬ ‫فتهانينا‬ ،‫أعله‬ ‫مبين‬ ‫هو‬ ‫كما‬ ‫الناتج‬ ‫على‬ ‫حصلت‬ ‫إذا‬
.‫بيثون‬ ‫في‬
‫المذكور‬ ‫البرنامج‬ ‫كتابة‬ ‫يرجى‬ ،‫ما‬ ‫خطأ‬ ‫على‬ ‫حصلت‬ ‫حال‬ ‫وفي‬‫بالضبط‬‫أعله‬ ‫مبين‬ ‫هو‬ ‫كما‬
‫الهحرف‬ ‫بيهن‬ ‫)التفريهق‬ ‫الهحرف‬ ‫لحالهة‬ ‫حساسهة‬ ‫بيثهون‬ ‫أن‬ ‫لحهظ‬ .‫أخهرى‬ ‫مهرة‬ ‫البرنامهج‬ ‫وتشهغيل‬
‫كلمة‬ ‫مثل‬ (‫والصغيرة‬ ‫الكبيرة‬ ‫اللتينية‬print‫تساوي‬ ‫ل‬Print‫الصغير‬ ‫الحرف‬ ‫-لحظ‬p‫في‬
‫الكبير‬ ‫الحرف‬ ‫و‬ ‫الولى‬ ‫الكلمة‬P‫الحرف‬ ‫قبل‬ ‫مسافات‬ ‫وجود‬ ‫عدم‬ ‫من‬ ‫تأكد‬ ،‫أيضا‬ -‫الخيرة‬ ‫في‬
.-‫لحق‬ ‫وقت‬ ‫في‬ ‫مهم‬ ‫أمر‬ ‫هذا‬ ‫لماذا‬ ‫-سنرى‬ ‫سطر‬ ‫كل‬ ‫في‬ ‫الول‬
‫يعمل‬ ‫كيف‬
‫البرنامهج‬ ‫مهن‬ ‫سهطرين‬ ‫أول‬ ‫فهي‬ ‫ننظهر‬ ‫دعونها‬.‫ههذه‬ ‫تسهمى‬‫تعليقهات‬)comments(‫شهيء‬ ‫أي‬ ،
‫الرمز‬ ‫يمين‬ ‫على‬ ‫مكتوب‬#‫البرنامج‬ ‫هذا‬ ‫لقارئ‬ ‫مفيد‬ ‫أمر‬ ‫الساس‬ ‫في‬ ‫هو‬ ‫و‬ ‫تعليق‬ ‫هو‬.
‫خاصهة‬ ‫حالهة‬ ‫وههو‬ ‫هنها‬ ‫الهول‬ ‫السهطر‬ ‫باسهتثناء‬ ‫التعليقهات‬ ‫تسهتخدم‬ ‫ل‬ ‫بيثهون‬.‫تسهمى‬ ‫وههي‬‫سهطر‬
‫شهابانغ‬)shebang(‫عهن‬ ‫عبهارة‬ ‫المصهدري‬ ‫الملهف‬ ‫مهن‬ ‫حرفيهن‬ ‫أول‬ ‫يكهون‬ ‫عنهدما‬!#‫متبوعها‬
‫لينكهس‬ ‫يخهبر‬ ‫ههذا‬ ‫إن‬‫ه‬‫ف‬ ‫مج‬‫برنا‬ ‫ار‬‫ه‬‫بمس‬/‫المفسهر‬ ‫ههذا‬ ‫مهع‬ ‫يعمهل‬ ‫أن‬ ‫يجهب‬ ‫مج‬‫البرنا‬ ‫ههذا‬ ‫أن‬ ‫يهونكس‬
)interpreter(‫عنهد‬‫تنفيهذه‬.‫فهي‬ ‫بالتفصهيل‬ ‫ههذا‬ ‫يُشهرح‬ ‫وسهوف‬‫التالي‬‫ه‬‫الفصله‬.‫بهأنه‬ ‫علمها‬
‫الوامر‬ ‫سطر‬ ‫على‬ ‫مباشرة‬ ‫المفسر‬ ‫تحديد‬ ‫خلل‬ ‫من‬ ‫منصة‬ ‫أي‬ ‫على‬ ‫البرنامج‬ ‫تشغيل‬ ‫دائما‬ ‫يمكنك‬
‫المر‬ ‫مثل‬python helloworld.py.
‫ههام‬
‫أمر‬ ‫وهذا‬ ،‫البرنامج‬ ‫في‬ ‫المهمة‬ ‫التفاصيل‬ ‫بعض‬ ‫لشرح‬ ‫برنامجك‬ ‫في‬ ‫بحنكة‬ ‫التعليقات‬ ‫استخدم‬
‫البرنامج‬ ‫به‬ ‫يقوم‬ ‫ما‬ ‫فهم‬ ‫بسهولة‬ ‫يمكن‬ ‫بحيث‬ ‫برنامجك‬ ‫لقارئ‬ ‫مفيد‬.‫الشخص‬ ‫هذا‬ ‫إن‬ ،‫تذكر‬
‫أشهر‬ ‫ستة‬ ‫بعد‬ ‫نفسك‬ ‫أنت‬ ‫يكون‬ ‫أن‬ ‫يمكن‬!
‫متبوعة‬ ‫التعليقات‬‫بإفادة‬‫النص‬ ‫بطباعة‬ ‫فقط‬ ‫تقوم‬ ،‫بيثون‬'Hello World'.‫كلمة‬print‫هي‬
‫عامل‬ ‫الحقيقة‬ ‫في‬)operator(‫و‬'Hello World'‫سلسلة‬ ‫باعتبارها‬ ‫إليها‬ ‫يشار‬)string(،
‫لحقا‬ ‫بالتفصيل‬ ‫المصطلحات‬ ‫هذه‬ ‫أمر‬ ‫سنبحث‬ ،‫تقلق‬ ‫ل‬.
‫تنفيذية‬ ‫بيثون‬ ‫برامج‬
‫بعض‬ ‫لديهم‬ ‫ويندوز‬ ‫مستخدمو‬ ‫يكون‬ ‫قد‬ ‫ولكن‬ ‫لينكس/يونكس‬ ‫مستخدمي‬ ‫على‬ ‫إل‬ ‫هذا‬ ‫ينطبق‬ ‫ل‬
‫باستخدام‬ ‫يذ‬‫التنف‬ ‫صلحية‬ ‫مج‬‫البرنا‬ ‫طاء‬‫إع‬ ‫نا‬‫علي‬ ،‫أول‬ .‫البرنامج‬ ‫من‬ ‫الول‬ ‫السطر‬ ‫عن‬ ‫ضول‬‫الف‬
‫المر‬chmod‫ثم‬‫تشغيل‬.‫المصدري‬ ‫البرنامج‬
$ chmod a+x helloworld.py
‫للفهرس‬ ‫عودة‬‫تنفيذية‬ ‫بيثون‬ ‫برامج‬|22
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
$ ./helloworld.py
Hello World
‫أمر‬chmod‫الصلحية‬ ‫باعطاء‬ ‫للتنفيذ‬ ‫قابل‬ ‫لجعله‬ ‫الملف‬ ‫تصاريح‬ ‫حالة‬ ‫لتغيير‬ ‫هنا‬ ‫يستخدم‬
‫لف‬‫الم‬ ‫قع‬‫مو‬ ‫يد‬‫تحد‬ ‫يق‬‫طر‬ ‫عن‬ ‫شرة‬‫مبا‬ ‫مج‬‫البرنا‬ ‫فذ‬‫نن‬ ‫نا‬‫فإن‬ ‫عدها‬‫وب‬ .‫ظام‬‫الن‬ ‫ستخدمي‬‫م‬ ‫يع‬‫لجم‬
‫نستخدم‬ .‫المصدري‬/ ..‫الحالي‬ ‫الدليل‬ ‫في‬ ‫يقع‬ ‫البرنامج‬ ‫هذا‬ ‫أن‬ ‫إلى‬ ‫لتشير‬
‫إلى‬ ‫لف‬‫الم‬ ‫تسمية‬ ‫إعادة‬ ‫فقط‬ ‫يمكنك‬ ،‫متعة‬ ‫كثر‬‫أ‬ ‫المور‬ ‫لجعل‬helloworld‫على‬ ‫وتشغيله‬
‫النحهو‬/ .helloworld‫باسهتخدام‬ ‫البرنامهج‬ ‫تشهغيل‬ ‫عليهه‬ ‫أن‬ ‫يعهرف‬ ‫النظهام‬ ‫لهن‬ ‫وسهيعمل‬
.‫المصدر‬ ‫الملف‬ ‫من‬ ‫الول‬ ‫السطر‬ ‫في‬ ‫المحدد‬ ‫المفسر‬
‫كنت‬ ‫لو‬ ‫ماذا‬ ‫ولكن‬ ،‫البرنامج‬ ‫مسار‬ ‫بالضبط‬ ‫تعرف‬ ‫دمت‬ ‫ما‬ ‫البرنامج‬ ‫تشغيل‬ ‫على‬ ‫قادر‬ ‫اﻵن‬ ‫أنت‬
‫تخزيهن‬ ‫خلل‬ ‫مهن‬ ‫ذلهك‬ ‫تفعهل‬ ‫أن‬ ‫يمكنهك‬ ‫مكهان؟‬ ‫أي‬ ‫مهن‬ ‫البرنامهج‬ ‫تشهغيل‬ ‫علهى‬ ‫القهدرة‬ ‫تريهد‬
‫لبيئة‬‫ا‬ ‫ير‬‫متغ‬ ‫سار‬‫م‬ ‫في‬ ‫الواردة‬ ‫الدله‬ ‫من‬ ‫واحدة‬ ‫في‬ ‫مج‬‫البرنا‬PATH‫أي‬ ‫شغيل‬‫بت‬ ‫مت‬‫ق‬ ‫ما‬‫كل‬ .
‫البيئة‬ ‫متغير‬ ‫مسار‬ ‫في‬ ‫الواردة‬ ‫الدلة‬ ‫من‬ ‫كل‬ ‫في‬ ‫البرنامج‬ ‫هذا‬ ‫عن‬ ‫يبحث‬ ‫النظام‬ ‫فإن‬ ،‫برنامج‬
PATH‫وبكل‬ ‫مكان‬ ‫كل‬ ‫في‬ ‫متاحا‬ ‫البرنامج‬ ‫هذا‬ ‫نجعل‬ ‫أن‬ ‫يمكننا‬ .‫البرنامج‬ ‫هذا‬ ‫يشغل‬ ‫ثم‬ ‫ومن‬
‫المسار‬ ‫في‬ ‫الواردة‬ ‫الدله‬ ‫من‬ ‫واحد‬ ‫إلى‬ ‫المصدر‬ ‫الملف‬ ‫هذا‬ ‫نسخ‬ ‫بساطة‬PATH.
$ echo $PATH
/
opt/mono/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/sw
aroop/bin
$ cp helloworld.py /home/swaroop/bin/helloworld
$ helloworld
Hello World
‫ير‬‫المتغ‬ ‫عرض‬ ‫نك‬‫يمك‬PATH‫لمر‬‫ا‬ ‫ستخدام‬‫با‬echo‫ضافة‬‫وإ‬$‫بار‬‫لخ‬ ‫ير‬‫المتغ‬ ‫سم‬‫ا‬ ‫بل‬‫ق‬
‫أن‬ ‫نرى‬ ‫ونحن‬ .‫المتغير‬ ‫هذا‬ ‫قيمة‬ ‫نريد‬ ‫أننا‬ ‫الصدفة‬/home/swaroop/bin‫الدلة‬ ‫أحد‬ ‫هو‬
‫المسار‬ ‫في‬PATH‫يث‬‫ح‬swaroop‫سيكون‬ .‫ظامي‬‫ن‬ ‫لى‬‫ع‬ ‫أستخدمه‬ ‫الذي‬ ‫المستخدم‬ ‫اسم‬ ‫هو‬
‫أن‬ ‫يمكنك‬ ،‫لذلك‬ ‫كبديل‬ ‫أو‬ .‫جهازك‬ ‫على‬ ‫بك‬ ‫الخاص‬ ‫المستخدم‬ ‫لسم‬ ‫مماثل‬ ‫دليل‬ ‫عادة‬ ‫هناك‬
‫للمتغير‬ ‫اختيارك‬ ‫من‬ ‫دليل‬ ‫تضيف‬PATH‫المر‬ ‫كتابة‬ ‫طريق‬ ‫عن‬ ‫ذلك‬ ‫يتم‬ ‫أن‬ ‫ويمكن‬ ،
PATH=$PATH:/home/swaroop/mydir
‫حيث‬/'home/swaroop/mydir'‫المتغير‬ ‫إلى‬ ‫إضافته‬ ‫أريد‬ ‫الذي‬ ‫الدليل‬ ‫هو‬PATH.
‫في‬ ‫البرنامج‬ ‫تشغيل‬ ‫وتريد‬ ‫مفيدة‬ ‫سكربتات‬ ‫تكتب‬ ‫أن‬ ‫تريد‬ ‫كنت‬ ‫إذا‬ ‫جدا‬ ‫مفيدة‬ ‫الطريقة‬ ‫وهذه‬
‫المر‬ ‫مثل‬ ‫مثلها‬ ‫الخاصة‬ ‫أوامرك‬ ‫عمل‬ ‫يشبه‬ ‫إنه‬ .‫مكان‬ ‫أي‬ ‫وفي‬ ‫وقت‬ ‫أي‬cd‫الوامر‬ ‫من‬ ‫أوغيره‬
‫للفهرس‬ ‫عودة‬‫تنفيذية‬ ‫بيثون‬ ‫برامج‬|23
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫دوس‬ ‫أو‬ ‫لينكس‬ ‫طرفية‬ ‫في‬ ‫تستخدمها‬ ‫التي‬
‫تحـذيــر‬
.‫الشيء‬ ‫نفس‬ ‫تعني‬ ‫جميعها‬ ‫تطبيق‬ ‫أو‬ ‫سكريبت‬ ‫أو‬ ‫برنامج‬ ‫بيثون‬ ‫في‬
‫المساعدة‬ ‫على‬ ‫الحصول‬
) ‫إفهادة‬ ‫أو‬ ‫دالهة‬ ‫أي‬ ‫عهن‬ ‫سهريع‬ ‫بشهكل‬ ‫معلومهات‬ ‫إلهى‬ ‫بحاجهة‬ ‫كنهت‬ ‫إذا‬statement،‫بيثهون‬ ‫فهي‬ (
‫استخدام‬ ‫عند‬ ‫وخصوصا‬ ‫جدا‬ ‫مفيد‬ ‫هذا‬ .‫البرنامج‬ ‫في‬ ‫المدمجة‬ ‫المساعدة‬ ‫وظيفة‬ ‫استخدام‬ ‫يمكنك‬
‫شهغل‬ ‫المثهال‬ ‫سهبيل‬ ‫فعلهى‬ .‫المفسهر‬ ‫محهث‬help(str(‫الصهنف‬ ‫عهن‬ ‫مسهاعدة‬ ‫ههذا‬ ‫وسهيعرض‬str
‫بالتفصيل‬ ‫الطبقات‬ ‫ستشرح‬ .‫برنامجك‬ ‫في‬ ‫تستخدمه‬ (‫)سلسلة‬ ‫نص‬ ‫كل‬ ‫لتخزين‬ ‫تستخدم‬ ‫والتي‬
.‫الكائنية‬ ‫بالبرمجة‬ ‫المتعلق‬ ‫الفصل‬ ‫في‬
‫ملحظــة‬
‫اضغط‬q.‫المساعدة‬ ‫من‬ ‫للخروج‬
‫استخدم‬ .‫بيثون‬ ‫في‬ ‫تقريبا‬ ‫شيء‬ ‫أي‬ ‫عن‬ ‫معلومات‬ ‫على‬ ‫الحصول‬ ‫يمكنك‬ ،‫وبالمثل‬help()‫حول‬ ‫المزيد‬ ‫لمعرفة‬
.‫نفسها‬ ‫المساعدة‬ ‫استخدام‬
‫مثل‬ ‫عامل‬ ‫عن‬ ‫مساعدة‬ ‫على‬ ‫الحصول‬ ‫إلى‬ ‫بحاجة‬ ‫كنت‬ ‫حال‬ ‫في‬print‫البيئة‬ ‫متغير‬ ‫تحديد‬ ‫إلى‬ ‫بحاجة‬ ‫فأنت‬ ،
PYTHONDOCS‫المر‬ ‫باستخدام‬ ‫لينكس/يونكس‬ ‫على‬ ‫بسهولة‬ ‫ذلك‬ ‫يتم‬ ‫أن‬ ‫ويمكن‬ .‫مناسب‬ ‫بشكل‬env.
$ env PYTHONDOCS=/usr/share/doc/python-docs-2.3.4/html/ python
Python 2.3.4 (#1, Oct 26 2004, 16:42:40)
[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2
Type "help", "copyright", "credits" or "license" for more
information.
>>> help('print')
‫لتحديد‬ ‫القتباس‬ ‫علمة‬ ‫استخدمت‬ ‫أني‬ ‫ستلحظ‬'print'‫أريد‬ ‫أنني‬ ‫تفهم‬ ‫أن‬ ‫لبايثون‬ ‫يمكن‬ ‫حتى‬
' ‫حهول‬ ‫مسهاعدة‬ ‫استحضهار‬print‫اسهتخدمت‬ ‫أننهي‬ ‫علمها‬ .‫شهيء‬ ‫أي‬ ‫طباعهة‬ ‫منهه‬ ‫أطلهب‬ ‫ل‬ ‫وأننهي‬ '
‫فيدورا‬ ‫في‬ ‫المستخدم‬ ‫المكان‬3.‫الصدارة‬ ‫أو‬ ‫للتوزيعة‬ ‫طبقا‬ ‫مختلفة‬ ‫تكون‬ ‫وقد‬
‫الخلصة‬
‫أنهت‬ ‫اﻵهن‬ .‫سههولة‬ ‫بكهل‬ ‫بيثهون‬ ‫برامهج‬ ‫وتشهغيل‬ ،‫وحفهظ‬ ،‫كتابهة‬ ‫علهى‬ ‫قهادرا‬ ‫اﻵهن‬ ‫تكهون‬ ‫أن‬ ‫يجهب‬
.‫بيثون‬ ‫عن‬ ‫أكثر‬ ‫مفاهيم‬ ‫نتعلم‬ ‫اﻵن‬ ‫دعنا‬ ،‫بيثون‬ ‫مستخدم‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|24
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬4‫الساسيات‬ .
‫المحتويات‬ ‫قائمة‬
‫الحرفية‬ ‫الثوابت‬
‫العداد‬
‫السلسل‬
‫المتغيرات‬
‫المعرف‬ ‫تسمية‬
‫البيانات‬ ‫أنواع‬
‫الكائنات‬
‫الخرْج‬
‫يعمل‬ ‫كيف‬
‫والمنطقية‬ ‫المادية‬ ‫السطور‬
‫الزاحة‬
‫الخلصة‬
' ‫طباعهة‬ ‫مجهرد‬Hello World‫مهن‬ ‫أكهثر‬ ‫تفعهل‬ ‫أن‬ ‫تريهد‬ ‫ههل‬ ‫كهذلك؟‬ ‫أليهس‬ ،‫يكفهي‬ ‫ل‬ ‫فقهط‬ '
‫في‬ ‫هذا‬ ‫نحقق‬ ‫أن‬ ‫يمكننا‬ .‫منها‬ ‫شيء‬ ‫على‬ ‫والحصول‬ ‫معالجتها‬ ‫و‬ ،‫المدخلت‬ ‫بعض‬ ‫أخذ‬ ‫تريد‬ ‫ذلك؛‬
.‫والمتغيرات‬ ‫الثوابت‬ ‫باستخدام‬ ‫بيثون‬
‫الحرفية‬ ‫الثوابت‬
‫العدد‬ ‫الحرفي‬ ‫الثابت‬ ‫على‬ ‫المثلة‬ ‫من‬5‫أو‬ ،1.23‫أو‬ ،9.25e-3‫مثل‬ ‫سلسلة‬ ‫أو‬ ،'‫سلسلة‬ ‫هذه‬'
‫أو‬"It's a string"!.‫حرفيهة‬ ‫تسهمى‬ ‫وههذه‬)literal(‫لنهها‬‫حرفيهة‬‫قيمتهها‬ ‫تسهتخدم‬ ‫وأنهت‬ ،
‫الحرفيهة‬.‫الرقهم‬2‫ابت‬‫ه‬‫ث‬ ‫هو‬‫ف‬ ‫خر؛‬‫آ‬ ‫شهيء‬ ‫ول‬ ‫ما‬‫دائ‬ ‫سه‬‫نف‬ ‫ثل‬‫يم‬)constant(‫لن‬
‫تتغيهر‬ ‫أن‬ ‫يمكهن‬ ‫ل‬ ‫قيمتهه‬.‫حرفيهة‬ ‫ثهوابت‬ ‫بأنهها‬ ‫إليهها‬ ‫يشهار‬ ‫كلهها‬ ‫فههذه‬ ،‫لهذلك‬)lliteral
constants.(
‫العـــداد‬
‫ا‬) ‫هحيحة‬‫ه‬‫ص‬ ‫هداد‬‫ه‬‫أع‬ -:‫هواع‬‫ه‬‫أن‬ ‫هة‬‫ه‬‫أربع‬ ‫هون‬‫ه‬‫بيث‬ ‫هي‬‫ه‬‫ف‬ ‫هداد‬‫ه‬‫لع‬integers‫هة‬‫ه‬‫طويل‬ ‫هحيحة‬‫ه‬‫ص‬ ‫هداد‬‫ه‬‫أع‬ ،(
)long integers) ‫عشهههرية‬ ‫وكسهههور‬ ،(floating point‫مركّبهههة‬ ‫وأعهههداد‬ (
)complex numbers.(
‫مثل‬ ‫الصحيحة‬ ‫العداد‬2.‫فقط‬ ‫صحيح‬ ‫عدد‬ ‫هي‬ ‫التي‬
‫للفهرس‬ ‫عودة‬‫العـــداد‬|25
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫أكبر‬ ‫ولكنها‬ ‫الصحيحة‬ ‫العداد‬ ‫مثل‬ ‫الطويلة‬ ‫الصحيحة‬ ‫العداد‬
) ‫العشهرية‬ ‫الكسهور‬floating point‫أو‬ (‫العشهرية‬‫مثهل‬ ،‫اختصهارا‬3.23‫و‬52.3E-4.
‫الرمز‬E‫أس‬ ‫يعني‬10‫الحالة‬ ‫هذه‬ ‫في‬ .52.3E-4‫تساوي‬52.3*10-4
.
‫مثل‬ ‫المركّبة‬ ‫العداد‬-)5+4j(‫و‬)2.3-4.6j(
‫السـلسـل‬
‫ا‬) ‫لسلسلة‬string‫هي‬ (‫تتابع‬‫من‬‫المحارف‬.‫الكلمات‬ ‫من‬ ‫مجموعة‬ ‫مجرد‬ ‫ببساطة‬ ‫السلسل‬ .
‫لهذلك‬ ،‫تكتبهها‬ ‫الهتي‬ ‫بيثهون‬ ‫برامهج‬ ‫كهل‬ ‫فهي‬ ‫تقريبها‬ ‫السلسهل‬ ‫ستسهتخدم‬ ‫أنهك‬ ‫لهك‬ ‫أضهمن‬ ‫اد‬‫ه‬‫أك‬
:‫بيثون‬ ‫في‬ ‫السلسل‬ ‫استخدام‬ ‫كيفية‬ ‫وإليك‬ .‫التالي‬ ‫الجزء‬ ‫إلى‬ ‫النتباه‬ ‫عليك‬
•) ‫المفردة‬ ‫التنصيص‬ ‫علمات‬ ‫استخدام‬'(
‫مثهل‬ ‫تنصهيص‬ ‫علمهتي‬ ‫بيهن‬ ‫بوضهعها‬ ‫سلسهلة‬ ‫تحديهد‬ ‫يمكنهك‬'‫جملهة‬ ‫'ههذه‬‫مثهل‬ ‫الفراغهات‬ ‫جميهع‬
.‫هي‬ ‫كما‬ ‫تبقى‬ ‫التبويب‬ ‫وعلمات‬ ‫المسافات‬
) ‫المزدوجة‬ ‫التنصيص‬ ‫علمات‬ ‫استخدام‬"(
‫مثل‬ .‫المفردة‬ ‫التنصيص‬ ‫علمات‬ ‫في‬ ‫كما‬ ‫تماما‬ ‫تعمل‬ ‫المزدوجة‬ ‫التنصيص‬ ‫علمات‬ ‫ضمن‬ ‫الجمل‬
"What's your name"?
•) ‫الثلثية‬ ‫التنصيص‬ ‫علمة‬ ‫استخدام‬'''‫أو‬"""(
‫استخدام‬ ‫ويمكنك‬ .‫الثلثية‬ ‫التنصيص‬ ‫علمات‬ ‫باستخدام‬ ‫السطر‬ ‫متعددة‬ ‫سلسل‬ ‫تحديد‬ ‫يمكنك‬
‫مثل‬ .‫الثلثية‬ ‫التنصيص‬ ‫علمة‬ ‫ضمن‬ ‫بحرية‬ ‫والمزدوجة‬ ‫المفردة‬ ‫التنصيص‬ ‫علمة‬
'''This is a multi-line string. This is the first line.
This is the second line.
"What's your name?," I asked.
He said "Bond, James Bond."
'''
) ‫الخلوص‬ ‫تتابعات‬Escape Sequences(
) ‫ية‬‫فرد‬ ‫صيص‬‫تن‬ ‫مة‬‫عل‬ ‫لى‬‫ع‬ ‫توي‬‫تح‬ ‫سلة‬‫سل‬ ‫يد‬‫تر‬ ‫نك‬‫أ‬ ‫فترض‬‫ا‬'‫سلة؟‬‫السل‬ ‫هذه‬ ‫حدد‬‫ت‬ ‫يف‬‫ك‬ ،(
‫مثل‬What's your name?‫اسهتخدام‬ ‫يمكنهك‬ ‫ل‬ .'What's your name'?‫ههذا‬ ‫لهن‬
‫التنصهيص‬ ‫علمهة‬ ‫تجعهل‬ ‫أن‬ ‫عليهك‬ ‫سهيتعين‬ ‫لهذا‬ .‫ومنتهاهها‬ ‫الجملهة‬ ‫مبهدأ‬ ‫حهول‬ ‫بيثهون‬ ‫سهيربك‬
‫القتباس‬ ‫علمة‬ ‫عند‬ ‫انتهت‬ ‫الجملة‬ ‫أن‬ ‫بيثون‬ ‫تعتقد‬ ‫)لئل‬ ‫النص‬ ‫نهاية‬ ‫إلى‬ ‫تشير‬ ‫ل‬ ‫هذه‬ ‫المفردة‬
‫للفهرس‬ ‫عودة‬‫الخلوص‬ ‫تتابعات‬)Escape
Sequences(|26
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫يسمى‬ ‫ما‬ ‫بمساعدة‬ ‫ذلك‬ ‫إنجاز‬ ‫يمكن‬ .(‫الولى‬‫الخلوص‬ ‫تتابع‬)escape sequence‫اجعل‬ .(
‫هكذا‬ ‫المفردة‬ ‫القتباس‬ ‫علمة‬') ‫الخلفية‬ ‫الشرطة‬ ‫-لحظ‬backslash‫تحديد‬ ‫يمكنك‬ ،‫اﻵن‬ -(
‫هكذا‬ ‫مفردة‬ ‫اقتباس‬ ‫بعلمة‬ ‫النصية‬ ‫الجملة‬'What's your name'?.
‫باستخدام‬ ‫السلسلة‬ ‫هذه‬ ‫لتحديد‬ ‫أخرى‬ ‫طريقة‬ ‫هناك‬"What's your name"?‫باستخدام‬ ‫أي‬
‫علمهة‬ ‫اسهتخدام‬ ‫أجهل‬ ‫مهن‬ ‫خلهوص‬ ‫تتهابع‬ ‫اسهتخدام‬ ‫عليهك‬ ،‫وبالمثهل‬ .‫مزدوجهة‬ ‫تنصهيص‬ ‫علمهة‬
‫تحديهد‬ ‫عليهك‬ ،‫كهذلك‬ .‫مزدوجهة‬ ‫تنصهيص‬ ‫بعلمهة‬ ‫محاطهة‬ ‫جملهة‬ ‫داخهل‬ ‫المزدوجهة‬ ‫التنصهيص‬
‫الخلوص‬ ‫تتابع‬ ‫باستخدام‬ ‫ذاتها‬ ‫الخلفية‬ ‫المائلة‬ ‫الشرطة‬.
‫ا‬‫ه‬‫كم‬ ‫ثلثيهة‬ ‫تنصهيص‬ ‫علمهة‬ ‫اسهتخدام‬ ‫إمها‬ ‫يمكنهك‬ ‫سهطرين؟‬ ‫مهن‬ ‫سلسهلة‬ ‫اسهتخدام‬ ‫أردت‬ ‫لهو‬ ‫اذا‬‫ه‬‫م‬
‫بكتابة‬ ‫الجديد‬ ‫السطر‬ ‫لمحرف‬ ‫خلوص‬ ‫تتابع‬ ‫استخدام‬ ‫يمكنك‬ ‫أو‬ ‫سابقا‬ ‫ذُكر‬n‫بدء‬ ‫إلى‬ ‫لتشير‬
‫ههذا‬ ‫علهى‬ ‫ال‬‫ه‬‫مث‬ .‫جديهد‬ ‫سهطر‬This is the first linenThis is the second line.
‫التبويب‬ ‫علمة‬ ‫آخر؛‬ ‫مفيد‬ ‫خلوص‬ ‫تتابع‬t‫هنا‬ ‫ذكرت‬ ‫ولكني‬ ‫الخلوص‬ ‫تتابعات‬ ‫من‬ ‫العديد‬ ‫هناك‬ .
.‫فقط‬ ‫منفعة‬ ‫أكثرها‬
‫أن‬ ‫لى‬‫إ‬ ‫تشير‬ ‫سطر‬‫ال‬ ‫ية‬‫نها‬ ‫في‬ ‫ية‬‫الخلف‬ ‫شرطة‬‫ال‬ ‫أن‬ ‫هو‬ ،‫السلسل‬ ‫في‬ ‫ته‬‫ملحظ‬ ‫نا‬‫علي‬ ‫آخر‬ ‫شيء‬
،‫فمثل‬ .‫جديد‬ ‫سطر‬ ‫إضافة‬ ‫بدون‬ ‫ولكن‬ ،‫المقبل‬ ‫السطر‬ ‫في‬ ‫مستمرة‬ ‫السلسة‬
"This is the first sentence.
This is the second sentence."
‫نفسه‬ ‫هو‬"This is the first sentence. This is the second sentence."
‫الغفل‬ ‫السلسل‬
‫تتابعات‬ ‫مثل‬ ‫خاصة‬ ‫معالجة‬ ‫أي‬ ‫عليها‬ ‫يجري‬ ‫أن‬ ‫تريد‬ ‫ل‬ ‫سلسل‬ ‫تحديد‬ ‫إلى‬ ‫حاجة‬ ‫في‬ ‫كنت‬ ‫إذا‬
‫سلسلة‬ ‫تحديد‬ ‫فعليك‬ ،‫الخلوص‬‫غفل‬)Raw String‫الحرف‬ ‫بتقديم‬ (r‫أو‬R‫السلسلة‬ ‫قبل‬
‫مثل‬r"Newlines are indicated by n".
‫يونيكود‬ ‫سلسل‬
‫القومية‬ ‫بلغتك‬ ‫نص‬ ‫كتابة‬ ‫أردت‬ ‫فإذا‬ .‫العالمية‬ ‫النصوص‬ ‫لكتابة‬ ‫معيارية‬ ‫طريقة‬ ‫هي‬ ‫يونيكود‬
‫بيثون‬ ‫فإن‬ ،‫وبالمثل‬ .‫يونيكود‬ ‫يدعم‬ ‫نصوص‬ ‫محرر‬ ‫إلى‬ ‫فستحتاج‬ ،‫الهندية‬ ‫أو‬ ‫العربية‬ ‫اللغة‬ ‫مثل‬
‫البادئة‬ ‫إضافة‬ ‫هو‬ ‫فعله‬ ‫عليك‬ ‫ما‬ ‫كل‬ ،‫يونيكود‬ ‫نصوص‬ ‫مع‬ ‫التعامل‬ ‫لك‬ ‫تتيح‬u‫أو‬U‫قبل‬
،‫المثال‬ ‫سبيل‬ ‫على‬ .‫النص‬u"This is a Unicode string" ..
‫تحتوي‬ ‫التي‬ ‫تلك‬ ‫وخاصة‬ ،‫النصية‬ ‫الملفات‬ ‫مع‬ ‫التعامل‬ ‫تريد‬ ‫عندما‬ ‫يونيكود‬ ‫تستخدم‬ ‫أن‬ ‫تذكر‬
.‫النجليزية‬ ‫غير‬ ‫بلغة‬ ‫نصوصا‬
‫للفهرس‬ ‫عودة‬‫الخلوص‬ ‫تتابعات‬)Escape
Sequences(|27
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫ثابتة‬ ‫السلسل‬
‫أنه‬ ‫إل‬ ،‫سيئا‬ ‫أمرا‬ ‫يبدو‬ ‫قد‬ ‫هذا‬ ‫أن‬ ‫ورغم‬ .‫تغييرها‬ ‫يمكنك‬ ‫ل‬ ‫السلسلة‬ ‫إنشاء‬ ‫بعد‬ ‫أنه‬ ‫يعني‬ ‫وهذا‬
‫وقت‬ ‫في‬ ‫سنراها‬ ‫التي‬ ‫البرامج‬ ‫مختلف‬ ‫في‬ ‫قيدا‬ ‫هذا‬ ‫ليس‬ ‫لم‬ ‫سنرى‬ .‫الحقيقة‬ ‫في‬ ‫كذلك‬ ‫ليس‬
.‫لحق‬
‫السلسل‬ ‫نصوص‬ ‫تجميع‬
،‫المثال‬ ‫سبيل‬ ‫على‬ .‫بجمعهما‬ ‫تلقائيا‬ ‫بيثون‬ ‫فستقوم‬ ،‫جنب‬ ‫إلى‬ ‫جنبا‬ ‫سلسلتين‬ ‫وضعت‬ ‫كنت‬ ‫إذا‬'
What's' 'your name'?‫إلى‬ ‫تلقائيا‬ ‫تُحول‬"What's your name"?.
++‫سي/سي‬ ‫لمبرمجي‬ ‫ملحظة‬
) ‫للمحارف‬ ‫منفصل‬ ‫بيانات‬ ‫نوع‬ ‫يوجد‬ ‫ل‬char‫لن‬ ‫أنكم‬ ‫وأعتقد‬ ،‫له‬ ‫حاجة‬ ‫ول‬ .‫بيثون‬ ‫في‬ (
.‫تفتقدوها‬
/‫بيرل‬ ‫لمبرمجي‬ ‫ملحظة‬PHP
‫واحد‬ ‫بمعنى‬ ‫الثلثية‬ ‫أو‬ ‫المزدوجة‬ ‫أو‬ ‫المفردة‬ ‫التنصيص‬ ‫علمات‬ ‫داخل‬ ‫السلسل‬ ‫أن‬ ‫تذكر‬
.‫شكل‬ ‫بأي‬ ‫تختلف‬ ‫ول‬
‫النمطية‬ ‫التعبيرات‬ ‫لمستخدمي‬ ‫ملحظة‬
‫من‬ ‫للكثير‬ ‫فستحتاج‬ ‫وإل‬ .‫النمطية‬ ‫التعابير‬ ‫مع‬ ‫التعامل‬ ‫عند‬ ‫الغفل‬ ‫السلسل‬ ‫استخدام‬ ‫دائما‬
) ‫الخلفية‬ ‫الحالة‬ ،‫المثال‬ ‫سبيل‬ ‫فعلى‬ .‫الخلوص‬ ‫تتابعات‬backreference‫يمكن‬ (
‫باستخدام‬ ‫إليها‬ ‫الشارة‬'1'‫أو‬r'1'.
‫المتغيرات‬
‫لتخزين‬ ‫ما‬ ‫طريقة‬ ‫الى‬ ‫بحاجة‬ ‫ونحن‬ ،‫مملًا‬ ‫أمرا‬ ‫سريعا‬ ‫يصبح‬ ‫أن‬ ‫يمكن‬ ‫فقط‬ ‫الحرفية‬ ‫الثوابت‬ ‫استخدام‬
‫تظهر‬ ‫هنا‬ .‫ومعالجتها‬ ‫المعلومات‬‫المتغيرات‬)Variables‫من‬ ‫يظهر‬ ‫-كما‬ ‫المتغيرات‬ .‫الصورة‬ ‫في‬ (
‫سوى‬ ‫ليست‬ ‫المتغيرات‬ .‫متغير‬ ‫باستخدام‬ ‫شيء‬ ‫أي‬ ‫تخزن‬ ‫أن‬ ‫يمكنك‬ ‫أي‬ ،‫قيمتها‬ ‫تتغير‬ ‫أن‬ ‫يمكن‬ -‫اسمها‬
‫إلى‬ ‫تحتاج‬ ،‫الحرفية‬ ‫الثوابت‬ ‫بعكس‬ .‫المعلومات‬ ‫بعض‬ ‫تخزن‬ ‫حيث‬ ‫الحاسوب‬ ‫ذاكرة‬ ‫من‬ ‫محجوزة‬ ‫أجزاء‬
.‫أسماء‬ ‫نعطيها‬ ‫ولذا‬ ،‫المتغيرات‬ ‫هذه‬ ‫إلى‬ ‫للوصول‬ ‫ما‬ ‫طريقة‬
‫المعرف‬ ‫تسمية‬
‫على‬ ‫أمثلة‬ ‫هي‬ ‫المتغيرات‬‫المعرفات‬)Identifiers‫لتعريف‬ ‫تعطى‬ ‫أسماء‬ ‫هي‬ ‫المعرفات‬ ،(‫ما‬ ‫شيء‬.
:‫المعرفات‬ ‫لتسمية‬ ‫اتباعها‬ ‫عليك‬ ‫القواعد‬ ‫بعض‬ ‫هناك‬
‫للفهرس‬ ‫عودة‬‫المعرف‬ ‫تسمية‬|28
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
(‫صغير‬ ‫أو‬ ‫كبير‬ ‫تيني‬ ‫)ل‬ ‫الهجاء‬ ‫حروف‬ ‫من‬ ‫حروفا‬ ‫يكون‬ ‫أن‬ ‫يجب‬ ‫المعرف‬ ‫من‬ ‫الول‬ ‫المحرف‬
،'_') ‫تحتية‬ ‫شرطة‬ ‫أو‬underscore.(
،('_') ‫التحتية‬ ‫الشرطة‬ ‫أو‬ ،(‫صغيرة‬ ‫أو‬ ‫)كبيرة‬ ‫الحروف‬ ‫من‬ ‫تتكون‬ ‫أن‬ ‫يمكن‬ ‫المعرف‬ ‫اسم‬ ‫بقية‬
) ‫الرقام‬ ‫أو‬0-9.(
‫المثال‬ ‫سبيل‬ ‫على‬ (‫صغير‬ ‫أو‬ ‫كبير‬ ‫لتيني‬ ‫)سواء‬ ‫الحرف‬ ‫لحالة‬ ‫حساسة‬ ‫المعرف‬ ‫أسماء‬
myname‫و‬myName‫ل‬‫الصغير‬ ‫الحرف‬ ‫لحظ‬ .‫يتساويان‬n‫والكبير‬ ‫الولى‬ ‫في‬N‫في‬
.‫الثانية‬
‫المعرفات‬ ‫أسماء‬‫الصالحة‬‫مثل‬i‫و‬ ،__my_name‫و‬ ،name_23‫و‬a1b2_c3.
‫المعرفات‬ ‫أسماء‬‫الصالحة‬ ‫غير‬‫مثل‬2things‫و‬ ،this is spaced out‫و‬my-name.
‫البيانات‬ ‫أنواع‬
‫تسمى‬ ‫القيم‬ ‫من‬ ‫مختلفة‬ ‫أنواعا‬ ‫المتغيرات‬ ‫تحمل‬ ‫أن‬ ‫يمكن‬‫البيانات‬ ‫أنواع‬‫العداد‬ ‫هي‬ ‫الساسية‬ ‫النواع‬ .
‫باستخدام‬ ‫بنا‬ ‫خاصة‬ ‫أنواع‬ ‫إنشاء‬ ‫كيفية‬ ‫سنرى‬ ‫القادمة‬ ‫الفصول‬ ‫وفي‬ .‫قبل‬ ‫من‬ ‫ناقشناها‬ ‫التي‬ ،‫والسلسل‬
‫الصناف‬)classes.(
‫الكائنات‬
‫أنهه‬ ‫علهى‬ ‫برنامهج‬ ‫فهي‬ ‫مسهتخدم‬ ‫شهيء‬ ‫أي‬ ‫إلهى‬ ‫تشهير‬ ‫بيثهون‬ ‫أن‬ ‫تهذكر‬‫كهائن‬)object‫وههذا‬ ،(
' ‫قول‬ ‫من‬ ‫فبدل‬ .‫عام‬ ‫وجه‬ ‫على‬ ‫مقصود‬‫الشيء‬' ‫نقول‬ '‫الكائن‬.'
‫الكائنية‬ ‫البرمجة‬ ‫لمستخدمي‬ ‫ملحظة‬
‫أو‬ ‫العداد‬ ‫سواء‬ ،‫كائن‬ ‫عن‬ ‫عبارة‬ ‫شيء‬ ‫كل‬ ‫إن‬ ‫بمعنى‬ ،‫بقوة‬ ‫التوجه‬ ‫كائنية‬ ‫بيثون‬
) ‫الدوال‬ ‫حتى‬ ‫أو‬ ‫النصوص‬functions.(
‫ثم‬ ‫ثم‬ ‫ملف‬ ‫في‬ ‫التالي‬ ‫المثال‬ ‫احفظ‬ .‫الحرفية‬ ‫الثوابت‬ ‫مع‬ ‫المتغيرات‬ ‫نستخدم‬ ‫كيف‬ ‫اﻵن‬ ‫سنرى‬
.‫البرنامج‬ ‫شغل‬
‫بيثون‬ ‫برامج‬ ‫تكتب‬ ‫كيف‬
:‫هي‬ ‫بيثون‬ ‫برامج‬ ‫وتشغيل‬ ‫لحفظ‬ ‫القياسية‬ ‫الخطوات‬ ،‫فصاعدا‬ ‫اﻵن‬ ‫من‬
1..‫المفضل‬ ‫النصوص‬ ‫محرر‬ ‫افتح‬
2..‫المثال‬ ‫في‬ ‫كما‬ ‫البرنامج‬ ‫كود‬ ‫أدخل‬
3.‫في‬ ‫عليها‬ ‫المتعارف‬ ‫الطريقة‬ ُ‫اتبع‬ .‫التعليق‬ ‫في‬ ‫المذكور‬ ‫بالسم‬ ‫الملف‬ ‫احفظ‬
‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫برامج‬ ‫تكتب‬ ‫كيف‬|29
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫بالمتداد‬ ‫بيثون‬ ‫برامج‬ ‫حفظ‬.py.
4.‫)المر‬ ‫البرنامج‬ ‫باسم‬ ‫متبوعا‬ ‫بيثون‬ ‫مفسر‬ ‫غّل‬python program.py‫أو‬ (
‫استخدم‬IDLE‫استخدام‬ ‫ايضا‬ ‫يمكنك‬ .‫البرامج‬ ‫لتشغيل‬‫التنفيذية‬ ‫الملفات‬ ‫طريقة‬
.‫سابقا‬ ‫المذكورة‬
‫مثال‬4.1.‫الحرفية‬ ‫والثوابت‬ ‫المتغيرات‬ ‫استخدام‬
# Filename : var.py
i = 5
print i
i = i + 1
print i
s = '''This is a multi-line string.
This is the second line.'''
print s
‫الخــرْج‬
$ python var.py
5
6
This is a multi-line string.
This is the second line.
‫يعمــل‬ ‫كيـف‬
‫البرنامهج‬ ‫ههذا‬ ‫يعمهل‬ ‫كيهف‬ ‫إليهك‬.‫الحرفيهة‬ ‫الثابتهة‬ ‫القيمهة‬ ‫أسهندنا‬ ‫أول‬5‫المتغيهر‬ ‫إلهى‬i
‫المعامل‬ ‫باستخدام‬)=.(‫إفادة‬ ‫يسمى‬ ‫السطر‬ ‫هذا‬)statement(‫شيئا‬ ‫ويعين‬ ‫يبين‬ ‫لنه‬
‫ير‬‫المتغ‬ ‫اسم‬ ‫ربطنا‬ ،‫هذه‬ ‫حالتنا‬ ‫وفي‬ ،‫به‬ ‫القيام‬ ‫ينبغي‬ ‫ما‬i‫بالقيمه‬5.‫طبعنا‬ ‫ذلك‬ ‫بعد‬
‫قيمة‬i‫جملة‬ ‫باستخدام‬print‫التي‬-‫متوقع‬ ‫هو‬ ‫كما‬-‫الشاشة‬ ‫على‬ ‫المتغير‬ ‫قيمة‬ ‫تطبع‬.
‫أضهفنا‬ ‫ثهم‬1‫المتغيهر‬ ‫فهي‬ ‫المخزنهة‬ ‫القيمهة‬ ‫إلهى‬i‫ثانيهة‬ ‫خزنهاه‬ ‫ثهم‬.‫و‬ ،‫طبعنهاه‬ ‫ثهم‬-‫كمها‬
‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫برامج‬ ‫تكتب‬ ‫كيف‬|30
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫نتوقع‬-‫القيمة‬ ‫على‬ ‫حصلنا‬6.
‫للمتغير‬ ‫حرفية‬ ‫سلسلة‬ ‫أسندنا‬ ،‫وبالمثل‬s‫طبعناه‬ ‫ثم‬.
‫سي‬ ‫لمبرمجي‬ ‫ملحظة‬/‫سي‬++
‫قيمة‬ ‫إلى‬ ‫إسنادها‬ ‫بمجرد‬ ‫المتغيرات‬ ‫تستخدم‬.‫للعلن‬ ‫فلحاجة‬)declaration(‫أو‬
‫البيانات‬ ‫نوع‬ ‫تعريف‬.
‫والمنطقية‬ ‫المادية‬ ‫السطور‬
) ‫المهادي‬ ‫السهطر‬Physical‫مها‬ ‫ههو‬ (‫تهراه‬‫المنطقهي‬ ‫والسهطر‬ .‫البرنامهج‬ ‫تكتهب‬ ‫عنهدما‬
)Logical‫ما‬ ‫هو‬ (‫تراه‬‫كل‬ ‫أن‬ ‫ضمنا‬ ‫فترض‬‫ت‬ ‫ثون‬‫بي‬ .‫حدة‬‫وا‬ ‫فادة‬‫كإ‬ ‫ثون‬‫بي‬ (‫مه‬‫)تفه‬
‫مادي‬ ‫سطر‬‫يقابل‬‫منطقيا‬ ‫سطرا‬.
‫المنطقهي‬ ‫السهطر‬ ‫علهى‬ ‫ال‬‫ه‬‫مث‬ ‫التاليهة‬ ‫الفهادة‬print 'Hello World'‫مكتوبها‬ ‫ان‬‫ه‬‫ك‬ ‫إذا‬ ‫؛‬
.‫مادي‬ ‫سطر‬ ‫أيضا‬ ‫فهذا‬ (‫المحرر‬ ‫في‬ ‫تراه‬ ‫)كما‬ ‫وحده‬ ‫سطر‬ ‫على‬
.‫أكثر‬ ‫مقروءا‬ ‫الكود‬ ‫يجعل‬ ‫مما‬ ‫سطر‬ ‫لكل‬ ‫واحد‬ ‫إفادة‬ ‫استعمال‬ ‫على‬ ‫بيثون‬ ‫تشجع‬
‫ههذا‬ ‫تحديهد‬ ‫فعليهك‬ ‫واحهد‬ ‫مهادي‬ ‫سهطر‬ ‫علهى‬ ‫منطقهي‬ ‫سهطر‬ ‫مهن‬ ‫أكهثر‬ ‫تحهدد‬ ‫أن‬ ‫أردت‬ ‫إذا‬
) ‫المنقوطهة‬ ‫الفاصهلة‬ ‫باسهتخدام‬ ‫صهراحة‬;‫أو‬ ‫المنطقهي‬ ‫السهطر‬ ‫نهايهة‬ ‫إلهى‬ ‫تشهير‬ ‫حيهث‬ (
:‫المثال‬ ‫سبيل‬ ‫على‬ .‫الفادة‬
i = 5
print i
: ‫عن‬ ‫يختلف‬ ‫ل‬ ‫عمليا‬
i = 5;
print i;
: ‫هكذا‬ ‫يكتب‬ ‫أن‬ ‫ويمكن‬
i = 5; print i;
: ‫حتى‬ ‫أو‬
i = 5; print i
‫فإنني‬ ،‫ذلك‬ ‫ومع‬‫بقوة‬ ‫أوصي‬‫تلتزم‬ ‫أن‬‫كل‬ ‫في‬ ‫فقط‬ ‫واحد‬ ‫منطقي‬ ‫سطر‬ ‫كتابة‬
‫حد‬ ‫وا‬ ‫مادي‬ ‫سطر‬‫السطر‬ ‫كان‬ ‫إذا‬ ‫منطقي‬ ‫سطر‬ ‫لكل‬ ‫مادي‬ ‫سطر‬ ‫من‬ ‫أكثر‬ ‫استخدم‬ .
‫يعنهي‬ ‫ههذا‬ ‫لهن‬ ‫ان‬‫ه‬‫المك‬ ‫قهدر‬ ‫المنقوطهة‬ ‫الفاصهلة‬ ‫تجنهب‬ ‫ههي‬ ‫الفكهرة‬ .‫ا‬‫ه‬‫حق‬ ‫طهويل‬ ‫المنطقهي‬
‫للفهرس‬ ‫عودة‬‫والمنطقية‬ ‫المادية‬ ‫السطور‬|31
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫أستخدم‬ ‫لم‬ ‫أنا‬ ،‫الحقيقة‬ ‫في‬ .‫قراءة‬ ‫أسهل‬ ‫كودا‬‫أبدا‬‫في‬ ‫المنقوطه‬ ‫الفاصله‬ ‫أرى‬ ‫حتى‬ ‫أو‬
.‫بيثون‬ ‫برنامج‬
‫هذا‬ ‫سمى‬ .‫مادية‬ ‫أسطر‬ ‫عدة‬ ‫عبر‬ ‫يمتد‬ ‫منطقي‬ ‫سطر‬ ‫كتابة‬ ‫على‬ ‫مثال‬ ‫يلي‬ ‫فيما‬‫صل‬‫الو‬
‫للسطر‬ ‫العمدي‬)Explicit line joining.(
s = 'This is a string. 
This continues the string.'
print s
‫الناتج‬ ‫تعطينا‬ ‫وهذه‬
This is a string. This continues the string.
:‫وبالمثل‬
print 
i
‫مثل‬ ‫بالضبط‬ ‫هي‬
print i
‫أ‬‫المائلة‬ ‫العكسية‬ ‫الشرطة‬ ‫استخدام‬ ‫الى‬ ‫تحتاج‬ ‫ل‬ ‫بحيث‬ ‫ضمني‬ ‫افتراض‬ ‫هناك‬ ‫يكون‬ ‫حيانا‬
)backslash‫أو‬ ‫الهللية‬ ‫القواس‬ ‫المنطقي‬ ‫السطر‬ ‫يستخدم‬ ‫عندما‬ ‫الحال‬ ‫هو‬ ‫وهذا‬ .(
‫يسمى‬ ‫وهذا‬ .‫المجعدة‬ ‫أو‬ ‫المربعة‬‫للسطر‬ ‫الضمني‬ ‫الوصل‬‫هذا‬ ‫ترى‬ ‫أن‬ ‫يمكنك‬ .
.‫القادمة‬ ‫الفصول‬ ‫في‬ ‫القوائم‬ ‫مستخدمين‬ ‫برامج‬ ‫نكتب‬ ‫عندما‬ ‫يعمل‬
‫الزاحههة‬
‫وخاصة‬ ‫بيثون‬ ‫في‬ ‫مهمة‬ ‫البيضاء‬ ‫الفراغات‬‫السطر‬ ‫بداية‬ ‫في‬‫يسمى‬ ‫ما‬ ‫هذا‬ .‫الزاحة‬)
Indentation‫السطور‬ ‫بداية‬ ‫في‬ (‫التبويب‬ ‫وعلمات‬ ‫)المسافات‬ ‫البيضاء‬ ‫الفراغات‬ .(
‫لتحديد‬ ‫يستخدم‬ ‫بدوره‬ ‫والذي‬ ،‫المنطقي‬ ‫السطر‬ ‫إزاحة‬ ‫مستوى‬ ‫لتحديد‬ ‫تستخدم‬ ‫المنطقية‬
) ‫الفادات‬ ‫من‬ ‫تجميع‬Statements.(
‫ببعضها‬ ‫المرتبطة‬ ‫الفادات‬ ‫أن‬ ‫يعني‬ ‫وهذا‬‫يجب‬‫مجموعة‬ ‫كل‬ .‫الزاحة‬ ‫نفس‬ ‫لها‬ ‫يكون‬ ‫أن‬
‫تسمى‬ ‫التصريحات‬ ‫هذه‬ ‫من‬‫لبنة‬)block‫في‬ ‫اللبنات‬ ‫أهمية‬ ‫مدى‬ ‫على‬ ‫أمثلة‬ ‫وسنرى‬ .(
‫للفهرس‬ ‫عودة‬‫والمنطقية‬ ‫المادية‬ ‫السطور‬|32
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫اللحقة‬ ‫الفصول‬
‫فعلى‬ .‫أخطاء‬ ‫إلى‬ ‫تؤدي‬ ‫أن‬ ‫يمكن‬ ‫الخاطئة‬ ‫الزاحة‬ ‫أن‬ ‫وهو‬ ‫تتذكره‬ ‫أن‬ ‫عليك‬ ‫واحد‬ ‫أمر‬
:‫المثال‬ ‫سبيل‬
i = 5
print 'Value is', i # Error! Notice a single space at the
start of the line
print 'I repeat, the value is', i
:‫الخطأ‬ ‫هذا‬ ‫يعطيك‬ ‫تشغيله‬ ‫عند‬
File "whitespace.py", line 4
print 'Value is', i # Error! Notice a single space at
the start of the line
^
SyntaxError: invalid syntax
‫بيثهون‬ ‫إليهه‬ ‫أشهارت‬ ‫الهذي‬ ‫الخطهأ‬ .‫الثهاني‬ ‫السهطر‬ ‫بدايهة‬ ‫فهي‬ ‫واحهدة‬ ‫فارغهة‬ ‫مسهافة‬ ‫ثمهة‬ ‫أن‬ ‫لحهظ‬
) ‫النحوي‬ ‫التركيب‬ ‫أن‬ ‫يخبرنا‬syntax‫على‬ ‫مكتوب‬ ‫غير‬ ‫البرنامج‬ ‫أن‬ ‫أي‬ ،‫خطأ‬ ‫البرنامج‬ ‫لهذا‬ (
‫أنك‬ ‫هذا‬ ‫نى‬‫مع‬ .‫الصحيح‬ ‫الوجه‬‫جديدة‬ ‫إفادات‬ ‫لبنة‬ ‫بدء‬ ‫تستطيع‬ ‫ل‬‫)باستثناء‬ ‫اعتباطية‬ ‫بصورة‬
‫اللبنات‬ ‫استخدام‬ ‫فيها‬ ‫يمكنك‬ ‫التي‬ ‫الحالت‬ .(‫الحال‬ ‫بطبيعة‬ ،‫دائما‬ ‫تستخدمها‬ ‫التي‬ ‫الرئيسية‬ ‫اللبنة‬
.‫التدفق‬ ‫في‬ ‫التحكم‬ ‫فصل‬ ‫مثل‬ ‫لحقة‬ ‫فصول‬ ‫في‬ ‫تفصيلها‬ ‫سيتم‬ ‫الجديدة‬
‫الزاحة‬ ‫كيفية‬
‫ل‬‫عبر‬ ‫الصحيح‬ ‫النحو‬ ‫على‬ ‫تعمل‬ ‫ل‬ ‫لنها‬ ‫للزاحة‬ ‫التبويب‬ ‫وعلمات‬ ‫المسافات‬ ‫من‬ ‫خليطا‬ ‫تستخدم‬
‫و‬ .‫المنصهات‬ ‫مختلهف‬‫بشهدة‬ ‫أوصهي‬‫تسهتخدم‬ ‫أن‬‫واحهدة‬ ‫تبهويب‬ ‫علمهة‬‫أو‬‫أربهع‬ ‫أو‬ ‫مسهافتين‬‫لكهل‬
.‫إزاحة‬ ‫مستوى‬
‫وتسهتخدمها‬ ‫واحهدة‬ ‫ار‬‫ه‬‫تخت‬ ‫أن‬ ‫الههم‬ .‫هذه‬ ‫الزاحهة‬ ‫اليب‬‫ه‬‫أس‬ ‫مهن‬ ‫ا‬‫ه‬‫أي‬ ‫اخهتر‬‫ضباط‬ ‫بان‬‫اسهتخدم‬ ‫أي‬ ،
‫هذا‬ ‫الزاحة‬ ‫أسلوب‬‫فقط‬.
‫الخلصة‬
‫مثل‬ ‫متعة‬ ‫أكثر‬ ‫أشياء‬ ‫إلى‬ ‫النتقال‬ ‫يمكننا‬ ،‫الدقيقة‬ ‫التفاصيل‬ ‫من‬ ‫كثير‬ ‫على‬ ‫مررنا‬ ‫أن‬ ‫بعد‬ ‫اﻵن‬
.‫الفصل‬ ‫هذا‬ ‫في‬ ‫قرأته‬ ‫ما‬ ‫على‬ ‫تعتاد‬ ‫أن‬ ‫من‬ ‫تأكد‬ .‫الفادات‬ ‫تدفق‬ ‫في‬ ‫التحكم‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|33
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫فصل‬5‫والتعبيرات‬ ‫العوامل‬ .
‫المحتويات‬ ‫قائمة‬
‫مقدمة‬
‫العوامل‬
‫العوامل‬ ‫أسبقية‬
‫الحساب‬ ‫ترتيب‬
‫الرتباطية‬
‫التعبيرات‬
‫التعبيرات‬ ‫استخدام‬
‫الخلصة‬
‫مقدمـــة‬
‫الفهادات‬ ‫أغلهب‬)statements) (‫المنطقيهة‬ ‫السهطور‬(‫علهى‬ ‫تحتهوي‬ ‫سهتكتبها‬ ‫الهتي‬‫تعهبيرات‬
)expressions). 2 + 3‫التعبيرات‬ ‫أحد‬ ‫على‬ ‫بسيط‬ ‫مثال‬.
‫ومعاملت‬ ‫عوامل‬ ‫إلى‬ ‫التعبيرات‬ ‫تنقسم‬:
‫العوامل‬)operators(‫مثل‬ ‫برمز‬ ‫تمثيلها‬ ‫ويمكن‬ ‫ما‬ ‫شيء‬ ‫بعمل‬ ‫تقوم‬ ‫وظيفة‬ ‫هي‬+‫كلمة‬ ‫أو‬
‫خاصة‬ ‫مفتاحية‬.‫هذه‬ ‫وتسمى‬ ‫عليها‬ ‫تعمل‬ ‫لبيانات‬ ‫العوامل‬ ‫تحتاج‬‫المعاملت‬)operands.(‫ففي‬
‫تعتبر‬ ‫الحالة‬ ‫هذه‬2‫و‬3‫معاملت‬.
‫العوامل‬
.‫واستخداماتها‬ ‫العوامل‬ ‫على‬ ‫سريعة‬ ‫نظرة‬ ‫سنأخذ‬
‫مفيدة‬ ‫فكرة‬
‫التعبير‬ ‫لختبار‬ ‫مثل‬ .‫تفاعليا‬ ‫المفسر‬ ‫باستخدام‬ ‫السابق‬ ‫المثال‬ ‫في‬ ‫المعطى‬ ‫التعبير‬ ‫حساب‬ ‫يمكنك‬
2+3:‫التفاعلي‬ ‫بيثون‬ ‫مفسر‬ ‫مؤشر‬ ‫استخدم‬
>>> 2 + 3
5
>>> 3 * 5
15
>>>
‫للفهرس‬ ‫عودة‬‫العوامل‬|34
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫جدول‬5.1.‫واستخداماتها‬ ‫الرياضية‬ ‫العوامل‬
‫العامل‬‫السم‬‫الشرح‬‫أمثلة‬
+‫زائد‬‫عنصرين‬ ‫يجمع‬3+5‫تعطي‬8.'a' + 'b'‫تعطي‬'ab'.
-‫ناقص‬
‫عددا‬ ‫يطرح‬ ‫أو‬ ،‫سالبا‬ ‫عددا‬ ‫يعطي‬ ‫إما‬
‫آخر‬ ‫من‬
-5.2.‫سالبا‬ ‫عددا‬ ‫تعطي‬50-24‫تعطي‬26.
*‫ضرب‬
‫تعيد‬ ‫أو‬ ‫عددين‬ ‫ضرب‬ ‫حاصل‬ ‫تعطي‬
.‫المرات‬ ‫من‬ ‫العدد‬ ‫هذا‬ ‫مكررة‬ ‫سلسلة‬
2*3‫تعطي‬6.'la' * 3‫تعطي‬'lalala'.
**‫أُس‬‫ص‬ ‫أُس‬ ‫س‬ ‫تعيد‬3**4‫تعطي‬81‫)أي‬3*3*3*3(
/‫قسمة‬‫ص‬ ‫على‬ ‫س‬ ‫اقسم‬
4/3‫تعطي‬1‫عدد‬ ‫الصحيحة‬ ‫العداد‬ ‫قسمة‬ ‫)ناتج‬
.(‫صحيح‬4.0/3‫أو‬4/3.0‫تعطي‬1.
3333333333333333
//
Floor
Division
Returns the floor of the
quotient
4//3.0‫تعطي‬1.0
%Modulo‫القسمة‬ ‫عملية‬ ‫باقي‬ ‫يعيد‬8%3‫تعطي‬2.-25.5%2.25‫تعطي‬1.5.
>>
‫إزاحة‬
‫لليسار‬
‫البتات‬ ‫بعدد‬ ‫لليسار‬ ‫العدد‬ ‫بتات‬ ‫تزيح‬
‫الذاكرة‬ ‫في‬ ‫يمثل‬ ‫عدد‬ ‫)كل‬ .‫المحدد‬
‫ثنائية؛‬ ‫أرقام‬ ‫أو‬ ‫ببتات‬0‫و‬1(
2>>2‫تعطي‬8- .2‫تمثل‬10‫الزاحة‬ .‫ثنائيا‬
‫ب‬ ‫لليسار‬2‫تعطي‬ ‫بتات‬1000‫العدد‬ ‫تمثل‬ ‫والتي‬
‫العشري‬8.
<<
‫إزاحة‬
‫لليمين‬
‫البتات‬ ‫بعدد‬ ‫لليمين‬ ‫العدد‬ ‫بتات‬ ‫تزيح‬
.‫المحدد‬
11<<1‫تعطي‬5.11‫ب‬ ‫تمثل‬1011،‫ثنائيا‬
‫تعطي‬ ‫والتي‬101،‫لليمين‬ ‫واحدة‬ ‫بتة‬ ‫إزاحتها‬ ‫عند‬
‫يساوي‬ ‫ما‬ ‫وهو‬5.‫عشريا‬
&‫بتّية‬ "‫"و‬‫للعداد‬ ‫بتّية‬ "‫"و‬53‫تعطي‬1.
|‫بتّية‬ "‫"أو‬‫للعداد‬ ‫بتّية‬ "‫"أو‬5|3‫تعطي‬7
^
Bit-wise
XOR
5^3‫تعطي‬6
~
"‫"معكوس‬
‫بتّية‬
+‫-)س‬ ‫هو‬ ‫س‬ ‫ل‬ ‫البتّي‬ ‫المعكوس‬1(~5‫تعطي‬-6.
>‫من‬ ‫أقل‬
.‫ص‬ ‫من‬ ‫أصغر‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬
‫تعيد‬ ‫المقارنة‬ ‫عوامل‬ ‫كل‬1‫للصحيح‬
‫و‬0‫المتغيرات‬ ‫هذا‬ ‫يساوي‬ .‫للخطأ‬
‫الخاصة‬‫صحيح‬‫و‬‫خطأ‬.‫بالترتيب‬
‫أسماء‬ ‫في‬ ‫الكبيرة‬ ‫الحروف‬ ‫لحظ‬
.‫المتغيرات‬ ‫هذه‬
5>3‫تعطي‬0‫)أي‬‫خطأ‬‫و‬ (3>5‫تعطي‬1
‫)أي‬‫صحيح‬:‫المقارنة‬ ‫سلسلة‬ ‫يمكن‬ .(3>5>7
‫تعطي‬‫صحيح‬.
<‫من‬ ‫أكبر‬‫ص‬ ‫من‬ ‫أكبر‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬5>3‫تعيد‬‫صحيح‬‫أعداد‬ ‫المعاملين‬ ‫كل‬ ‫كان‬ ‫إذا‬ .
‫للفهرس‬ ‫عودة‬‫العوامل‬|35
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫العامل‬‫السم‬‫الشرح‬‫أمثلة‬
‫فإنه‬ ‫وإل‬ .‫مشترك‬ ‫نوع‬ ‫إلى‬ ‫أول‬ ‫تحويلهما‬ ‫فيتم‬
‫دائما‬ ‫يعيد‬‫خطأ‬.
=>
‫أو‬ ‫من‬ ‫أقل‬
‫يساوي‬
‫أو‬ ‫من‬ ‫أقل‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬
‫ص‬ ‫تساوي‬
x = 3; y = 6; x <= y‫تعيد‬‫صحيح‬.
=<
‫من‬ ‫أكبر‬
‫يساوي‬ ‫أو‬
‫أو‬ ‫من‬ ‫أكبر‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬
‫ص‬ ‫تساوي‬
x = 4; y = 3; x >= 3‫تعيد‬‫صحيح‬.
==‫يساوي‬‫يتساويان‬ ‫الكائنين‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫تقارن‬
x = 2; y = 2; x == y‫تعيد‬‫صحيح‬.x =
'str'; y = 'stR'; x == y‫تعيد‬‫خطأ‬.x =
'str'; y = 'str'; x == y‫تعيد‬‫صحيح‬.
=!‫يساوي‬ ‫ل‬
‫ل‬ ‫الكائنين‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫تقارن‬
‫يتساويان‬
x = 2; y = 3; x != y‫تعيد‬‫صحيح‬.
not
"‫"ليس‬
‫منطقية‬
‫س‬ ‫كانت‬ ‫إذا‬‫صحيح‬‫تعيد‬ ،‫خطأ‬‫إذا‬ .
‫س‬ ‫كانت‬‫خطأ‬‫تعيد‬ ،‫صحيح‬.
x = True; not y‫تعيد‬‫خطأ‬.
and
"‫"و‬
‫منطقية‬
x and y‫تعيد‬‫خطأ‬‫كانت‬ ‫إذا‬x
‫خطأ‬‫تعيد‬ ‫فإنها‬ ‫وإل‬ ،y
x = False; y = True; x and y‫تعيد‬‫خطأ‬
‫لن‬x‫قيمة‬ ‫بيثون‬ ‫تعيد‬ ‫لن‬ ‫الحالة‬ ‫هذه‬ ‫في‬ .‫خطأ‬y
‫)لن‬ ‫خطأ‬ ‫ستكون‬ ‫التعبير‬ ‫قيمة‬ ‫أن‬ ‫تعرف‬ ‫لنها‬x
.‫المختصر‬ ‫التقييم‬ ‫هذا‬ ‫يسمى‬ .(‫خطأ‬
or
"‫"أو‬
‫منطقية‬
‫كانت‬ ‫إذا‬x‫صحيح‬‫صحيح‬ ‫تعيد‬ ‫فإنها‬
‫قيمة‬ ‫تعيد‬ ‫فإنها‬ ‫وإل‬y.
x = True; y = False; x or y‫تعيد‬‫صحيح‬.
.‫أيضا‬ ‫هنا‬ ‫ينطبق‬ ‫المختصر‬ ‫التقييم‬
‫العوامل‬ ‫أسبقية‬
‫مثهل‬ ‫حسهابية‬ ‫عمليهة‬ ‫لهديك‬ ‫ان‬‫ه‬‫ك‬ ‫إذا‬2+3*4‫رياضهيات‬ ‫؟‬ ‫الضهرب‬ ‫أم‬ ‫أول‬ ‫الجمهع‬ ‫سهيتم‬ ‫ههل‬
‫الضهرب‬ ‫لعمليهة‬ ‫أن‬ ‫ههذا‬ ‫يعنهي‬ ‫أول؛‬ ‫إجراؤهها‬ ‫يجهب‬ ‫الضهرب‬ ‫عمليهة‬ ‫أن‬ ‫تخبرنها‬ ‫الثانويهة‬ ‫المدرسهة‬
.‫الجمع‬ ‫عملية‬ ‫على‬ ‫أسبقية‬
‫إلى‬ (‫إلزاما‬ ‫)أقل‬ ‫الدنى‬ ‫بالسبقية‬ ‫بدءا‬ ‫بيثون‬ ‫في‬ ‫العوامل‬ ‫بأسبقية‬ ‫بيان‬ ‫يعطينا‬ ‫التالي‬ ‫الجدول‬
‫سهتقوم‬ ‫بيثهون‬ ‫فهإن‬ ‫المعطهاة‬ ‫التعهبيرات‬ ‫بهداخل‬ ‫أنهه‬ ‫ههذا‬ ‫معنهى‬ .(‫إلزامها‬ ‫)أكهثر‬ ‫الهعلى‬ ‫السهبقية‬
.‫الجدول‬ ‫في‬ ‫العلى‬ ‫العوامل‬ ‫قبل‬ ‫الجدول‬ ‫في‬ ‫الدنى‬ ‫العوامل‬ ‫قيمة‬ ‫بحساب‬
،‫هذا‬ ‫ومع‬ .‫العلم‬ ‫زيادة‬ ‫باب‬ ‫من‬ ‫موجود‬ (‫بيثون‬ ‫مرجع‬ ‫في‬ ‫الموجود‬ ‫ذلك‬ ‫)نفس‬ ‫التالي‬ ‫الجدول‬
‫ولتجعل‬ ‫بوضوح‬ ‫السبقية‬ ‫لتحديد‬ ‫والمعاملت‬ ‫العوامل‬ ‫لتجميع‬ ( ) ‫القواس‬ ‫باستخدم‬ ‫أنصحك‬
،‫المثهال‬ ‫سهبيل‬ ‫علهى‬ .‫المكهان‬ ‫قهدر‬ ‫القهراءة‬ ‫فهي‬ ‫أسههل‬ ‫برنامجهك‬2) +3*4(‫أكهثر‬ ‫بهالطبع‬
‫من‬ ‫ضوحا‬‫و‬2+3*4‫كون‬‫ت‬ ‫أن‬ ‫غي‬‫ينب‬ ‫ول‬ ‫مة‬‫بحك‬ ‫لقواس‬‫ا‬ ‫ستخدام‬‫ا‬ ‫جب‬‫ي‬ ،‫خر‬‫آ‬ ‫شيء‬ ‫كأي‬ .
‫)مثل‬ .‫الحد‬ ‫عن‬ ‫زائدة‬2) +3+4(.(
‫للفهرس‬ ‫عودة‬‫العوامل‬ ‫أسبقية‬|36
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫جدول‬5.2.‫العوامل‬ ‫أسبقية‬
‫العامل‬‫الوصف‬
lambda‫لمدا‬ ‫تعبير‬
or‫منطقية‬ "‫"أو‬
and‫منطقية‬ "‫"و‬
not x‫منطقية‬ "‫"ليس‬
in, not in‫العضوية‬ ‫اختبارات‬
is, is not‫الهوية‬ ‫اختبارات‬
== ,=! ,=< ,< ,=> ,>‫المقارنات‬
|‫بتّية‬ "‫"أو‬
^Bitwise XOR
&‫بتّية‬ "‫"و‬
<< ,>>‫الزاحة‬
- ,+‫والطرح‬ ‫الجمع‬
% ,/ ,*‫والباقي‬ ‫والقسمة‬ ‫الضرب‬
+x, -x‫والسالب‬ ‫الموجب‬
~x‫بتّية‬ "‫"ليس‬
**‫الُس‬
x.attribute‫الخصائص‬ ‫إخالة‬
x[index[‫الشتراك‬
x[index:index[‫الجز‬
f(arguments(...‫الدوال‬ ‫استدعاء‬
)expressions(... ,Binding or tuple display
]expressions[... ,‫القوائم‬ ‫عرض‬
}key:datum{... ,‫القواميس‬ ‫عرض‬
`expressions`... ,‫السلسل‬ ‫تحويل‬
.‫القادمة‬ ‫الفصول‬ ‫في‬ ‫ستشرح‬ ‫سابقا‬ ‫عليها‬ ‫نمر‬ ‫لم‬ ‫التي‬ ‫العوامل‬
‫العوامل‬‫السبقية‬ ‫في‬ ‫المتساوية‬‫المثال‬ ‫سبيل‬ ‫على‬ .‫السابق‬ ‫الجدول‬ ‫في‬ ‫الصف‬ ‫نفس‬ ‫في‬ ‫وضعت‬+
‫و‬-.‫السبقية‬ ‫نفس‬ ‫لهما‬
‫للفهرس‬ ‫عودة‬‫العوامل‬ ‫أسبقية‬|37
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الحساب‬ ‫ترتيب‬
‫اﻵهخر‬ ‫علهى‬ ‫أسهبقية‬ ‫لهه‬ ‫عامهل‬ ‫أي‬ ‫العوامهل‬ ‫أسهبقية‬ ‫جهدول‬ ‫يحهدد‬ ‫مبهدئيا؛‬.‫تغييهر‬ ‫أردت‬ ‫إذا‬ ‫لهذلك‬
‫القواس‬ ‫استخدام‬ ‫فعليك‬ ،‫العمليات‬ ‫حساب‬ ‫ترتيب‬( )‫عملية‬ ‫تتم‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،
‫عملية‬ ‫قبل‬ ‫الجمع‬‫مثل‬ ‫القواس‬ ‫استخدام‬ ‫يمكن‬ ‫حينئذ‬ ‫التعبيرات‬ ‫أحد‬ ‫في‬ ‫الضرب‬)2+3* (4.
‫الرتباطية‬
‫من‬ ‫تحسب‬ ‫السبقية‬ ‫في‬ ‫المشتركة‬ ‫العوامل‬ ‫أن‬ ‫أي‬ ،‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫عادة‬ ‫ترتبط‬ ‫العوامل‬
‫اليميهن‬ ‫إلهى‬ ‫ار‬‫ه‬‫اليس‬.‫ال‬‫ه‬‫المث‬ ‫سهبيل‬ ‫علهى‬2+3+4‫مثهل‬ ‫تقيهم‬)2+3+ (4.‫العوامهل‬ ‫بعهض‬
‫أن‬ ‫أي‬ ،‫اليسار‬ ‫إلى‬ ‫اليمين‬ ‫من‬ ‫ترتبط‬ ‫السناد‬ ‫عوامل‬ ‫مثل‬a = b = c‫باعتبارها‬ ‫تعامل‬a =
(b = c(.
‫التعبيرات‬
‫التعبيرات‬ ‫استخدام‬
‫مثال‬5.1.‫التعبيرات‬ ‫استخدام‬
#!/usr/bin/python
# Filename: expression.py
length = 5
breadth = 2
area = length * breadth
print 'Area is', area
print 'Perimeter is', 2 * (length + breadth)
‫الخرْج‬
$ python expression.py
Area is 10
Perimeter is 14
‫للفهرس‬ ‫عودة‬‫التعبيرات‬|38
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫يعمل‬ ‫كيف‬
‫المتغيهرات‬ ‫فهي‬ ‫تخهزن‬ ‫المسهتطيل‬ ‫وعهرض‬ ‫طهول‬)length‫و‬breadth.(‫اب‬‫ه‬‫لحس‬ ‫نسهتخدمها‬ ‫ونحهن‬
‫التعبيرات‬ ‫بمساعدة‬ ‫المستطيل‬ ‫ومحيط‬ ‫مساحة‬.‫التعبير‬ ‫نتيجة‬ ‫نخزن‬length * breadth
‫في‬ ‫ير‬‫المتغ‬ ‫في‬area‫فادة‬‫ال‬ ‫ستخدام‬‫با‬ ‫عه‬‫نطب‬ ‫ثم‬print.‫ستخدم‬‫ن‬ ‫نا‬‫فإن‬ ،‫ية‬‫الثان‬ ‫لة‬‫الحا‬ ‫في‬
‫التعبير‬ ‫قيمة‬ ‫مباشرة‬2) *length + breadth(‫الفادة‬ ‫في‬print.
‫بأناقهة‬ ‫النتيجهة‬ ‫بيثهون‬ ‫تطبهع‬ ‫كيهف‬ ‫لحهظ‬ ،‫أيضها‬.‫بيهن‬ ‫مسهافة‬ ‫نحهدد‬ ‫لهم‬ ‫أننها‬ ‫ورغهم‬'Area
is'‫والمتغيهر‬area‫ويصهبح‬ ‫ولطيهف‬ ‫نظيهف‬ ‫ناتهج‬ ‫علهى‬ ‫نحصهل‬ ‫بحيهث‬ ‫لنها‬ ‫بيثهون‬ ‫وضهعتها‬ ‫فقهد‬
‫الطريقة‬ ‫بهذه‬ ‫مقروئية‬ ‫أكثر‬ ‫البرنامج‬)‫الناتج‬ ‫في‬ ‫بالمسافات‬ ‫للهتمام‬ ‫نحتاج‬ ‫ل‬ ‫أننا‬ ‫حيث‬.(‫هذا‬
‫أسهل‬ ‫المبرمج‬ ‫حياة‬ ‫تجعل‬ ‫بيثون‬ ‫أن‬ ‫كيف‬ ‫على‬ ‫مثال‬.
‫الخلصة‬
) ‫العوامل‬ ‫نستخدم‬ ‫كيف‬ ‫رأينا‬operators) ‫المعاملت‬ ‫و‬ (operands) ‫والتعبيرات‬ (expressions(
‫برامجنها‬ ‫فهي‬ ‫باسهتخدامها‬ ‫نقهوم‬ ‫كيهف‬ ‫سهنرى‬ ‫يلهي‬ ‫وفيمها‬ .‫برنامهج‬ ‫لهي‬ ‫الساسهية‬ ‫اللبنهات‬ ‫وههي‬
.‫الفادات‬ ‫باستخدام‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|39
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬6‫التدفق‬ ‫في‬ ‫التحكم‬ .
‫المحتويات‬ ‫قائمة‬
‫مقدمة‬
‫إفادة‬ ‫استخدام‬if
‫يعمل‬ ‫كيف‬
‫إفادة‬while
‫إفادة‬ ‫استخدام‬while
‫الحلقة‬for
‫إفادة‬ ‫استخدام‬for
‫الفادة‬break
‫الفادة‬ ‫استخدام‬break
‫الفادة‬continue
‫الفادة‬ ‫استخدام‬continue
‫الخلصة‬
‫مقدمـــة‬
‫محترمة‬ ‫تنفذها‬ ‫وبايثون‬ ‫الفادات؛‬ ‫من‬ ‫تتابع‬ ‫دائما‬ ‫هناك‬ ‫كان‬ ‫اﻵن‬ ‫حتى‬ ‫رأيناها‬ ‫التي‬ ‫البرامج‬ ‫في‬
‫الترتيب‬ ‫نفس‬.‫البرنامج‬ ‫من‬ ‫تريد‬ ،‫المثال‬ ‫سبيل‬ ‫على‬ ‫العمل؟‬ ‫انسياب‬ ‫طريقة‬ ‫تغيير‬ ‫أردت‬ ‫لو‬ ‫ماذا‬
‫طباعة‬ ‫مثل‬ ‫المختلفة‬ ‫للمواقف‬ ‫تبعا‬ ‫مختلفة‬ ‫بأشياء‬ ‫والقيام‬ ‫القرارات‬ ‫بعض‬ ‫اتخاذ‬'Good
Morning'‫أو‬'Good Evening'‫اليوم؟‬ ‫من‬ ‫الحالي‬ ‫الوقت‬ ‫على‬ ‫معتمدا‬
‫التدفق‬ ‫في‬ ‫التحكم‬ ‫إفادات‬ ‫استخدام‬ ‫عبر‬ ‫يتم‬ ‫ذلك‬ ‫فإن‬ ،‫خمنت‬ ‫وكما‬.‫للتحكم‬ ‫إفادات‬ ‫ثلث‬ ‫يوجد‬
‫بيثون؛‬ ‫قي‬ ‫التدفق‬ ‫في‬if‫و‬ ،for‫و‬ ،while.
‫إفادة‬if
‫ت‬‫إفادة‬ ‫ستخدم‬if‫و‬ ‫معينة‬ ‫حالة‬ ‫من‬ ‫للتحقق‬‫إذا‬‫الفادات‬ ‫من‬ ‫لبنة‬ ‫نشغل‬ ،‫صحيحة‬ ‫الحالة‬ ‫كانت‬
‫)تسمى‬if-block،(‫وإل‬‫)تسمى‬ ‫الفادات‬ ‫من‬ ‫أخرى‬ ‫لبنة‬ ‫نعالج‬ ‫فإننا‬else-block‫بند‬ .(else
.‫اختياري‬
‫إفادة‬ ‫استخدام‬if
‫مثال‬6.1.‫إفادة‬ ‫استخدام‬if
‫للفهرس‬ ‫عودة‬‫إفادة‬if|40
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
#!/usr/bin/python
# Filename: if.py
number = 23
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.' # New block
starts here
print "(but you do not win any prizes!)" # New block
ends here
elif guess < number:
print 'No, it is a little higher than that' # Another
block
# You can do whatever you want in a block ...
else:
print 'No, it is a little lower than that'
# you must have guess > number to reach here
print 'Done'
# This last statement is always executed, after the if statement is executed
‫الخرْج‬
$ python if.py
Enter an integer : 50
No, it is a little lower than that
Done
$ python if.py
Enter an integer : 22
No, it is a little higher than that
Done
$ python if.py
Enter an integer : 23
Congratulations, you guessed it.
(but you do not win any prizes!)
‫للفهرس‬ ‫عودة‬‫إفادة‬if|41
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Done
‫يعمل‬ ‫كيف‬
‫لدينا‬ ‫الذي‬ ‫العدد‬ ‫وبين‬ ‫بينه‬ ‫ونقارن‬ ‫المستخدم‬ ‫من‬ ‫تخمينات‬ ‫نأخذ‬ ‫فإننا‬ ،‫البرنامج‬ ‫هذا‬ ‫في‬.‫نسند‬
‫المتغير‬number‫مثل‬ ،‫نريده‬ ‫صحيح‬ ‫عدد‬ ‫أي‬ ‫إلى‬23.‫باستخدام‬ ‫المستخدم‬ ‫تخمين‬ ‫أخذنا‬ ،‫ثم‬
‫الدالهة‬raw_input().‫اسهتخدامها‬ ‫إعهادة‬ ‫يمكهن‬ ‫البرامهج‬ ‫مهن‬ ‫أجهزاء‬ ‫إل‬ ‫ههي‬ ‫مها‬ ‫الهدوال‬.‫سهنقرأ‬
‫في‬ ‫عنها‬ ‫المزيد‬‫التالي‬ ‫الفصل‬.
‫جة‬‫المدم‬ ‫لة‬‫للدا‬ ‫سلسهلة‬ ‫نا‬‫أعطي‬raw_input‫وتنتظهر‬ ‫شة‬‫الشا‬ ‫علهى‬ ‫نص‬‫ال‬ ‫عة‬‫بطبا‬ ‫قوم‬‫ت‬ ‫والهتي‬
‫المسهتخدم‬ ‫مهن‬ ‫المهدخلت‬.‫علهى‬ ‫ونضهغط‬ ‫شهيء‬ ‫أي‬ ‫نهدخل‬ ‫أن‬ ‫وبمجهرد‬enter‫الدالهة‬ ‫تعيهد‬
‫حالة‬ ‫في‬ ‫وهي‬ ،‫المدخلت‬raw_input‫عدد‬ ‫إلى‬ ‫النص‬ ‫هذا‬ ‫نحول‬ ‫بعدها‬ ،‫نصية‬ ‫سلسلة‬ ‫عن‬ ‫عبارة‬
‫باسهتخدام‬ ‫صهحيح‬int‫المتغيهر‬ ‫فهي‬ ‫نخزنهه‬ ‫ثهم‬guess.‫الحقيقهة‬ ‫فهي‬int‫صهنف‬ ‫عهن‬ ‫عبهارة‬)
class(‫لى‬‫إ‬ ‫سل‬‫السل‬ ‫يل‬‫لتحو‬ ‫ستخدامه‬‫ا‬ ‫ستطيع‬‫ت‬ ‫نك‬‫أ‬ ‫هو‬ ‫ﻵن‬‫ا‬ ‫ته‬‫معرف‬ ‫تاج‬‫تح‬ ‫ما‬ ‫كل‬ ‫كن‬‫ول‬
‫صحيحة‬ ‫أعداد‬)‫النص‬ ‫داخل‬ ‫سليم‬ ‫صحيح‬ ‫عدد‬ ‫على‬ ‫تحتوي‬ ‫السلسلة‬ ‫أن‬ ‫فرض‬ ‫على‬.(
‫اخترناه‬ ‫الذي‬ ‫العدد‬ ‫وبين‬ ‫المستخدم‬ ‫تخمين‬ ‫بين‬ ‫قارنا‬ ‫ذلك‬ ‫بعد‬.‫بنجاح‬ ‫رسالة‬ ‫نطبع‬ ‫تساويا‬ ‫فإذا‬
‫العمليهة‬.‫لبنهة‬ ‫أيهة‬ ‫إلهى‬ ‫تنتمهي‬ ‫الفهادات‬ ‫أي‬ ‫بيثهون‬ ‫لنخهبر‬ ‫الزاحهة‬ ‫مسهتويات‬ ‫نسهتخدم‬ ‫ا‬‫ه‬‫أنن‬ ‫لحهظ‬.
‫بيثهون‬ ‫فهي‬ ‫الزاحهة‬ ‫أهميهة‬ ‫سهبب‬ ‫يهبين‬ ‫ذلهك‬.‫قاعهدة‬ ‫علهى‬ ‫تثبهت‬ ‫أن‬ ‫أتمنهى‬'‫تبهويب‬ ‫علمهة‬)tab(
‫إزاحة‬ ‫مستوى‬ ‫لكل‬ ‫واحدة‬.'‫ستفعل؟‬ ‫فهل‬
‫إفادة‬ ‫أن‬ ‫كيف‬ ‫لحظ‬if‫رأسيتين‬ ‫نقطتين‬ ‫على‬ ‫ي‬ ‫تحتو‬(:)‫من‬ ‫لبنة‬ ‫بأن‬ ‫بيثون‬ ‫نخبر‬ ‫النهاية؛‬ ‫في‬
‫ستتبعها‬ ‫الفادات‬.
‫مهن‬ ‫نطلهب‬ ‫فإننها‬ ‫كهذلك‬ ‫كهان‬ ‫وإذا‬ ،‫العهدد‬ ‫ذلهك‬ ‫مهن‬ ‫أقهل‬ ‫التخميهن‬ ‫كهون‬ ‫مهن‬ ‫تحقهق‬ ‫ذلهك‬ ‫عهد‬
‫قليل‬ ‫أكبر‬ ‫عدد‬ ‫تخمين‬ ‫المستخدم‬.‫بند‬ ‫هو‬ ‫هنا‬ ‫استخدمناه‬ ‫ما‬elif‫إفادتي‬ ‫بين‬ ‫يدمج‬ ‫والذي‬if
else-if else‫إفهادة‬ ‫فهي‬ ‫متتهابعتين‬if-elif-else‫واحهدة‬.‫ويقلهل‬ ‫أسههل‬ ‫البرنامهج‬ ‫ههذا‬ ‫يجعهل‬
‫المطلوبة‬ ‫الزاحات‬ ‫مقدار‬.
‫إفادات‬ ‫تحتوي‬ ‫أنت‬ ‫يجب‬elif‫و‬else‫على‬(:)‫الفادات‬ ‫بلبنة‬ ‫متبوعة‬ ‫المنطقي‬ ‫السطر‬ ‫نهاية‬ ‫في‬
‫لها‬ ‫المقابلة‬)‫بالطبع‬ ‫المناسبة‬ ‫الزاحة‬ ‫مع‬(
‫إفادة‬ ‫احتواء‬ ‫يمكن‬if‫إفادة‬ ‫على‬if‫إفادات‬ ‫هذا‬ ‫يسمى‬ ‫وهكذا؛‬ ‫أخرى‬if‫المتتداخلة‬.
*‫الجزاء‬ ‫ان‬ ‫تذكر‬elif‫و‬else‫اختيارية‬.‫إفادة‬ ‫أقل‬if‫هي‬ ‫صحيحة‬
if True:
print 'Yes, it is true'
‫إفادة‬ ‫تنفيذ‬ ‫من‬ ‫بيثون‬ ‫انتهاء‬ ‫بعد‬if‫بنود‬ ‫فيها‬ ‫بما‬ ‫كاملة‬elif‫و‬else‫تنتقل‬ ،‫تحتها‬ ‫المندرجة‬
‫إفادة‬ ‫تحتوي‬ ‫التي‬ ‫اللبنة‬ ‫في‬ ‫التالية‬ ‫الفادة‬ ‫إلى‬if.‫الرئيسة‬ ‫البرنامج‬ ‫لبنة‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫وهي‬
‫للفهرس‬ ‫عودة‬‫إفادة‬if|42
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫ههي‬ ‫التاليهة‬ ‫والفهادة‬ ‫البرنامهج‬ ‫تنفيهذ‬ ‫يبهدأ‬ ‫حيهث‬print 'Done'.‫نهايهة‬ ‫بيثهون‬ ‫تهرى‬ ‫بعهدها‬
‫ببساطة‬ ‫تنهيه‬ ‫ثم‬ ‫ومن‬ ‫البرنامج‬.
‫ها‬‫تلحظ‬ ‫أن‬ ‫يك‬‫عل‬ ‫لتي‬‫ا‬ ‫شياء‬‫ال‬ ‫من‬ ‫كثير‬‫ال‬ ‫لى‬‫إ‬ ‫شرت‬‫أ‬ ‫قد‬‫ف‬ ،‫جدا‬ ‫سيط‬‫ب‬ ‫مج‬‫البرنا‬ ‫هذا‬ ‫أن‬ ‫غم‬‫ور‬
‫البسهيط‬ ‫البرنامهج‬ ‫ههذا‬ ‫فهي‬ ‫حهتى‬.‫واضهحة‬ ‫أشهياء‬ ‫كلهها‬ ‫وههذه‬)‫لهولئك‬ ‫مفهاجئ‬ ‫بشهكل‬ ‫وبسهيطة‬
‫سي‬ ‫عن‬ ‫بخلفية‬ ‫القادمين‬/‫سي‬(++‫ولكن‬ ،‫البداية‬ ‫في‬ ‫هذا‬ ‫لكل‬ ‫مدركا‬ ‫تصبح‬ ‫أن‬ ‫منك‬ ‫ويتطلب‬
‫بأنها‬ ‫وستشعر‬ ‫معها‬ ‫مرتاحا‬ ‫ستصبح‬ ،‫ذلك‬ ‫بعد‬'‫طبيعية‬'‫لك‬ ‫بالنسبة‬.
++‫سي/سي‬ ‫لمبرمجي‬ ‫ملحظة‬
‫إفادة‬ ‫توجد‬ ‫ل‬‫تبديل‬)switch‫إفادة‬ ‫استخدام‬ ‫يمكنك‬ .‫بيثون‬ ‫في‬ (if..elif..else‫لفعل‬
‫استخدم‬ ،‫الحالت‬ ‫بعض‬ ‫)وفي‬ ‫الشيء‬ ‫نفس‬‫قاموس‬(‫بسرعة‬ ‫ذلك‬ ‫لفعل‬
‫إفادة‬while
‫ادة‬‫ه‬‫إف‬while‫إفهادة‬ .‫صهحيحا‬ ‫الشهرط‬ ‫دام‬ ‫مها‬ ‫الفهادات‬ ‫مهن‬ ‫لبنهة‬ ‫تنفيهذ‬ ‫تكهرار‬ ‫لهك‬ ‫تسهمح‬
while‫الفهادات‬ ‫يسهمى‬ ‫لمها‬ ‫مثهال‬‫الحلقيهة‬)looping‫إفهادة‬ ‫تشهمل‬ ‫أن‬ ‫يمكهن‬ .(while
‫بند‬ ‫على‬else.‫اختياري‬
‫إفادة‬ ‫استخدام‬while
‫مثال‬6.2.‫إفادة‬ ‫استخدام‬while
#!/usr/bin/python
# Filename: while.py
number = 23
running = True
while running:
guess = int(raw_input('Enter an integer : '))
if guess == number:
print 'Congratulations, you guessed it.'
running = False # this causes the while loop to
stop
‫للفهرس‬ ‫عودة‬‫إفادة‬while|43
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
elif guess < number:
print 'No, it is a little higher than that.'
else:
print 'No, it is a little lower than that.'
else:
print 'The while loop is over.'
# Do anything else you want to do here
print 'Done'
‫الخرْج‬
$ python while.py
Enter an integer : 50
No, it is a little lower than that.
Enter an integer : 22
No, it is a little higher than that.
Enter an integer : 23
Congratulations, you guessed it.
The while loop is over.
Done
‫يعمل‬ ‫كيف‬
‫لهه‬ ‫يسهمح‬ ‫المسهتخدم‬ ‫أن‬ ‫ههي‬ ‫هنها‬ ‫الميهزة‬ ‫لكهن‬ ،‫التخميهن‬ ‫لعبهة‬ ‫نلعهب‬ ‫زلنها‬ ‫مها‬ ،‫البرنامهج‬ ‫ههذا‬ ‫فهي‬
‫تخمين‬ ‫لكل‬ ‫البرنامج‬ ‫تنفيذ‬ ‫تكرار‬ ‫إلى‬ ‫حاجة‬ ‫ل‬ ‫الصحيح؛‬ ‫للتخمين‬ ‫يصل‬ ‫حتى‬ ‫التخمين‬ ‫بمواصلة‬-
‫سابقا‬ ‫فعلنا‬ ‫كما‬.-‫إفادة‬ ‫فائدة‬ ‫بوضوح‬ ‫يشرح‬ ‫هذا‬while.
‫فادة‬‫إ‬ ‫نا‬‫نقل‬raw_input‫و‬if‫قة‬‫حل‬ ‫خل‬‫دا‬ ‫لى‬‫إ‬while.‫ير‬‫المتغ‬ ‫نا‬‫وجعل‬running‫صحيح‬)
True(‫قة‬‫حل‬ ‫بل‬‫ق‬while.‫أول‬:‫ير‬‫المتغ‬ ‫كون‬ ‫من‬ ‫قق‬‫نتح‬running‫صحيح‬‫قل‬‫ننت‬ ‫عدها‬‫وب‬
‫تنفيذ‬ ‫إلى‬while-block‫المناسبة‬.‫ثانيا‬ ‫الحالة‬ ‫تفحص‬ ،‫اللبنة‬ ‫هذه‬ ‫تنفيذ‬ ‫بعد‬-‫المتغير‬ ‫وهي‬
running‫هنا‬.-‫لبنة‬ ‫ننفذ‬ ،‫صحيحة‬ ‫إذاكانت‬while‫لبنة‬ ‫لتنفيذ‬ ‫ننتقل‬ ‫فإننا‬ ‫وإل‬ ،‫ثانيا‬else
‫التالية‬ ‫للفادة‬ ‫ننتقل‬ ‫ثم‬ ،‫الختيارية‬.
‫لبنهة‬ ‫تنفيهذ‬ ‫يتهم‬else‫الحلقهة‬ ‫فهي‬ ‫الشهرط‬ ‫عنهدمايكون‬while‫خهاطئا‬‫المهرة‬ ‫ههذه‬ ‫تكهون‬ ‫وربمها‬
‫الشهرط‬ ‫مهن‬ ‫فيهها‬ ‫التحقهق‬ ‫يتهم‬ ‫الهتي‬ ‫الهولى‬.‫بنهد‬ ‫هنهاك‬ ‫كهان‬ ‫إذا‬else‫للحلقهة‬while‫فسهيتم‬ ،
‫للفهرس‬ ‫عودة‬‫إفادة‬while|44
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫حلقة‬ ‫لديك‬ ‫كان‬ ‫إن‬ ‫إل‬ ‫حتما‬ ‫تنفيذه‬while‫توقف‬ ‫دون‬ ‫نهاية‬ ‫ل‬ ‫ما‬ ‫إلى‬ ‫تدور‬.
‫تسهمى‬True‫و‬False‫منطقيهة‬ ‫أنواعها‬)Boolean types(‫معهادل‬ ‫تعتبرهها‬ ‫أن‬ ‫ويمكنهك‬
‫مة‬‫لقي‬1‫و‬0‫توالي‬‫ال‬ ‫لى‬‫ع‬.‫يس‬‫ول‬ ‫ما‬‫مه‬ ‫قق‬‫التح‬ ‫أو‬ ‫شرط‬‫ال‬ ‫كون‬‫ي‬ ‫ما‬‫حيث‬ ‫ستعمالها‬‫ا‬ ‫هم‬‫الم‬ ‫من‬‫و‬
‫الفعليه‬ ‫القيمه‬1.
‫لبنة‬ ‫الحقيقة‬ ‫في‬else‫اللبنة‬ ‫نفس‬ ‫في‬ ‫لها‬ ‫التابعة‬ ‫الفادات‬ ‫وضع‬ ‫يمكنك‬ ‫حيث‬ ،‫حشوا‬ ‫تعد‬)‫مثل‬
‫إفادة‬while(‫بعد‬while‫التأثير‬ ‫نفس‬ ‫على‬ ‫للحصول‬.
‫سي‬ ‫لمبرمجي‬ ‫ملحظة‬/‫سي‬++
‫بند‬ ‫وضع‬ ‫يمكن‬ ‫أنه‬ ‫تذكر‬else‫لحلقة‬while.
‫الحلقة‬for
‫تعتبر‬for..in‫أخرى‬ ‫حلقية‬ ‫إفادة‬ّ‫تَمُر‬‫في‬ ‫عنصر‬ ‫كل‬ ‫عبر‬ ّ‫مُر‬ ‫مثل‬ ،‫الكائنات‬ ‫من‬ ‫تتابع‬ ‫على‬
‫عن‬ ‫يد‬‫المز‬ ‫لى‬‫ع‬ ‫سنتعرف‬‫و‬ .‫تابع‬‫ت‬‫التتابعات‬‫أن‬ ‫ﻵن‬‫ا‬ ‫ته‬‫معرف‬ ‫يك‬‫عل‬ ‫ما‬ ‫كل‬ .‫قة‬‫لح‬ ‫صول‬‫ف‬ ‫في‬
.‫المرتّبة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫مجرد‬ ‫هو‬ ‫التتابع‬
‫إفادة‬ ‫استخدام‬for
‫مثا‬‫ل‬6.3.‫إفادة‬ ‫استخدام‬for
#!/usr/bin/python
# Filename: for.py
for i in range(1, 5):
print i
else:
print 'The for loop is over'
‫الخرْج‬
$ python for.py
1
2
3
4
‫للفهرس‬ ‫عودة‬‫الحلقة‬for|45
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
The for loop is over
‫يعمل‬ ‫كيف‬
‫نطبهع‬ ‫البرنامهج‬ ‫ههذا‬ ‫فهي‬‫ا‬‫ه‬‫تتابع‬‫العهداد‬ ‫مهن‬.‫المدمجهة‬ ‫الدالهة‬ ‫باسهتخدام‬ ‫ههذا‬ ‫العهداد‬ ‫تتهابع‬ ‫ولّهدنا‬
range.
‫ثم‬ ‫عددين‬ ‫أعطيناه‬ ‫أننا‬ ‫هنا‬ ‫به‬ ‫قمنا‬ ‫ما‬range‫الول‬ ‫العدد‬ ‫من‬ ‫بداية‬ ‫العداد‬ ‫من‬ ‫تتابعا‬ ‫لنا‬ ‫يعيد‬
‫الخير‬ ‫العدد‬ ‫قبل‬ ‫ما‬ ‫إلى‬ ‫يصل‬ ‫حتى‬ ‫تصاعديا‬ ‫ثم‬.‫المثال‬ ‫سبيل‬ ‫على‬range(1,5(‫التتابع‬ ‫يعطي‬
]1,2,3,4[‫يأخهذ‬ ،‫افتراضهيا‬range‫بقيمهة‬ ‫خطهوة‬1.‫الخطهوة‬ ‫تكهون‬ ‫ا‬‫ه‬‫ثالث‬ ‫عهددا‬ ‫أعطيتهه‬ ‫إذا‬
،‫العدد‬ ‫ذلك‬ ‫بمقدار‬‫المثال‬ ‫سبيل‬ ‫على‬:range(1,5,2(‫تعطي‬]1,3[.‫يمتد‬ ‫المدى‬ ‫أن‬ ‫تذكر‬
‫حتى‬‫قبل‬ ‫ما‬‫الثاني‬ ‫العدد‬-‫إنه‬ ‫أي‬‫ل‬‫الثاني‬ ‫العدد‬ ‫يشمل‬.
‫الحلقة‬ ‫تدور‬ ‫ذلك‬ ‫بعد‬for‫المدى‬ ‫ذلك‬ ‫خلل‬-for i in range(1,5(‫تعادل‬for i in [1,
2, 3, 4[-‫عدد‬ ‫كل‬ ‫إسناد‬ ‫تشبه‬ ‫والتي‬)‫كائن‬ ‫أو‬(‫المتغير‬ ‫إلى‬i‫يتم‬ ‫بعدها‬ ،‫مرة‬ ‫كل‬ ‫في‬ ‫واحدا‬
‫قيمة‬ ‫لكل‬ ‫الفادات‬ ‫لبنة‬ ‫تنفيذ‬i.‫الفادات‬ ‫لبنة‬ ‫في‬ ‫القيمة‬ ‫بطباعة‬ ‫فقط‬ ‫نقوم‬ ‫هذه‬ ‫حالتنا‬ ‫في‬.
‫الجزء‬ ‫أن‬ ‫تذكر‬else‫اختياري‬.‫الحلقة‬ ‫انتهاء‬ ‫بعد‬ ‫واحدة‬ ‫مرة‬ ‫يُنفذ‬ ‫فإنه‬ ،‫يضاف‬ ‫وعندما‬for
‫إفادة‬ ‫قابل‬ ‫إذا‬ ‫إل‬break.
‫الحلقة‬ ‫أن‬ ‫تذكر‬for..in‫تتابع‬ ‫أي‬ ‫مع‬ ‫تعمل‬.‫باستخدام‬ ‫توليدها‬ ‫تم‬ ‫العداد‬ ‫من‬ ‫قائمة‬ ‫لدينا‬ ‫هنا‬
‫المدمجة‬ ‫الدالة‬range‫كائنات‬ ‫لي‬ ‫تتابع‬ ‫أي‬ ‫استخدام‬ ‫يمكننا‬ ‫العموم‬ ‫على‬ ‫ولكن‬ ،.‫هذه‬ ‫وسنشرح‬
‫القادمة‬ ‫الفصول‬ ‫في‬ ‫بالتفصيل‬ ‫الفكرة‬.
‫سي‬ ‫لمبرمجي‬ ‫ملحظة‬/‫سي‬/++‫جافا‬/‫سي‬#
‫الحلقهة‬for‫سهي‬ ‫عهن‬ ‫جهذريا‬ ‫اختلفها‬ ‫تختلهف‬ ‫بيثهون‬ ‫فهي‬/‫سهي‬.++‫سهي‬ ‫مهبرمجو‬#
‫الحلقهة‬ ‫أن‬ ‫سهيلحظون‬for‫لحلقهة‬ ‫مشهابهة‬ ‫بيثهون‬ ‫فهي‬foreach‫سهي‬ ‫فهي‬.#‫مهبرمجو‬
Java‫مع‬ ‫تشابهها‬ ‫أيضا‬ ‫سيلحظون‬for (int i : IntArray(‫جافا‬ ‫في‬1.5.
‫سي‬ ‫في‬/‫سي‬++‫تكتب‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ،for (int i = 0; i < 5; i(++‫تكتب‬ ‫بيثون‬ ‫ففي‬ ،
‫فقط‬for i in range(0,5(.‫بساطة‬ ‫أكثر‬ ‫بيثون‬ ‫في‬ ‫الحلقة‬ ‫كتابة‬ ‫فإن‬ ،‫ترى‬ ‫وكما‬
‫للخطأ‬ ‫وعرضة‬ ‫تعبيرا‬ ‫وأقل‬.
‫الفادة‬break
‫إفادة‬break‫تستخدم‬‫لكسر‬‫لم‬ ‫ولو‬ ‫حتى‬ ‫الحلقة‬ ‫تنفيذ‬ ‫وقف‬ :‫أخرى‬ ‫بعبارة‬ ،‫التكرارية‬ ‫الحلقة‬
‫الحلقة‬ ‫شرط‬ ‫يصبح‬‫خاطئا‬.‫كله‬ ‫العناصر‬ ‫تتابع‬ ‫على‬ ‫تمر‬ ‫لم‬ ‫أو‬
‫أن‬ ‫ملحظة‬ ‫المهم‬ ‫من‬‫كسر‬‫حلقة‬for‫أو‬while‫إلى‬ ‫سيؤدي‬‫عدم‬‫إفادات‬ ‫لبنة‬ ‫تنفيذ‬else.
‫للفهرس‬ ‫عودة‬‫الفادة‬break|46
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الفادة‬ ‫استخدام‬break
‫مثال‬6.4.‫الفادة‬ ‫استخدام‬break
#!/usr/bin/python
# Filename: break.py
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
print 'Length of the string is', len(s)
print 'Done'
‫الخرْج‬
$ python break.py
Enter something : Programming is fun
Length of the string is 18
Enter something : When the work is done
Length of the string is 21
Enter something : if you wanna make your work also fun:
Length of the string is 37
Enter something : use Python!
Length of the string is 12
Enter something : quit
Done
‫يعمل‬ ‫كيف‬
‫مرة‬ ‫كل‬ ‫في‬ ‫مدخلة‬ ‫كل‬ ‫طول‬ ‫طبعنا‬ ‫ثم‬ ‫المستخدم‬ ‫من‬ ‫المدخلت‬ ‫أخذ‬ ‫كررنا‬ ‫البرنامج‬ ‫هذا‬ ‫في‬.
‫هي‬ ‫ستخدم‬‫الم‬ ‫لة‬‫مدخ‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫حص‬‫ف‬ ‫خلل‬ ‫من‬ ‫مج‬‫البرنا‬ ‫لوقف‬ ‫خاص‬ ‫شرط‬ ‫نا‬‫وفر‬ ‫وقد‬'
quit'‫طريق‬ ‫عن‬ ‫البرنامج‬ ‫عمل‬ ‫وأوقفنا‬‫كسر‬‫البرنامج‬ ‫نهاية‬ ‫إلى‬ ‫والوصول‬ ‫الحلقة‬.
‫المدمجة‬ ‫الدالة‬ ‫باستخدام‬ ‫المدخلة‬ ‫السلسلة‬ ‫طول‬ ‫معرفة‬ ‫يمكن‬len.
‫إفادة‬ ‫أن‬ ‫تذكر‬break‫الحلقة‬ ‫مع‬ ‫استخدامها‬ ‫يمكن‬for‫أيضا‬.
‫للفهرس‬ ‫عودة‬‫الفادة‬break|47
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫قصيدة‬'G2'‫لبايثون‬
‫وسميتها‬ ‫كتبتها‬ ‫قد‬ ‫قصيدة‬ ‫هنا‬ ‫المستخدمة‬ ‫المدخلت‬G2's Poetic Python:
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
‫الفادة‬continue
‫الفهادة‬continue‫الحاليهة‬ ‫الحلقهة‬ ‫لبنهة‬ ‫فهي‬ ‫ورد‬ ‫مها‬ ‫بقيهة‬ ‫تخطهي‬ ‫بيثهون‬ ‫مهن‬ ‫لنطلهب‬ ‫تسهتخدم‬
.‫الحلقة‬ ‫تكرار‬ ‫ومواصلة‬
‫الفادة‬ ‫استخدام‬continue
‫مثال‬6.5.‫الفادة‬ ‫استخدام‬continue
#!/usr/bin/python
# Filename: continue.py
while True:
s = raw_input('Enter something : ')
if s == 'quit':
break
if len(s) < 3:
continue
print 'Input is of sufficient length'
# Do other kinds of processing here...
‫الخرْج‬
$ python continue.py
‫للفهرس‬ ‫عودة‬‫الفادة‬continue|48
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Enter something : a
Enter something : 12
Enter something : abc
Input is of sufficient length
Enter something : quit
‫يعمل‬ ‫كيف‬
‫طولها‬ ‫يكون‬ ‫عندما‬ ‫فقط‬ ‫نعالجها‬ ‫ولكن‬ ،‫المستخدم‬ ‫مدخلت‬ ‫نقبل‬ ‫البرنامج‬ ‫هذا‬ ‫في‬3‫على‬ ‫خانات‬
‫القل‬.‫المدمجة‬ ‫الدالة‬ ‫نستخدم‬ ‫لذا‬len‫من‬ ‫أقل‬ ‫الطول‬ ‫كان‬ ‫فإذا‬ ،‫العبارة‬ ‫طول‬ ‫على‬ ‫للحصول‬3
‫الفادة‬ ‫باستخدام‬ ‫نة‬‫اللب‬ ‫في‬ ‫الموجود‬ ‫الفادات‬ ‫ية‬‫بق‬ ‫طي‬‫نتخ‬ ‫خانات‬continue‫بقية‬ ‫نننفذ‬ ‫وإل‬
‫هنا‬ ‫نريدها‬ ‫معالجة‬ ‫بأي‬ ‫القيام‬ ‫ويمكننا‬ ،‫الحلقة‬ ‫في‬ ‫الفادات‬.
‫الفادة‬ ‫أن‬ ‫لحظ‬continue‫الحلقة‬ ‫مع‬ ‫تعمل‬for‫أيضا‬.
‫الخلصة‬
: ‫نات‬‫البيا‬ ‫تدفق‬ ‫في‬ ‫كم‬‫للتح‬ ‫أدوات‬ ‫ثلث‬ ‫ستخدام‬‫ا‬ ‫ية‬‫كيف‬ ‫نا‬‫رأي‬if‫و‬while‫و‬for‫فادات‬‫ال‬ ‫مع‬
break‫و‬continue‫فهي‬ ‫عهادة‬ ‫المسهتخدمة‬ ‫الهجزاء‬ ‫أكهثر‬ ‫مهن‬ ‫بعهض‬ ‫وتلهك‬ .‫بهها‬ ‫المرتبطهة‬
.‫ضروري‬ ‫أمر‬ ‫عليها‬ ‫تعودك‬ ‫ولذا‬ ‫بيثون؛‬
.‫الدوال‬ ‫ونستخدم‬ ‫ننشئ‬ ‫كيف‬ ‫سنرى‬ ‫يلي‬ ‫وفيما‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|49
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬7‫الدوال‬ .
‫المحتويات‬ ‫قائمة‬
‫مقدمة‬
‫دالة‬ ‫تعريف‬
‫الدالة‬ ‫معاملت‬
‫الدالة‬ ‫معاملت‬ ‫استخدام‬
‫المحلية‬ ‫المتغيرات‬
‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬
‫الفادة‬ ‫استخدام‬global
‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬
‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬
‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬
‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬
‫الفادة‬return
‫الفادة‬ ‫استخدام‬return
‫التوثيق‬ ‫جمل‬
‫التوثيق‬ ‫جمل‬ ‫استخدام‬
‫الخلصة‬
‫مقدمة‬
‫اسهتخدامها‬ ‫إعهادة‬ ‫يمكهن‬ ‫البرامهج‬ ‫مهن‬ ‫أجهزاء‬ ‫ههي‬ ‫الهدوال‬.‫مهن‬ ‫للبنهة‬ ‫مها‬ ‫اسهم‬ ‫بإعطهاء‬ ‫لهك‬ ‫تسهمح‬
‫مرات‬‫ال‬ ‫من‬ ‫عدد‬ ‫وأي‬ ،‫جك‬‫برنام‬ ‫من‬ ‫مكان‬ ‫أي‬ ‫في‬ ‫نة‬‫اللب‬ ‫هذه‬ ‫تشغيل‬ ‫نك‬‫ويمك‬ ،‫الفادات‬.‫سمى‬‫ي‬
‫هذا‬‫ستدعاء‬‫ا‬‫لة‬‫الدا‬.‫لة‬‫الدا‬ ‫ثل‬‫م‬ ‫جة‬‫المدم‬ ‫لدوال‬‫ا‬ ‫من‬ ‫ضا‬‫بع‬ ‫عل‬‫بالف‬ ‫ستخدمنا‬‫ا‬ ‫قد‬‫و‬len‫لة‬‫والدا‬
range.
‫المفتاحيهة‬ ‫بالكلمهة‬ ‫الدالهة‬ ‫تُعَهرَّف‬def‫باسهم‬ ‫متبوعهة‬‫المعهرف‬‫الهقواس‬ ‫مهن‬ ‫زوجيهن‬ ‫ثهم‬ ‫للدالهة‬
‫الهللية‬()‫بنقطتين‬ ‫السطر‬ ‫وينتهي‬ ‫المتغيرات‬ ‫أسماء‬ ‫بعض‬ ‫تحوي‬ ‫قد‬ ‫التي‬.(:)‫لبنة‬ ‫ذلك‬ ‫يعقب‬
‫الدالة‬ ‫هذه‬ ‫تشكل‬ ‫التي‬ ‫الفادات‬ ‫من‬.‫بساطتها‬ ‫مدى‬ ‫يوضح‬ ‫المثال‬ ‫وهذا‬:
‫دالة‬ ‫تعريف‬
‫مثال‬7.1.‫دالة‬ ‫تعريف‬
#!/usr/bin/python
‫للفهرس‬ ‫عودة‬‫دالة‬ ‫تعريف‬|50
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
# Filename: function1.py
def sayHello():
print 'Hello World!' # block belonging to the function
# End of function
sayHello() # call the function
‫الخرْج‬
$ python function1.py
Hello World!
‫يعمل‬ ‫كيف‬
‫اسهمها‬ ‫دالهة‬ ‫نُعهرِّف‬sayHello‫أعله‬ ‫الموضهح‬ ‫الهتركيب‬ ‫باسهتخدام‬.‫أي‬ ‫تأخهذ‬ ‫ل‬ ‫الدالهة‬ ‫ههذه‬
‫القوسين‬ ‫بين‬ ‫متغيرات‬ ‫أي‬ ‫عن‬ ‫يُعلن‬ ‫لم‬ ‫وبالتالي‬ ،‫معاملت‬.‫مدخلت‬ ‫مجرد‬ ‫هي‬ ‫الدالة‬ ‫معاملت‬
‫المقابلة‬ ‫النتائج‬ ‫على‬ ‫ونحصل‬ ‫لها‬ ‫مختلفة‬ ‫قيم‬ ‫تمرير‬ ‫من‬ ‫نتمكن‬ ‫حتى‬ ‫للدالة‬.
‫الدالة‬ ‫معاملت‬
‫من‬ ‫لتتمكن‬ ‫الدالة‬ ‫لهذه‬ ‫تعطيها‬ ‫قيم‬ ‫سوى‬ ‫ليست‬ ‫والتي‬ ،‫معاملت‬ ‫الدالة‬ ‫تأخذ‬ ‫أن‬ ‫يمكن‬‫عمل‬‫شيئ‬
‫نسهتدعي‬ ‫عنهدما‬ ‫تحديهدها‬ ‫يتهم‬ ‫المتغيهرات‬ ‫ههذه‬ ‫قيهم‬ ‫أن‬ ‫غيهر‬ ‫المتغيهرات‬ ‫تشهبه‬ ‫املت‬‫ه‬‫المع‬ ‫ههذه‬ .‫ا‬‫ه‬‫م‬
.‫نفسها‬ ‫الدالة‬ ‫داخل‬ ‫قيم‬ ‫لها‬ ‫يسند‬ ‫ول‬ ،‫الدالة‬
‫عنهدما‬ .(:) ‫بنقطهتين‬ ‫ومفصهولة‬ ،‫الدالهة‬ ‫تعريهف‬ ‫فهي‬ () ‫الهقواس‬ ‫مهن‬ ‫زوج‬ ‫داخهل‬ ‫املت‬‫ه‬‫المع‬ ‫تحهدد‬
‫طاة‬‫المع‬ ‫السماء‬ ‫ستخدمة؛‬‫الم‬ ‫صطلحات‬‫الم‬ ‫حظ‬‫ل‬ .‫قة‬‫الطري‬ ‫فس‬‫بن‬ ‫يم‬‫الق‬ ‫ها‬‫نعطي‬ ‫لة‬‫الدا‬ ‫ستدعي‬‫ن‬
‫تدعى‬ ‫الدالة‬ ‫تعريف‬ ‫في‬parameters‫الدالة‬ ‫استدعاء‬ ‫عند‬ ‫تعطى‬ ‫التي‬ ‫القيم‬ ‫بينما‬ ،(‫)معاملت‬
‫تدعى‬arguments.(‫)معطيات‬
‫الدالة‬ ‫معاملت‬ ‫استخدام‬
‫مثال‬7.2.‫الدالة‬ ‫معاملت‬ ‫استخدام‬
#!/usr/bin/python
# Filename: func_param.py
def printMax(a, b):
‫للفهرس‬ ‫عودة‬‫الدالة‬ ‫معاملت‬ ‫استخدام‬|51
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
if a > b:
print a, 'is maximum'
else:
print b, 'is maximum'
printMax(3, 4) # directly give literal values
x = 5
y = 7
printMax(x, y) # give variables as arguments
‫الخرْج‬
$ python func_param.py
4 is maximum
7 is maximum
‫يعمل‬ ‫كيف‬
‫باسهم‬ ‫دالهة‬ ‫ا‬‫ه‬‫عرفن‬ ،‫ا‬‫ه‬‫هن‬printMax‫تسهمى‬ ‫المعهاملت‬ ‫مهن‬ ‫اثنيهن‬ ‫نأخهذ‬ ‫حيهث‬a‫و‬b.‫واسهتنتجنا‬
‫للفادة‬ ‫بسيط‬ ‫باستخدام‬ ‫الكبر‬ ‫العدد‬if..else‫الكبر‬ ‫العدد‬ ‫طبعنا‬ ‫ثم‬.
‫للدالهة‬ ‫اسهتخدام‬ ‫أول‬ ‫فهي‬printMax‫المعطيهات‬ ‫أي‬ ‫العهداد؛‬ ‫نعطهي‬ ،.،‫الثهاني‬ ‫السهتخدام‬ ‫فهي‬
‫المتغيرات‬ ‫باستخدام‬ ‫الدالة‬ ‫نستدعي‬.printMax(x, y(‫المعطى‬ ‫قيمة‬ ‫إسناد‬ ‫إلى‬ ‫تؤدي‬x‫إلى‬
‫مل‬‫المعا‬a‫طى‬‫المع‬ ‫مة‬‫قي‬ ‫و‬y‫مل‬‫المعا‬ ‫لى‬‫إ‬ ‫سند‬‫ت‬b.‫لة‬‫الدا‬printMax‫قة‬‫الطري‬ ‫فس‬‫بن‬ ‫مل‬‫تع‬
‫الحالتين‬ ‫في‬.
‫المحلية‬ ‫المتغيرات‬
‫مهن‬ ‫حهال‬ ‫بهأي‬ ‫مرتبطهة‬ ‫تكهون‬ ‫ل‬ ‫فهإنه‬ ،‫الدالهة‬ ‫تعريهف‬ ‫داخهل‬ ‫المتغيهرات‬ ‫عهن‬ ‫بالهعلن‬ ‫تقهوم‬ ‫عنهدما‬
‫يرات‬‫المتغ‬ ‫سماء‬‫أ‬ .‫لة‬‫الدا‬ ‫يف‬‫تعر‬ ‫خارج‬ ‫سم‬‫ال‬ ‫فس‬‫ن‬ ‫مل‬‫تح‬ ‫لتي‬‫ا‬ ‫لخرى‬‫ا‬ ‫يرات‬‫المتغ‬ ‫مع‬ ‫لحوال‬‫ا‬
‫تعتهبر‬‫محليهة‬)local‫نطهاق‬ ‫يسهمى‬ ‫مها‬ ‫وههذا‬ ، ‫الدالهة‬ ‫داخهل‬ (‫مهدى‬)scope‫جميهع‬ .‫المتغيهر‬ (
.‫السم‬ ‫تعريف‬ ‫نقطة‬ ‫من‬ ‫بداية‬ ،‫فيها‬ ‫عنها‬ ‫أُعان‬ ‫التي‬ ‫اللبنة‬ ‫بمدى‬ ‫محدودة‬ ‫المتغيرات‬
‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬
‫مثال‬7.3.‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬
#!/usr/bin/python
# Filename: func_local.py
‫للفهرس‬ ‫عودة‬‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬|52
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
def func(x):
print 'x is', x
x = 2
print 'Changed local x to', x
x = 50
func(x)
print 'x is still', x
‫الخرْج‬
$python func_local.py
x is 50
Changed local x to 2
x is still 50
‫يعمل‬ ‫كيف‬
‫ا‬‫ه‬‫فيه‬ ‫تسهتخدم‬ ‫الهتي‬ ‫الهولى‬ ‫المهرة‬ ،‫الدالهة‬ ‫ههذه‬ ‫فهي‬‫قيمهة‬‫السهم‬x‫المعامهل‬ ‫قيمهة‬ ‫بيثهون‬ ‫تسهتخدم‬
‫الدالة‬ ‫في‬ ‫عنه‬ ‫المعلن‬.
‫أسندناالقيمة‬ ‫ذلك‬ ‫بعد‬2‫إلى‬x.‫السم‬x‫نغير‬ ‫عندما‬ ‫لذا‬ ‫لدينا؛‬ ‫التي‬ ‫الدالة‬ ‫داخل‬ ‫محليا‬ ‫يعتبر‬
‫قيمة‬x‫تظل‬ ،‫الدالة‬ ‫في‬x‫هي‬ ‫كما‬ ‫الرئيسة‬ ‫اللبنة‬ ‫في‬ ‫المعرفة‬.
‫إفادة‬ ‫في‬print‫قيمة‬ ‫أن‬ ‫من‬ ‫نتأكد‬ ‫الخيرة‬x‫بالفعل‬ ‫تُمس‬ ‫لم‬ ‫الرئيسة‬ ‫اللبنة‬ ‫في‬.
‫الفادة‬ ‫استخدام‬global
‫ا‬‫ه‬‫محلي‬ ‫ليهس‬ ‫السهم‬ ‫أن‬ ‫بيثهون‬ ‫ار‬‫ه‬‫إخب‬ ‫فعليهك‬ ،‫الدالهة‬ ‫ارج‬‫ه‬‫خ‬ ‫معهرّف‬ ‫اسهم‬ ‫إلهى‬ ‫قيمهة‬ ‫سناد‬‫إ‬ ‫أردت‬ ‫إذا‬
‫ولكنه‬‫عمومي‬)global.(‫إفادة‬ ‫باستخدام‬ ‫ذلك‬ ‫ويتم‬global.‫متغير‬ ‫إلى‬ ‫قيمة‬ ‫إسناد‬ ‫يمكن‬ ‫ل‬
‫إفادة‬ ‫استخدام‬ ‫دون‬ ‫الدالة‬ ‫خارج‬ ‫معرف‬global.
‫الدالة‬ ‫خارج‬ ‫المحددة‬ ‫المتغيرات‬ ‫قيم‬ ‫استخدام‬ ‫يمكنك‬)‫نفس‬ ‫يحمل‬ ‫متغير‬ ‫وجود‬ ‫عدم‬ ‫بافتراض‬
‫لة‬‫الدا‬ ‫خل‬‫دا‬ ‫سم‬‫ال‬.(‫قارئ‬‫ل‬ ‫ضح‬‫الوا‬ ‫ير‬‫غ‬ ‫من‬ ‫عل‬‫يج‬ ‫لنه‬ ‫به‬‫تجن‬ ‫ضل‬‫ويف‬ ‫هذا‬‫ب‬ ‫صح‬‫يُن‬ ‫ل‬ ‫أنه‬ ‫ير‬‫غ‬
‫المتغير‬ ‫هذا‬ ‫عُرّف‬ ‫أين‬ ‫البرنامج‬.‫إفادة‬ ‫استخدام‬global‫معرّف‬ ‫المتغير‬ ‫أن‬ ‫إلى‬ ‫بوضوح‬ ‫يشير‬
‫خارجية‬ ‫لبنة‬ ‫في‬.
‫مثال‬7.4.‫الفادة‬ ‫استخدام‬global
#!/usr/bin/python
‫للفهرس‬ ‫عودة‬‫الفادة‬ ‫استخدام‬global|53
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
# Filename: func_global.py
def func():
global x
print 'x is', x
x = 2
print 'Changed global x to', x
x = 50
func()
print 'Value of x is', x
‫الخرْج‬
$ python func_global.py
x is 50
Changed global x to 2
Value of x is 2
‫يعمل‬ ‫كيف‬
‫الفهادة‬ ‫تسهتخدم‬global‫أن‬ ‫لهعلن‬x‫إلهى‬ ‫قيمهة‬ ‫نسهند‬ ‫عنهدما‬ ‫ولههذا؛‬ ،‫عمهومي‬ ‫متغيهر‬x‫داخهل‬
‫قيمة‬ ‫نستخدم‬ ‫عندما‬ ‫يظهر‬ ‫التغيير‬ ‫هذا‬ ‫فإن‬ ،‫الدالة‬x‫الرئيسة‬ ‫اللبنة‬ ‫في‬.
‫متغيهر‬ ‫مهن‬ ‫أكهثر‬ ‫تحديهد‬ ‫يمكنهك‬global‫الفهادة‬ ‫نفهس‬ ‫باسهتخدام‬ ‫واحهد‬global.‫سهبيل‬ ‫علهى‬
‫المثال‬:global x, y, z.
‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬
‫الهدوال‬ ‫بعهض‬ ‫عاملت‬‫م‬ ‫جعهل‬ ‫فهي‬ ‫ترغهب‬ ‫قهد‬‫اختياريهة‬‫يرغهب‬ ‫لهم‬ ‫ال‬‫ه‬‫ح‬ ‫فهي‬ ‫مبدئيهة‬ ‫قيهم‬ ‫واسهتخدام‬
‫يمكنك‬ .‫للمعطيات‬ ‫مبدئية‬ ‫قيم‬ ‫باستخدام‬ ‫ذلك‬ ‫ويتم‬ .‫المعاملت‬ ‫لهذه‬ ‫قيم‬ ‫إعطاء‬ ‫في‬ ‫المستخدم‬
) ‫بعلمهة‬ ‫الدالهة‬ ‫تعريهف‬ ‫فهي‬ ‫المعامهل‬ ‫اسهم‬ ‫بإتبهاع‬ ‫للمعطيهات‬ ‫المبدئيهة‬ ‫القيهم‬ ‫تحديهد‬=‫متبوعهة‬ (
.‫المبدئية‬ ‫بالقيمة‬
‫مهن‬ ‫أكهثر‬ ‫بشهيء‬ ‫ذلهك‬ ‫شهرح‬ ‫وسهيتم‬ .‫ثابتها‬ ‫تكهون‬ ‫أن‬ ‫ينبغهي‬ ‫للمعطهى‬ ‫المبدئيهة‬ ‫القيمهة‬ ‫بهأن‬ ‫ا‬‫ه‬‫علم‬
.‫هذا‬ ‫تذكر‬ ‫فقط‬ ،‫اﻵن‬ ‫اما‬ .‫لحقة‬ ‫فصول‬ ‫في‬ ‫التفصيل‬
‫للفهرس‬ ‫عودة‬‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬|54
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬
‫مثال‬7.5.‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬
#!/usr/bin/python
# Filename: func_default.py
def say(message, times = 1):
print message * times
say('Hello')
say('World', 5)
‫الخرْج‬
$python func_default.py
Hello
WorldWorldWorldWorldWorld
‫يعمل‬ ‫كيف‬
‫المسماة‬ ‫الدالة‬ ‫تستخدم‬say‫حسبمانريد‬ ‫المرات‬ ‫من‬ ‫عددا‬ ‫ما‬ ‫سلسلة‬ ‫لطباعة‬.‫أية‬ ‫نعطها‬ ‫لم‬ ‫وإذا‬
‫فقهط‬ ‫واحهدة‬ ‫لمهرة‬ ‫الجملهة‬ ‫طباعهة‬ ‫ههو‬ ‫الفتراضهي‬ ‫فالوضهع‬ ،‫قيمهة‬.‫جعهل‬ ‫طريهق‬ ‫عن‬ ‫ذلهك‬ ‫نحقهق‬
‫للمعامل‬ ‫المبدئية‬ ‫المعطى‬ ‫قيمة‬times‫تساوي‬1.
‫للدالهة‬ ‫اسهتخدام‬ ‫أول‬ ‫فهي‬say‫واحهدة‬ ‫مهرة‬ ‫الجملهة‬ ‫بطباعهة‬ ‫ههي‬ ‫فتقهوم‬ ‫فقهط‬ ‫النهص‬ ‫نعطهي‬ ،.‫فهي‬
‫والمعطى‬ ‫النص‬ ‫من‬ ‫كل‬ ‫نعطيها‬ ‫الثانية‬ ‫المرة‬5‫نريد‬ ‫أننا‬ ‫يعني‬ ‫والذي‬‫قول‬‫مرات‬ ‫خمس‬ ‫الجملة‬.
‫هام‬
‫مبدئيهة؛‬ ‫معطيهات‬ ‫قيهم‬ ‫تُعطهى‬ ‫أن‬ ‫يمكهن‬ ‫فقهط‬ ‫املت‬‫ه‬‫المع‬ ‫قائمهة‬ ‫نهايهة‬ ‫فهي‬ ‫الهتي‬ ‫املت‬‫ه‬‫المع‬
‫معطى‬ ‫قيمة‬ ‫بدون‬ ‫معامل‬ ‫قبل‬ ‫لمعامل‬ ‫مبدئية‬ ‫معطى‬ ‫قيمة‬ ‫إعطاء‬ ‫يمكن‬ ‫ل‬ ‫أخرى‬ ‫بعبارة‬
‫مبدئية‬.
‫وضهعيتها‬ ‫حسهب‬ ‫المعهاملت‬ ‫إلهى‬ ‫تسهند‬ ‫القيهم‬ ‫أن‬ ‫بسهبب‬ ‫وذلهك‬.‫المثهال‬ ‫سهبيل‬ ‫علهى‬:def
func(a, b=5(‫بينما‬ ‫صالحة‬def func(a=5, b(‫صالحة‬ ‫غير‬.
‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬
‫حينئذ‬ ،‫فقط‬ ‫منها‬ ‫بعضا‬ ‫تحدد‬ ‫أن‬ ‫وتريد‬ ‫المعاملت‬ ‫من‬ ‫العديد‬ ‫ذات‬ ‫الدوال‬ ‫بعض‬ ‫لديك‬ ‫كان‬ ‫إذا‬
‫يسهمى‬ ‫مها‬ ‫وههذا‬ - ‫تسهميتها‬ ‫طريهق‬ ‫عهن‬ ‫المعهاملت‬ ‫لههذا‬ ‫قيمها‬ ‫تعطهي‬ ‫أن‬ ‫يمكنهك‬‫الكلمهات‬ ‫معطيات‬
‫المفتاحية‬)keyword arguments‫الموضع‬ ‫من‬ ‫بدل‬ (‫المفتاحية‬ ‫)الكلمة‬ ‫السم‬ ‫نستخدم‬ - (
‫للفهرس‬ ‫عودة‬‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬|55
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫الدالة‬ ‫معطيات‬ ‫لتحديد‬ (‫الوقت‬ ‫طوال‬ ‫نستخدمه‬ ‫كنا‬ ‫)الذي‬
‫ولهذا‬‫ميزتان‬‫بترتيب‬ ‫الهتمام‬ ‫إلى‬ ‫حاجة‬ ‫في‬ ‫لسنا‬ ‫أننا‬ ‫حيث‬ ‫أسهل‬ ‫يكون‬ ‫الدالة‬ ‫استخدام‬ ‫الولى؛‬ :
‫للمعاملت‬ ‫أن‬ ‫بافتراض‬ ،‫فقط‬ ‫نريدها‬ ‫التي‬ ‫للوسائط‬ ‫قيم‬ ‫إعطاء‬ ‫نستطيع‬ ‫أننا‬ ‫والثانية؛‬ .‫المعطيات‬
.‫مبدئية‬ ‫معطيات‬ ‫قيم‬ ‫الخرى‬
‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬
‫مثال‬7.6.‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬
#!/usr/bin/python
# Filename: func_key.py
def func(a, b=5, c=10):
print 'a is', a, 'and b is', b, 'and c is', c
func(3, 7)
func(25, c=24)
func(c=50, a=100)
‫الخرْج‬
$ python func_key.py
a is 3 and b is 7 and c is 10
a is 25 and b is 5 and c is 24
a is 100 and b is 5 and c is 50
‫يعمل‬ ‫كيف‬
‫سماه‬‫الم‬ ‫لة‬‫الدا‬func‫مع‬ ‫عاملن‬‫م‬ ‫يه‬‫يل‬ ،‫ياته‬‫لمعط‬ ‫ية‬‫مبدئ‬ ‫يم‬‫ق‬ ‫بدون‬ ‫حد‬‫وا‬ ‫مل‬‫معا‬ ‫لى‬‫ع‬ ‫توي‬‫تح‬
‫لمعطياتهما‬ ‫مبدئية‬ ‫قيم‬.
‫الهول‬ ‫السهتخدام‬ ‫فهي‬func(3, 7(‫المعامهل‬ ،a‫القيمهة‬ ‫يأخهذ‬3‫والمعامهل‬ ،b‫القيمهة‬ ‫يأخهذ‬5
‫والمعامل‬c‫المبدئية‬ ‫القيمة‬ ‫يأخذ‬10.
‫ثاني‬‫ال‬ ‫ستخدام‬‫ال‬ ‫في‬func(25, c=24(‫ير‬‫المتغ‬a‫مة‬‫القي‬ ‫خذ‬‫يأ‬25‫طى‬‫المع‬ ‫موضع‬ ‫سبب‬‫ب‬.
‫المعامل‬ ‫بعدها‬c‫القيمة‬ ‫على‬ ‫يحصل‬24‫المتغير‬ ‫بينما‬b‫المبدئية‬ ‫قيمته‬ ‫على‬ ‫يحصل‬5.
‫الثهالث‬ ‫السهتخدام‬ ‫فهي‬func(c=50, a=100(‫بكلمهات‬ ‫معطيهات‬ ‫كامهل‬ ‫بشهكل‬ ‫اسهتخدمنا‬ ‫؛‬
‫القيهم‬ ‫لتحديهد‬ ‫مفتاحيهة‬.‫للمعامهل‬ ‫المحهددة‬ ‫القيمهة‬ ‫أن‬ ‫لحهظ‬c‫قبهل‬ ‫موضهوعة‬a‫أننها‬ ‫رغهم‬ ‫علهى‬
‫حددنا‬a‫قبل‬c‫الدالة‬ ‫تعريف‬ ‫أثناء‬.
‫للفهرس‬ ‫عودة‬‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬|
56
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الفادة‬return
‫الفادة‬ ‫تستخدم‬return‫في‬‫الرجوع‬‫اختياريا‬ ‫يمكننا‬ . ‫الدالة‬ ‫من‬ ‫الخروج‬ ‫أخرى‬ ‫بعبارة‬ ،‫دالة‬ ‫من‬
‫قيمة‬ ‫إرجاع‬.‫أيضا‬ ‫الدالة‬ ‫من‬
‫الفادة‬ ‫استخدام‬return
‫مثال‬7.7.‫الفادة‬ ‫استخدام‬return
#!/usr/bin/python
# Filename: func_return.py
def maximum(x, y):
if x > y:
return x
else:
return y
print maximum(2, 3)
‫الخرْج‬
$ python func_return.py
‫يعمل‬ ‫كيف‬
‫الدالة‬maximum‫المعطاة‬ ‫العداد‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫وهي‬ ،‫المعاملت‬ ‫من‬ ‫الكبر‬ ‫الحد‬ ‫لنا‬ ‫ترجع‬
‫للدالة‬.‫إفادة‬ ‫تستعمل‬ ‫وهي‬if..else‫وبعدها‬ ‫الكبر‬ ‫العدد‬ ‫قيمة‬ ‫على‬ ‫للعثور‬ ‫بسيطة‬‫ترجع‬‫لنا‬
‫القيمة‬ ‫تلك‬.
‫ملحظة‬:‫إفادة‬ ‫تكون‬ ‫عندما‬return‫تساوي‬ ‫فإنها‬ ‫قيمة‬ ‫أية‬ ‫بدون‬None.‫تعتبر‬None‫نوعا‬
‫شيء‬ ‫ل‬ ‫ثل‬‫يم‬ ‫ثون‬‫بي‬ ‫في‬ ‫صا‬‫خا‬.‫أي‬ ‫مل‬‫يح‬ ‫ل‬ ‫ير‬‫المتغ‬ ‫أن‬ ‫ني‬‫لتع‬ ‫ستخدم‬‫ت‬ ‫ثال‬‫الم‬ ‫سبيل‬ ‫لى‬‫ع‬ ‫هي‬‫ف‬
‫قيمته‬ ‫كانت‬ ‫إذا‬ ‫قيمة‬None.
‫ادة‬‫ه‬‫إف‬ ‫علهى‬ ‫ضهمنيا‬ ‫تحتهوي‬ ‫دالهة‬ ‫كهل‬return None‫ادة‬‫ه‬‫إف‬ ‫تكتهب‬ ‫لهم‬ ‫ا‬‫ه‬‫م‬ ‫نهايتهها‬ ‫فهي‬return
‫بك‬ ‫الخاصة‬.‫بتنفيذ‬ ‫ذلك‬ ‫رؤية‬ ‫ويمكنك‬literal>print someFunction()
def someFunction():
pass
‫للفهرس‬ ‫عودة‬‫الفادة‬ ‫استخدام‬return|57
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫إفادة‬pass
‫الفادات‬ ‫من‬ ‫فارغة‬ ‫لبنة‬ ‫إلى‬ ‫للشارة‬ ‫بيثون‬ ‫في‬ ‫تستخدم‬.
‫التوثيق‬ ‫جمل‬
‫تدعى‬ ‫أنيقة‬ ‫ميزة‬ ‫لديها‬ ‫بيثون‬‫التوثيق‬ (‫)سلسل‬ ‫جمل‬)documentation strings‫والتي‬ (
‫المختصر‬ ‫اسمها‬ ‫خلل‬ ‫من‬ ‫عادة‬ ‫إليها‬ ‫يشار‬docstrings‫عليك‬ ‫يجب‬ ‫هامة‬ ‫أداة‬ ‫التوثيق‬ ‫جمل‬ .
.‫للفهم‬ ‫سهولة‬ ‫أكثر‬ ‫وتجعله‬ ،‫أفضل‬ ‫بشكل‬ ‫البرنامج‬ ‫توثيق‬ ‫على‬ ‫تساعد‬ ‫إنها‬ ‫حيث‬ ‫منها‬ ‫تستفيد‬ ‫أن‬
‫البرنامهج‬ ‫يعمهل‬ ‫ا‬‫ه‬‫بينم‬ ‫مثل‬ ‫دالهة‬ ‫من‬ ‫التوثيهق‬ ‫جمهل‬ ‫علهى‬ ‫الحصهول‬ ‫من‬ -‫للعجهب‬ ‫ا‬‫ه‬‫-وي‬ ‫حهتى‬ ‫ا‬‫ه‬‫يمكنن‬
!‫بالفعل‬
‫التوثيق‬ ‫جمل‬ ‫استخدام‬
‫مثال‬7.8.‫التوثيق‬ ‫جمل‬ ‫استخدام‬
#!/usr/bin/python
# Filename: func_doc.py
def printMax(x, y):
'''Prints the maximum of two numbers.
The two values must be integers.'''
x = int(x) # convert to integers, if possible
y = int(y)
if x > y:
print x, 'is maximum'
else:
print y, 'is maximum'
printMax(3, 5)
print printMax.__doc__
‫الخرْج‬
$ python func_doc.py
‫للفهرس‬ ‫عودة‬‫التوثيق‬ ‫جمل‬ ‫استخدام‬|58
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
5 is maximum
Prints the maximum of two numbers.
The two values must be integers.
‫يعمل‬ ‫كيف‬
‫هي‬ ‫الدالة‬ ‫من‬ ‫الول‬ ‫المنطقي‬ ‫السطر‬ ‫في‬ ‫النصية‬ ‫الجملة‬‫توثيق‬ ‫جملة‬‫الدالة‬ ‫هذه‬.‫جمل‬ ‫أن‬ ‫لحظ‬
‫على‬ ‫أيضا‬ ‫تنطبق‬ ‫التوثيق‬‫الوحدات‬‫و‬‫الصناف‬‫الخاصة‬ ‫فصولها‬ ‫في‬ ‫بشرحها‬ ‫نقوم‬ ‫سوف‬ ‫والتي‬.
‫يبدأ‬ ‫سطر‬ ‫أول‬ ‫حيث‬ ‫السطر‬ ‫متعددة‬ ‫نصية‬ ‫سلسلة‬ ‫استخدام‬ ‫هي‬ ‫التوثيق‬ ‫جما‬ ‫في‬ ‫المتبعة‬ ‫العادة‬
‫بنقطة‬ ‫وينتهي‬ ‫كبير‬ ‫بحرف‬.‫المفصل‬ ‫الشرح‬ ‫من‬ ‫بجملة‬ ‫متبوعا‬ ‫فارغ‬ ‫الثاني‬ ‫السطر‬ ‫ذلك‬ ‫بعد‬
‫الثالث‬ ‫السطر‬ ‫في‬ ‫يبدأ‬.‫بشدة‬ ‫ينصح‬‫غير‬ ‫دوالك‬ ‫لكل‬ ‫التوثيق‬ ‫جمل‬ ‫كل‬ ‫في‬ ‫النظام‬ ‫هذا‬ ‫تتبع‬ ‫أن‬
‫البديهية‬.
‫الدالهة‬ ‫توثيهق‬ ‫جملهة‬ ‫إلهى‬ ‫الوصهول‬ ‫يمكننها‬printMax‫خاصهية‬ ‫باسهتخدام‬__doc__)‫لحهظ‬
‫المزدوجة‬ ‫المنخفضة‬ ‫الشرطة‬(‫بالدالة‬ ‫الخاصة‬.‫تعامل‬ ‫بيثون‬ ‫أن‬ ‫تذكر‬ ‫فقط‬‫شيء‬ ‫كل‬‫أنه‬ ‫على‬
‫أيضا‬ ‫الدوال‬ ‫يشمل‬ ‫وهذا‬ ،‫كائن‬.‫المتعلق‬ ‫الفصل‬ ‫في‬ ‫الكائنات‬ ‫عن‬ ‫المزيد‬ ‫نتعلم‬ ‫وسوف‬‫بالطبقات‬.
‫اسهتخدمت‬ ‫قهد‬ ‫كنهت‬ ‫اذا‬help()‫التوثيهق‬ ‫مل‬‫ج‬ ‫اسهتخدام‬ ‫بالفعهل‬ ‫رأيهت‬ ‫نك‬‫أ‬ ‫فلبهد‬ ، ‫بيثهون‬ ‫فهي‬.
‫صية‬‫خا‬ ‫لب‬‫ج‬ ‫هو‬ ‫له‬‫تفع‬ ‫ما‬ ‫كل‬__doc__‫يق‬‫أن‬ ‫سلوب‬‫بأ‬ ‫لك‬ ‫ضها‬‫وتعر‬ ‫لة‬‫الدا‬ ‫هذه‬‫ل‬ ‫ية‬‫المنتم‬.
‫أعله‬ ‫هة‬‫ه‬‫المبين‬ ‫هة‬‫ه‬‫الدال‬ ‫هى‬‫ه‬‫عل‬ ‫هك‬‫ه‬‫ذل‬ ‫هة‬‫ه‬‫تجرب‬ ‫هك‬‫ه‬‫يمكن‬-‫هِف‬‫ه‬‫أض‬ ‫هط‬‫ه‬‫فق‬help(printMax(‫هي‬‫ه‬‫ف‬
‫برنامجك‬.‫مفتاح‬ ‫تضغط‬ ‫أن‬ ‫وتذكر‬q‫من‬ ‫للخروج‬‫المساعدة‬.
‫الطريقة‬ ‫بذات‬ ‫برنامجك‬ ‫وثائق‬ ‫استحضار‬ ‫يمكنها‬ ‫مأتمتة‬ ‫الدوات‬ ‫توجد‬.‫فإنني‬ ،‫لذا‬‫بشدة‬ ‫أنصح‬
‫ا‬‫ه‬‫تكتبه‬ ‫بديهيهة‬ ‫غيهر‬ ‫دالهة‬ ‫لهي‬ ‫توثيهق‬ ‫جمهل‬ ‫تسهتخدم‬ ‫أن‬.‫الهمر‬pydoc‫توزيعهة‬ ‫مهع‬ ‫يهأتي‬ ‫الهذي‬
‫كمثل‬ ‫يعمل‬ ‫بيثون‬help()‫التوثيق‬ ‫جمل‬ ‫مستخدما‬.
‫الخلصة‬
‫جوانبها‬ ‫كافة‬ ‫نغطي‬ ‫لم‬ ‫أننا‬ ‫لحظ‬ ‫ولكن‬ ،‫بالدوال‬ ‫المتعلقة‬ ‫الجوانب‬ ‫من‬ ‫الكثير‬ ‫رأينا‬ ‫لقد‬.‫ورغم‬
‫بيثون‬ ‫دوال‬ ‫ناحية‬ ‫من‬ ‫يوم‬ ‫كل‬ ‫ستستخدمها‬ ‫التي‬ ‫المور‬ ‫معظم‬ ‫بتغطية‬ ‫بالفعل‬ ‫قمنا‬ ‫فقد‬ ‫ذلك‬.
‫بيثون‬ ‫وحدات‬ ‫وإنشاء‬ ‫باستخدام‬ ‫نقوم‬ ‫كيف‬ ‫نرى‬ ‫سوف‬ ‫يلي؛‬ ‫وفيما‬.
‫للفهرس‬ ‫عودة‬‫الخلصة‬|59
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬8‫الوحدات‬ .
‫المحتويات‬ ‫قائمة‬
‫مقدمة‬
‫الوحدة‬ ‫استخدام‬sys
. ‫المصرّفة‬ ‫البيتات‬ ‫ملفات‬pyc
‫الفادة‬from..import
__ ‫خاصية‬name‫للوحدة‬ __
__ ‫استخدام‬name‫الوحدة‬ __
‫الخاصة‬ ‫وحداتك‬ ‫عمل‬
‫الخاصة‬ ‫وحداتك‬ ‫إنشاء‬
from..import
‫الدالة‬dir()
‫الدالة‬ ‫استخدام‬dir
‫الخلصة‬
‫مقدمة‬
‫قه‬‫مهرة‬ ‫الهدوال‬ ‫تعريهف‬ ‫طريهق‬ ‫عهن‬ ‫برنامجهك‬ ‫فهي‬ ‫الكهود‬ ‫اسهتخدام‬ ‫إعهادة‬ ‫يمكنهك‬ ‫كيهف‬ ‫رأيهت‬ ‫د‬
‫واحدة‬.‫كما‬ ‫نعم‬ ‫تكتبها؟‬ ‫التي‬ ‫الخرى‬ ‫البرامج‬ ‫في‬ ‫الدوال‬ ‫من‬ ‫عدد‬ ‫استخدام‬ ‫إعادة‬ ‫أردت‬ ‫لو‬ ‫ماذا‬
‫الوحدات‬ ‫هو‬ ‫الجواب‬ ،‫خمنت‬ ‫قد‬)modules.(‫الدوال‬ ‫جميع‬ ‫يحتوي‬ ‫ملف‬ ‫هي‬ ‫ببساطة‬ ‫الوحدة‬
‫بتعريفها‬ ‫قمت‬ ‫التي‬ ‫والمتغيرات‬.،‫أخرى‬ ‫برامج‬ ‫في‬ ‫الوحدة‬ ‫هذه‬ ‫استخدام‬ ‫ولعادة‬‫يجب‬‫يكون‬ ‫أن‬
‫بامتداد‬ ‫الوحدة‬ ‫ملف‬ ‫اسم‬.py.
‫الخرى‬ ‫للبرامج‬ ‫يمكن‬‫استيراد‬‫وظيفتها‬ ‫من‬ ‫للستفادة‬ ‫الوحدة‬.‫أمكننا‬ ‫التي‬ ‫الطريقة‬ ‫نفس‬ ‫وهي‬
‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫استخدام‬ ‫بها‬.‫القياسيه‬ ‫المكتبة‬ ‫وحدات‬ ‫استخدام‬ ‫كيفية‬ ‫نرى‬ ‫سوف‬ ،‫أول‬.
‫الوحدة‬ ‫استخدام‬sys
‫إفادة‬sys
‫مثال‬8.1.‫الوحدة‬ ‫استخدام‬sys
#!/usr/bin/python
# Filename: using_sys.py
import sys
print 'The command line arguments are:'
for i in sys.argv:
‫للفهرس‬ ‫عودة‬‫فصل‬8.‫الوحدات‬|60
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
print i
print 'nnThe PYTHONPATH is', sys.path, 'n'
‫الخرْج‬
$ python using_sys.py we are arguments
The command line arguments are:
using_sys.py
we
are
arguments
The PYTHONPATH is ['/home/swaroop/byte/code', '/usr/lib/python23.zip',
'/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2',
'/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload',
'/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0']
‫يعمل‬ ‫كيف‬
‫قمنا‬ ‫البداية‬ ‫في‬‫باستيراد‬‫الوحدة‬sys‫الفادة‬ ‫باستخدام‬import.‫بيثون‬ ‫إخبار‬ ‫هذا‬ ‫يعني‬ ،‫مبدئيا‬
‫الوحدة‬ ‫تلك‬ ‫استخدام‬ ‫نريد‬ ‫أننا‬.‫الوحدة‬sys‫والبيئة‬ ‫بيثون‬ ‫بمفسر‬ ‫ترتبط‬ ‫وظائف‬ ‫على‬ ‫تحتوي‬
‫به‬ ‫الخاصة‬.
‫إفهادة‬ ‫بيثهون‬ ‫تنفهذ‬ ‫عنهدما‬import sys‫الوحهدة‬ ‫عهن‬ ‫تبحهث‬ ‫فإنهها‬ ،sys.py‫الدلهة‬ ‫أحهد‬ ‫فهي‬
‫المتغيهر‬ ‫فهي‬ ‫المسهرودة‬sys.path.‫اللبنهة‬ ‫فهي‬ ‫الموجهودة‬ ‫الفهادات‬ ‫تشهغيل‬ ‫يتهم‬ ‫الملهف‬ ‫وجهد‬ ‫إذا‬‫ه‬‫ف‬
‫الوحدة‬ ‫تصبح‬ ‫وبعدها‬ ‫بالوحدة‬ ‫الخاصة‬ ‫الرئيسة‬‫متاحة‬‫للستعمال‬.‫يتم‬ ‫الستبداء‬ ‫هذا‬ ‫أن‬ ‫لحظ‬
‫عند‬ ‫فقط‬‫أول‬‫الوحدة‬ ‫فيها‬ ‫تستدعى‬ ‫مرة‬.‫أن‬ ‫اعلم‬ ‫كذلك‬'sys'‫اختصار‬'system) '‫نظام‬.(
‫المتغير‬argv‫الوحدة‬ ‫في‬sys‫النقطي‬ ‫الترقيم‬ ‫باستخدام‬ ‫إليه‬ ‫يشار‬-sys.argv-‫مميزات‬ ‫أحد‬
‫ير‬‫متغ‬ ‫ية‬‫أ‬ ‫مع‬ ‫شتبه‬‫ي‬ ‫ل‬ ‫سم‬‫ال‬ ‫أن‬ ‫سلوب‬‫ال‬ ‫هذا‬argv‫جك‬‫برنام‬ ‫في‬ ‫ستخدم‬‫م‬ ‫خر‬‫آ‬.‫كذلك‬‫و‬
‫الوحدة‬ ‫من‬ ‫جزءا‬ ‫السم‬ ‫ذلك‬ ‫كون‬ ‫على‬ ‫بوضوح‬ ‫يدل‬ ‫فإنه‬sys.
‫المتغير‬sys.argv‫عن‬ ‫عبارة‬‫قائمة‬‫السلسل‬ ‫من‬)‫في‬ ‫بالتفصيل‬ ‫القوائم‬ ‫ستشرح‬‫لحقة‬ ‫أقسام‬.(
‫فإن‬ ‫يدا‬‫تحد‬ ‫كثر‬‫أ‬ ‫شكل‬‫وب‬sys.argv‫مة‬‫قائ‬ ‫لى‬‫ع‬ ‫توي‬‫يح‬‫لوامر‬‫ا‬ ‫سطر‬ ‫معطيات‬،‫خرى‬‫أ‬ ‫بارة‬‫بع‬
‫الوامر‬ ‫سطر‬ ‫في‬ ‫برنامجك‬ ‫إلى‬ ‫الممررة‬ ‫المعطيات‬.
‫معطيهات‬ ‫لتحديهد‬ ‫طريقهة‬ ‫عهن‬ ‫فهابحث‬ ‫برامجهك‬ ‫وتشهغيل‬ ‫لكتابهة‬ ‫تطهوير‬ ‫بيئة‬ ‫تسهتخدم‬ ‫كنهت‬ ‫إذا‬
‫التطوير‬ ‫بيئة‬ ‫قوائم‬ ‫في‬ ‫لبرنامجك‬ ‫الوامر‬ ‫سطر‬.
‫ننفذ‬ ‫عندما‬ ‫وهنا؛‬python using_sys.py we are arguments‫الوحدة‬ ‫بتشغيل‬ ‫نقوم‬ ،
‫للفهرس‬ ‫عودة‬‫فصل‬8.‫الوحدات‬|61
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
using_sys.py‫المر‬ ‫باستخدام‬python‫تمريرها‬ ‫يتم‬ ‫معطيات‬ ‫له‬ ‫التالية‬ ‫الخرى‬ ‫والشياء‬
‫البرنامج‬ ‫إلى‬.‫المتغير‬ ‫في‬ ‫بتخزينها‬ ‫بيثون‬ ‫تقوم‬sys.argv.
‫قائمهة‬ ‫فهي‬ ‫معطهى‬ ‫أول‬ ‫ا‬‫ه‬‫دائم‬ ‫ههو‬ ‫يعمهل‬ ‫الهذي‬ ‫البرنامهج‬ ‫اسهم‬ ‫أن‬ ‫تهذكر‬sys.argv.‫ههذه‬ ‫فهي‬ ‫لهذا‬
‫هدينا‬‫ه‬‫ل‬ ‫هيكون‬‫ه‬‫س‬ ‫هة‬‫ه‬‫الحال‬'using_sys.py'‫ك‬sys.argv[0[‫و‬'we'‫ك‬sys.argv[1[‫و‬'
are'‫ك‬sys.argv[2[‫و‬'arguments'‫ك‬sys.argv[3[.ّ‫العهد‬ ‫تبهدأ‬ ‫بيثهون‬ ‫أن‬ ‫لحهظ‬
‫من‬0‫من‬ ‫وليس‬1.
‫توي‬‫يح‬sys.path‫ها‬‫من‬ ‫حدات‬‫الو‬ ‫ستيراد‬‫ا‬ ‫تم‬‫ي‬ ‫لتي‬‫ا‬ ‫لة‬‫الد‬ ‫سماء‬‫بأ‬ ‫مة‬‫قائ‬ ‫لى‬‫ع‬.‫أن‬ ‫ظة‬‫ملح‬ ‫مع‬
‫فهي‬ ‫سلسهلة‬ ‫أول‬sys.path‫ههو‬ ‫الحهالي‬ ‫الهدليل‬ ‫أن‬ ‫إلهى‬ ‫تشهير‬ ‫الفارغهة‬ ‫السلسهلة‬ ‫ههذه‬ – ‫فارغهة‬
‫من‬ ‫جزء‬ ‫كذلك‬sys.path‫البيئة‬ ‫متغير‬ ‫نفسه‬ ‫هو‬ ‫والذي‬ ،PYTHONPATH.‫أن‬ ‫هذا‬ ‫يعني‬
‫شرة‬‫مبا‬ ‫حالي‬‫ال‬ ‫لدليل‬‫ا‬ ‫في‬ ‫جودة‬‫المو‬ ‫حدات‬‫الو‬ ‫ستيراد‬‫ا‬ ‫نك‬‫بإمكا‬.‫ضع‬‫ت‬ ‫أن‬ ‫يك‬‫عل‬ ‫سيكون‬‫ف‬ ‫وإل‬
‫في‬ ‫المسرودة‬ ‫الدلة‬ ‫هذه‬ ‫أحد‬ ‫في‬ ‫الوحدة‬sys.path.
. ‫المصرّفة‬ ‫البيتات‬ ‫ملفات‬pyc
.‫أسرع‬ ‫بشكل‬ ‫مل‬‫تع‬ ‫ها‬‫لجعل‬ ‫الحيل‬ ‫ببعض‬ ‫قوم‬‫ت‬ ‫بيثون‬ ‫فإن‬ ‫لذا‬ ،‫نسبيا‬ ‫مكلّف‬ ‫أمر‬ ‫وحدة‬ ‫استيراد‬
‫بملفهات‬ ‫يسهمى‬ ‫مها‬ ‫إنشهاء‬ ‫ههي‬ ‫الطهرق‬ ‫ههذه‬ ‫أحهد‬‫المصهرفة‬ ‫البيتهات‬)byte-compiled‫ذات‬ (
‫المتهداد‬.pyc‫تهذكر‬ ‫ههل‬ ) ‫إليهها‬ ‫البرامهج‬ ‫بيثهون‬ ‫تحهول‬ ‫الهتي‬ ‫البينيهة‬ ‫بالصهورة‬ ‫يرتبهط‬ ‫الهذي‬
‫بيثون‬ ‫عمل‬ ‫طريقة‬ ‫في‬ ‫المقدمة‬‫الملهف‬ ‫ههذا‬ .(‫؟‬.pyc‫المهرة‬ ‫فهي‬ ‫الوحهدة‬ ‫تسهتورد‬ ‫عنهدما‬ ‫مفيهد‬
‫أثنهاء‬ ‫المطلهوب‬ ‫المعالجهة‬ ‫جهزء‬ ‫أن‬ ‫حيهث‬ ‫سهرعة‬ ‫أكهثر‬ ‫وسهيكون‬ - ‫مختلهف‬ ‫برنامهج‬ ‫مهن‬ ‫التاليهة‬
‫منصهة‬ ‫عهن‬ ‫مسهتقلة‬ ‫ههذه‬ ‫المصهرّفة‬ ‫البيتهات‬ ‫ملفهات‬ ،‫أيضها‬ .‫بالفعهل‬ ‫عملهه‬ ‫تهم‬ ‫قهد‬ ‫الوحهدة‬ ‫اسهتيراد‬
‫ملفات‬ ‫هي‬ ‫ما‬ ‫عرفنا‬ ‫قد‬ ‫نكون‬ ‫وبذلك‬ .‫العمل‬.pyc.
‫الفادة‬from..import
‫المتغيهر‬ ‫اسهتيراد‬ ‫أردت‬ ‫إذا‬argv‫كتابهة‬ ‫)لتجنهب‬ ‫برنامجهك‬ ‫داخهل‬sys.،(‫ريهده‬ ‫ت‬ ‫مهرة‬ ‫كهل‬
‫هادة‬‫ه‬‫إف‬ ‫هتخدام‬‫ه‬‫اس‬ ‫هك‬‫ه‬‫فيمكن‬from sys import argv‫هماء‬‫ه‬‫الس‬ ‫هل‬‫ه‬‫ك‬ ‫هتيراد‬‫ه‬‫اس‬ ‫أردت‬ ‫إذا‬ .
‫حدة‬‫الو‬ ‫في‬ ‫ستخدمة‬‫الم‬sys‫فادة‬‫إ‬ ‫ستخدام‬‫ا‬ ‫نك‬‫يمك‬from sys import*‫مع‬ ‫مل‬‫يع‬ ‫هذا‬‫و‬ .
‫عبهارة‬ ‫اسهتخدام‬ ‫تجنهب‬ ‫عهام‬ ‫وبهوجه‬ .‫وحهدة‬ ‫أي‬from..import‫عبهارة‬ ‫منهها‬ ‫بهدل‬ ‫واسهتخدم‬
import‫أي‬ ‫تتجنب‬ ‫وسوف‬ ،‫قراءته‬ ‫في‬ ‫سهولة‬ ‫أكثر‬ ‫الطريقة‬ ‫بهذه‬ ‫سيكون‬ ‫البرنامج‬ ‫أن‬ ‫حيث‬ ،
.‫الطريقة‬ ‫بهذه‬ ‫السماء‬ ‫في‬ ‫اشتباه‬
__ ‫خاصية‬name‫للوحدة‬ __
‫أمر‬ ‫وذلك‬ .‫بها‬ ‫الخاص‬ ‫الوحدة‬ ‫اسم‬ ‫اكتشاف‬ ‫يمكن‬ ‫الوحدة‬ ‫في‬ ‫وإفادات‬ ‫اسم‬ ‫له‬ ‫نموذج‬ ‫كل‬
، ‫مرة‬ ‫لول‬ ‫الوحدة‬ ‫استيراد‬ ‫ويتم‬ ‫عندما‬ ، ‫سابقا‬ ‫ذكر‬ ‫كما‬ -‫بعينها‬ ‫حالة‬ ‫في‬ ‫خاصة‬ ‫بصفة‬ ‫متيسر‬
‫كنا‬ ‫لو‬ ‫ماذا‬ . ‫الوحدة‬ ‫تلك‬ ‫في‬ ‫الرئيسة‬ ‫اللبنة‬ ‫تشغيل‬ ‫يتم‬
‫للفهرس‬ ‫عودة‬‫الفادة‬from..import|62
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫وحدة‬ ‫من‬ ‫استيراده‬ ‫عند‬ ‫وليس‬ ‫مستخدما‬ ‫نفسه‬ ‫البرنامج‬ ‫كان‬ ‫إذا‬ ‫فقط‬ ‫اللبنة‬ ‫تشغيل‬ ‫نريد‬
__ ‫السمة‬ ‫باستخدام‬ ‫ذلك‬ ‫تحقيق‬ ‫ويمكن‬ ‫أخرى؟‬name.‫الوحدة‬ ‫من‬ __
__ ‫الوحدة‬ ‫استخدام‬name__
‫مثال‬8.2__ ‫الوحدة‬ ‫خاصية‬ ‫استخدام‬ ‫على‬name__
/!#usr/bin/python
# Filename: using_name.py
if __name__ == '__main__':
print 'This program is being run by itself'
else:
print 'I am being imported from another module'
‫الخــرج‬
$ python using_name.py
This program is being run by itself
$ python
>>> import using_name
I am being imported from another module
‫يعمل‬ ‫كيف‬
_ ‫لها‬ ‫بيثون‬ ‫في‬ ‫وحدة‬ ‫كل‬name__ ‫هو‬ ‫ذلك‬ ‫كان‬ ‫فإن‬ ،‫معرف‬ _main‫أن‬ ‫يعني‬ ‫فذلك‬ __
‫أحداث‬ ‫من‬ ‫ذلك‬ ‫يناسب‬ ‫بما‬ ‫نقوم‬ ‫أن‬ ‫ويمكننا‬ ‫المستخدم‬ ‫قِبل‬ ‫من‬ ‫بذاتها‬ ‫ستعمل‬ ‫الوحدة‬.
‫للفهرس‬ ‫عودة‬‫الوحدة‬ ‫استخدام‬__name__|
63
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الخاصة‬ ‫وحداتك‬ ‫عمل‬
‫وحدة‬ ‫يعتبر‬ ‫بيثون‬ ‫برنامج‬ ‫كل‬ .‫الوقت‬ ‫طوال‬ ‫هذا‬ ‫فعلت‬ ‫وقد‬ ،‫سهل‬ ‫أمر‬ ‫بك‬ ‫خاصة‬ ‫وحدات‬ ‫إنشاء‬
‫امتداد‬ ‫على‬ ‫احتوائه‬ ‫من‬ ‫التأكد‬ ‫عليك‬ ‫فقط‬ .‫الوقت‬ ‫نفس‬ ‫في‬.py‫لك‬ ‫سيوضح‬ ‫التالي‬ ‫والمثال‬ .
.‫ذلك‬
‫الخاصة‬ ‫وحداتك‬ ‫إنشاء‬
‫مثال‬8.3.‫الخاصة‬ ‫وحداتك‬ ‫تنشئ‬ ‫كيف‬
#!/usr/bin/python
# Filename: mymodule.py
def sayhi():
print 'Hi, this is mymodule speaking.'
version = '0.1'
# End of mymodule.py
‫ههو‬ ‫أعله‬ ‫المهبين‬ ‫البرنامهج‬ ‫ههذا‬‫وحهدة‬‫بسهيطة‬.‫بمها‬ ‫بالمقارنهة‬ ‫مميهز‬ ‫شهيء‬ ‫يوجهد‬ ‫ل‬ ‫تهرى‬ ‫وكمها‬
‫بيثهون‬ ‫برامهج‬ ‫فهي‬ ‫اعتهدناه‬.‫بيثهون‬ ‫برامهج‬ ‫فهي‬ ‫الوحهدة‬ ‫ههذه‬ ‫نسهتخدم‬ ‫كيهف‬ ‫سهنرى‬ ‫يلهي‬ ‫وفيمها‬
‫الخرى‬.
‫في‬ ‫كون‬‫ت‬ ‫أو‬ ،‫مج‬‫البرنا‬ ‫نه‬‫م‬ ‫مل‬‫يع‬ ‫لذي‬‫ا‬ ‫لدليل‬‫ا‬ ‫فس‬‫ن‬ ‫في‬ ‫ضع‬‫تو‬ ‫أن‬ ‫جب‬‫ي‬ ‫حدة‬‫الو‬ ‫هذه‬ ‫أن‬ ‫تذكر‬
‫قائمة‬ ‫في‬ ‫المسرودة‬ ‫الدلة‬ ‫أحد‬sys.path.
#!/usr/bin/python
# Filename: mymodule_demo.py
import mymodule
mymodule.sayhi()
print 'Version', mymodule.version
‫الخرْج‬
$ python mymodule_demo.py
Hi, this is mymodule speaking.
Version 0.1
‫للفهرس‬ ‫عودة‬‫الخاصة‬ ‫وحداتك‬ ‫عمل‬|64
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫يعمل‬ ‫كيف‬
‫نستخدم‬ ‫أننا‬ ‫لحظ‬‫نفس‬‫الوحدة‬ ‫عناصر‬ ‫إلى‬ ‫للوصول‬ ‫النقطي‬ ‫الترقيم‬.‫إعادة‬ ‫بيثون‬ ‫تجيد‬
‫الشعور‬ ‫لضفاء‬ ‫الترقيم‬ ‫نفس‬ ‫استخدم‬'‫البايثوني‬'‫طرقًا‬ ‫نتعلم‬ ‫نظل‬ ‫أن‬ ‫علينا‬ ‫يجب‬ ‫ل‬ ‫لذا‬ ،‫المميز‬
‫الشياء‬ ‫لعمل‬ ‫جديدة‬.
‫إفادة‬from..import
‫الصيغة‬ ‫تستخدم‬ ‫نسخة‬ ‫ههنا‬from..import
#!/usr/bin/python
# Filename: mymodule_demo2.py
from mymodule import sayhi, version
# Alternative:
# from mymodule import *
sayhi()
print 'Version', version
‫خرْج‬mymodule_demo2.py‫خرْج‬ ‫نفسه‬ ‫هو‬mymodule_demo.py.
‫الدالة‬dir()
‫المدمجة‬ ‫الدالة‬ ‫استخدام‬ ‫يمكنك‬dir‫هي‬ ‫المعرفات‬ ‫هذه‬ .‫الوحدة‬ ‫تحددها‬ ‫المعرفات‬ ‫لسرد‬
.‫الوحدة‬ ‫في‬ ‫المعرفة‬ ‫والصناف‬ ،‫والمتغيرات‬ ،‫الدوال‬
‫للدالة‬ ‫وحدة‬ ‫اسم‬ ‫إعطاء‬ ‫عند‬dir().‫الوحدة‬ ‫تلك‬ ‫في‬ ‫المعرفة‬ ‫السماء‬ ‫قائمة‬ ‫لنا‬ ‫تعيد‬ ‫فإنها‬ ،
.‫الحالية‬ ‫الوحدة‬ ‫في‬ ‫المعرفة‬ ‫بالسماء‬ ‫قائمة‬ ‫لنا‬ ‫تعيد‬ ‫فإنها‬ ‫معطيات‬ ‫أية‬ ‫إعطائها‬ ‫عدم‬ ‫وعند‬
‫الدالة‬ ‫استخدام‬dir
‫مثال‬8.4.‫الدالة‬ ‫استخدام‬dir
$ python
>>> import sys
>>> dir(sys) # get list of attributes for sys module
['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__',
'__stdin__', '__stdout__', '_getframe', 'api_version', 'argv',
'builtin_module_names', 'byteorder', 'call_tracing', 'callstats',
'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type',
'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval',
‫للفهرس‬ ‫عودة‬‫الدالة‬ ‫استخدام‬dir|65
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding',
'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode',
'meta_path','modules', 'path', 'path_hooks', 'path_importer_cache',
'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdlopenflags',
'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout',
'version', 'version_info', 'warnoptions']
>>> dir() # get list of attributes for current module
['__builtins__', '__doc__', '__name__', 'sys']
>>>
>>> a = 5 # create a new variable 'a'
>>> dir()
['__builtins__', '__doc__', '__name__', 'a', 'sys']
>>>
>>> del a # delete/remove a name
>>>
>>> dir()
['__builtins__', '__doc__', '__name__', 'sys']
>>>
‫يعمل‬ ‫كيف‬
‫الدالة‬ ‫استخدام‬ ‫نرى‬ ،‫أول‬dir‫المستوردة‬ ‫الوحدة‬ ‫مع‬sys.‫من‬ ‫ضخمة‬ ‫قائمة‬ ‫نرى‬ ‫أن‬ ‫نستطيع‬
‫ها‬‫علي‬ ‫شتملة‬‫الم‬ ‫صر‬‫العنا‬.‫لة‬‫الدا‬ ‫ستخدام‬‫با‬ ‫نا‬‫قم‬ ‫عدها‬‫ب‬dir‫لذا‬ ‫ها‬‫إلي‬ ‫عاملت‬‫م‬ ‫أي‬ ‫ير‬‫تمر‬ ‫بدون‬
‫ية‬‫الحال‬ ‫حدة‬‫للو‬ ‫ية‬‫المنتم‬ ‫صر‬‫العنا‬ ‫مة‬‫قائ‬ ‫نا‬‫إلي‬ ‫يد‬‫تع‬ ‫فههي‬.‫ستوردة‬‫الم‬ ‫حدات‬‫الو‬ ‫مة‬‫قائ‬ ‫أن‬ ‫حظ‬‫ل‬
‫أيضا‬ ‫القائمة‬ ‫هذه‬ ‫من‬ ‫جزء‬.
‫ملحظة‬ ‫أجل‬ ‫ومن‬dir‫جديد‬ ‫متغير‬ ‫بتعريف‬ ‫قمنا‬ ،‫تعمل‬ ‫وهي‬a‫نقوم‬ ‫وبعدها‬ ‫قيمة‬ ‫إليه‬ ‫وأسندنا‬
‫هص‬‫ه‬‫بفح‬dir‫هم‬‫ه‬‫الس‬ ‫هس‬‫ه‬‫بنف‬ ‫هة‬‫ه‬‫القائم‬ ‫هى‬‫ه‬‫إل‬ ‫هافة‬‫ه‬‫مض‬ ‫هة‬‫ه‬‫قيم‬ ‫هاك‬‫ه‬‫هن‬ ‫أن‬ ‫هنلحظ‬‫ه‬‫وس‬.‫هذف‬‫ه‬‫بح‬ ‫هوم‬‫ه‬‫نق‬
‫خصائص‬/‫إفادة‬ ‫باستخدام‬ ‫الحالية‬ ‫الوحدة‬ ‫متغيرات‬del‫في‬ ‫أخرى‬ ‫مرة‬ ‫التغير‬ ‫هذا‬ ‫ينعكس‬ ‫وسوف‬
‫الدالة‬ ‫خرْج‬dir.
‫على‬ ‫ملحظة‬del:‫الفادة‬ ‫تشغيل‬ ‫وبعد‬ ‫متغير‬ ‫أو‬ ‫اسم‬ ‫لحذف‬ ‫الفادة‬ ‫هذه‬ ‫تستخدم‬-‫هذه‬ ‫في‬ ‫وهي‬
‫الحالة‬del a-‫المتغير‬ ‫إلى‬ ‫الوصول‬ ‫بإمكاننا‬ ‫يعود‬ ‫ل‬a‫قبل‬ ‫من‬ ‫موجودا‬ ‫يكن‬ ‫لم‬ ‫وكأنه‬ ‫؛‬.
‫الخلصة‬
.‫الخرى‬ ‫البرامج‬ ‫في‬ ‫استخدامها‬ ‫إعادة‬ ‫يمكننا‬ ‫ووظائف‬ ‫بخدمات‬ ‫تمدك‬ ‫لنها‬ ‫مفيدة‬ ‫الوحدات‬
‫هذه‬ ‫نستخدم‬ ‫كيف‬ ‫رأينا‬ ‫وقد‬ .‫الوحدات‬ ‫على‬ ‫مثال‬ ‫تعتبر‬ ‫بيثون‬ ‫مع‬ ‫تأتي‬ ‫التي‬ ‫القياسية‬ ‫والمكتبة‬
.‫أيضا‬ ‫بنا‬ ‫الخاصة‬ ‫الوحدات‬ ‫وإنشاء‬ ‫الوحدات‬
.‫البيانات‬ ‫هياكل‬ ‫تدعى‬ ‫والتي‬ ‫المهمة‬ ‫المفاهيم‬ ‫بعض‬ ‫نتعلم‬ ‫سوف‬ ‫يلي‬ ‫وفيما‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|66
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬9.‫البيانات‬ ‫هياكل‬
‫المحتويات‬ ‫قائمة‬
‫مقدمة‬
‫القائمة‬
‫والفئات‬ ‫الكائنات‬ ‫إلى‬ ‫سريعه‬ ‫مقدمة‬
‫القوائم‬ ‫استخدام‬
‫الصف‬
‫الصفوف‬ ‫استخدام‬
‫وإفادة‬ ‫الصفوف‬print
‫القاموس‬
‫القاموس‬ ‫استخدام‬
‫المتسلسلت‬
‫المتسلسلت‬ ‫استخدام‬
References
Objects and References
‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬
‫النصية‬ ‫السلسل‬ ‫طرق‬
‫الخلصة‬
‫مق‬‫دمــة‬
‫اسهمها؛‬ ‫مهن‬ ‫يظههر‬ ‫كمها‬ ‫ببسهاطة‬ ‫ههي‬ ‫البيانهات‬ ‫هياكهل‬‫هياكهل‬‫بعهض‬ ‫حمهل‬ ‫يمكنهها‬‫البيانهات‬‫معها‬.
‫الصلة‬ ‫ذات‬ ‫البيانات‬ ‫من‬ ‫مجموعة‬ ‫لتخزين‬ ‫تستخدم‬ ‫فهي‬ ،‫أخرى‬ ‫وبعباره‬.
‫بيثهون‬ ‫فهي‬ ‫مدمجهة‬ ‫البيانهات‬ ‫هياكهل‬ ‫مهن‬ ‫أنهواع‬ ‫ثلثهة‬ ‫وهنهاك‬--‫القهوائم‬)list(‫والصهفوف‬ ،
)tuple(‫والقواميس‬ ،)dictionary.(‫تجعل‬ ‫أنها‬ ‫وكيف‬ ،‫منها‬ ‫كل‬ ‫استخدام‬ ‫كيفية‬ ‫وسنرى‬
‫أسهل‬ ‫الحياة‬.
‫القائمة‬
‫القائمة‬‫أن‬ ‫يمكنك‬ ‫أخرى‬ ‫بعبارة‬ ،‫المرتّبة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫تحمل‬ ‫التي‬ ‫البيانات‬ ‫هياكل‬ ‫أحد‬
‫تخزن‬‫تتابعا‬‫حيث‬ ‫التسوق‬ ‫قائمة‬ ‫في‬ ‫تفكر‬ ‫أن‬ ‫هذا‬ ‫تصور‬ ‫عليك‬ ‫سيسهل‬ .‫قائمة‬ ‫في‬ ‫العناصر‬ ‫من‬
‫قائمة‬ ‫في‬ ‫منفصل‬ ‫سطر‬ ‫في‬ ‫عنصر‬ ‫كل‬ ‫تضع‬ ‫ربما‬ ‫أنك‬ ‫عدا‬ ‫فيما‬ ،‫للشراء‬ ‫تعدها‬ ‫عناصر‬ ‫لديك‬
.‫بينها‬ ‫فيما‬ ‫فاصلة‬ ‫تضع‬ ‫بيثون‬ ‫أن‬ ‫حين‬ ‫في‬ ،‫التسوق‬
‫للفهرس‬ ‫عودة‬‫القائمة‬|67
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫تحديهد‬ ‫تريهد‬ ‫أنهك‬ ‫بيثهون‬ ‫تفههم‬ ‫حهتى‬ [ ] ‫مربعيهن‬ ‫قوسهين‬ ‫بيهن‬ ‫تكهون‬ ‫أن‬ ‫ينبغهي‬ ‫العناصهر‬ ‫قائمهة‬
‫يث‬‫وح‬ .‫القائمة‬ ‫في‬ ‫العناصر‬ ‫عن‬ ‫البحث‬ ‫أو‬ ‫إزالة‬ ‫أو‬ ‫إضافة‬ ‫يمكنك‬ ،‫مة‬‫قائ‬ ‫إنشاء‬ ‫بمجرد‬ .‫مة‬‫قائ‬
‫نات‬‫بيا‬ ‫نوع‬ ‫هي‬ ‫مة‬‫القائ‬ ‫أن‬ ‫قول‬‫ن‬ ،‫صر‬‫العنا‬ ‫حذف‬‫و‬ ‫ضافة‬‫إ‬ ‫ستطيع‬‫ن‬ ‫نا‬‫أن‬‫ير‬‫متغ‬‫نوع‬‫ال‬ ‫هذا‬ ‫أن‬ ‫أي‬
.‫تغييره‬ ‫يمكن‬
‫والفئات‬ ‫الكائنات‬ ‫إلى‬ ‫سريعة‬ ‫مقدمة‬
‫الكائنات‬ ‫مناقشة‬ ‫اﻵن‬ ‫وحتى‬ ‫أخرت‬ ‫كنت‬ ‫قد‬ ‫أنني‬ ‫رغم‬‫والفئات‬‫لشرح‬ ‫بحاجة‬ ‫أننا‬ ‫إل‬ ،‫عام‬ ‫بوجه‬
‫أفضهل‬ ‫بصهورة‬ ‫القهوائم‬ ‫فههم‬ ‫مهن‬ ‫تتمكهن‬ ‫حهتى‬ ‫اﻵهن‬ ‫صهغير‬.‫فهي‬ ‫بالتفصهيل‬ ‫الموضهوع‬ ‫ههذا‬ ‫سنشهرح‬
‫الفصل‬‫به‬ ‫الخاص‬.
‫والفئات‬ ‫الكائنات‬ ‫استخدام‬ ‫على‬ ‫مثال‬ ‫القائمة‬.‫متغير‬ ‫تستخدم‬ ‫عندما‬i‫قيمة‬ ‫وتعطيه‬-‫العدد‬ ‫مثل‬
‫الصحيح‬5-‫إنشاء‬ ‫أنه‬ ‫على‬ ‫لها‬ ‫تنظر‬ ‫فإنك‬‫كائن‬ ‫لل‬)‫سيرورة‬(i‫من‬‫الفئة‬)‫النوع‬(int.‫في‬
) ‫مطالعة‬ ‫تستطيع‬ ‫الحقيقة‬help(int‫أكثر‬ ‫هذا‬ ‫لتفهم‬.
‫على‬ ‫تشتمل‬ ‫أن‬ ‫للفئة‬ ‫ويمكن‬‫طرق‬‫فقط‬ ‫الفئة‬ ‫هذه‬ ‫مع‬ ‫للستخدام‬ ‫معرّفة‬ ‫دوال‬ ‫؛‬.‫يمكنك‬
‫الفئة‬ ‫منهذه‬ ‫كائن‬ ‫لديك‬ ‫يكون‬ ‫عندما‬ ‫فقط‬ ‫الجزاء‬ ‫هذه‬ ‫استعمال‬.‫توفر‬ ‫المثال؛‬ ‫سبيل‬ ‫على‬
‫الطريقة‬ ‫بيثون‬append‫للفئة‬list‫القائمة‬ ‫نهاية‬ ‫إلى‬ ‫عنصر‬ ‫إضافة‬ ‫من‬ ‫تمكنك‬ ‫التي‬.') ‫مثل‬
mylist.append('an item‫القائمة‬ ‫إلى‬ ‫السلسلة‬ ‫هذه‬ ‫ستضيف‬')
mylist.append('an item.‫الكائن‬ ‫أساليب‬ ‫إلى‬ ‫للوصول‬ ‫النقطي‬ ‫الترقيم‬ ‫لحظ‬.
‫أيضا‬ ‫لها‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫الفئة‬‫حقول‬)fields(‫لستخدامها‬ ‫معرّفة‬ ‫متغيرات‬ ‫سوى‬ ‫ليست‬ ‫وهي‬
‫فقط‬ ‫الفئة‬ ‫تلك‬ ‫يخص‬ ‫فيما‬.‫المتغيرات‬ ‫هذه‬ ‫استخدام‬ ‫يمكنك‬/‫لديك‬ ‫يكون‬ ‫عندما‬ ‫فقط‬ ‫السماء‬
‫الفئة‬ ‫تلك‬ ‫من‬ ‫كائن‬.،‫مثل‬ ،‫النقطي‬ ‫الترقيم‬ ‫خلل‬ ‫من‬ ‫متاحة‬ ‫أيضا‬ ‫الحقول‬mylist.field.
‫القوائم‬ ‫استخدام‬
‫مثال‬9.1.‫القوائم‬ ‫استخدام‬
#!/usr/bin/python
# Filename: using_list.py
# This is my shopping list
shoplist = ['apple', 'mango', 'carrot', 'banana']
print 'I have', len(shoplist), 'items to purchase.'
print 'These items are:', # Notice the comma at end of the line
for item in shoplist:
‫للفهرس‬ ‫عودة‬‫القائمة‬|68
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
print item,
print 'nI also have to buy rice.'
shoplist.append('rice')
print 'My shopping list is now', shoplist
print 'I will sort my list now'
shoplist.sort()
print 'Sorted shopping list is', shoplist
print 'The first item I will buy is', shoplist[0]
olditem = shoplist[0]
del shoplist[0]
print 'I bought the', olditem
print 'My shopping list is now', shoplist
‫الخرْج‬
$ python using_list.py
I have 4 items to purchase.
These items are: apple mango carrot banana
I also have to buy rice.
My shopping list is now ['apple', 'mango', 'carrot', 'banana', 'rice']
I will sort my list now
Sorted shopping list is ['apple', 'banana', 'carrot', 'mango', 'rice']
The first item I will buy is apple
I bought the apple
My shopping list is now ['banana', 'carrot', 'mango', 'rice']
‫يعمل‬ ‫كيف‬
‫المتغيهر‬shoplist‫السهوق‬ ‫إلهى‬ ‫ذاههب‬ ‫لشهخص‬ ‫تسهوق‬ ‫قائمهة‬ ‫عهن‬ ‫عبهارة‬.‫فهي‬shoplist‫نقهوم‬
‫نوع‬ ‫أي‬ ‫إضافة‬ ‫بإمكانك‬ ‫أن‬ ‫تذكر‬ ‫لكن‬ ،‫سيشتريها‬ ‫التي‬ ‫العناصر‬ ‫بأسماء‬ ‫النصية‬ ‫سلسل‬ ‫بتخزين‬
‫من‬‫الكائنات‬‫الخرى‬ ‫القوائم‬ ‫وحتى‬ ‫العداد‬ ‫ذلك‬ ‫في‬ ‫بما‬ ‫القائمة‬ ‫إلى‬.
‫الحلقة‬ ‫أيضا‬ ‫استخدمنا‬ ‫كما‬for..in‫القائمة‬ ‫عناصر‬ ‫خلل‬ ‫للتنقل‬.‫أن‬ ‫أدركت‬ ‫أنك‬ ‫لبد‬ ،‫اﻵن‬
‫أيضا‬ ‫تتابع‬ ‫هي‬ ‫القائمة‬.‫في‬ ‫التتابعات‬ ‫خصوصية‬ ‫نناقش‬ ‫وسوف‬‫قسم‬‫لحق‬.
‫نستخدم‬ ‫أننا‬ ‫لحظ‬‫فاصلة‬","‫إفادة‬ ‫نهاية‬ ‫في‬print‫بعد‬ ‫السطر‬ ‫لفاصل‬ ‫التلقائية‬ ‫الطباعة‬ ‫لمنع‬
‫إفادة‬ ‫كل‬print.‫المهمة‬ ‫وتنجز‬ ‫بسيطة‬ ‫ولكنها‬ ،‫ذلك‬ ‫لفعل‬ ‫سيئة‬ ‫طريقة‬ ‫هذه‬ ‫تعتبر‬ ‫قد‬.
‫للفهرس‬ ‫عودة‬‫القائمة‬|69
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الرفاق‬ ‫طريقة‬ ‫باستخدام‬ ‫القائمة‬ ‫إلى‬ ‫عنصرا‬ ‫أضفنا‬ ،‫بعدها‬append‫فئة‬ ‫من‬ ‫الكائنات‬ ‫في‬list،
‫قبل‬ ‫من‬ ‫ناقشنا‬ ‫أن‬ ‫سبق‬ ‫كما‬.‫طريق‬ ‫عن‬ ‫القائمة‬ ‫إلى‬ ‫إضافته‬ ‫تم‬ ‫قد‬ ‫العنصر‬ ‫أن‬ ‫من‬ ‫نتحقق‬ ،‫ثم‬
‫إفادة‬ ‫إلى‬ ‫ببساطة‬ ‫بتمريرها‬ ‫القائمة‬ ‫محتويات‬ ‫طبع‬print‫أنيقة‬ ‫بطريقه‬ ‫لنا‬ ‫تطبعها‬ ‫التي‬.
‫قة‬‫الطري‬ ‫ستخدام‬‫با‬ ‫مة‬‫القائ‬ ‫بترتيب‬ ‫قوم‬‫ن‬ ‫ثم‬sort.‫مة‬‫القائ‬ ‫لى‬‫ع‬ ‫تؤثر‬ ‫قة‬‫الطري‬ ‫هذه‬ ‫أن‬ ‫حظ‬‫ل‬
‫معدلة‬ ‫قائمة‬ ‫تعيد‬ ‫ول‬ ‫نفسها‬--‫النصية‬ ‫السلسل‬ ‫عمل‬ ‫طريقة‬ ‫عن‬ ‫يختلف‬ ‫وهذا‬.‫نعنيه‬ ‫ما‬ ‫وهذا‬
‫القوائم‬ ‫إن‬ ‫بقولنا‬‫متغيرة‬‫النصية‬ ‫والسلسل‬‫ثابتة‬.
‫القائمهة‬ ‫مهن‬ ‫إزالتهه‬ ‫نريهد‬ ،‫السهوق‬ ‫مهن‬ ‫بنهد‬ ‫شهراء‬ ‫مهن‬ ‫ننتههي‬ ‫عنهدما‬ ،‫ثهم‬.‫طريهق‬ ‫عهن‬ ‫ذلهك‬ ‫نحقهق‬
‫الفادة‬ ‫استخدام‬del.‫إفادة‬ ‫وتقوم‬ ‫إزالته‬ ‫نريد‬ ‫الذي‬ ‫القائمة‬ ‫عنصر‬ ‫نحدد‬ ،‫هنا‬del‫لنا‬ ‫بحذفه‬.
‫نستخدم‬ ‫وبالتالي‬ ،‫القائمة‬ ‫من‬ ‫الول‬ ‫البند‬ ‫إزالة‬ ‫نريد‬ ‫أننا‬ ‫نحدد‬del shoplist[0[)‫أن‬ ‫تذكر‬
‫من‬ ‫العد‬ ‫تبدأ‬ ‫بيثون‬0.(
) ‫الع‬‫ه‬‫فط‬ ‫القائمهة‬ ‫ائن‬‫ه‬‫ك‬ ‫ا‬‫ه‬‫يُعرّفه‬ ‫الهتي‬ ‫الطهرق‬ ‫كهل‬ ‫معرفهة‬ ‫أردت‬ ‫إذا‬help(list‫التفاصهيل‬ ‫لهترى‬
‫الكاملة‬.
‫الصف‬
‫الصهفوف‬)Tuples(‫أنهها‬ ‫إل‬ ‫القهوائم‬ ‫مثهل‬‫ثابتهة‬‫تغييهر‬ ‫يمكنهك‬ ‫ل‬ ‫أي‬ ‫النصهية؛‬ ‫السلسهل‬ ‫مثهل‬
‫صفوف‬‫ال‬.‫لقواس‬‫ا‬ ‫من‬ ‫زوج‬ ‫خل‬‫دا‬ ‫بفاصلة‬ ‫مفصولة‬ ‫عناصر‬ ‫تحديد‬ ‫طريق‬ ‫عن‬ ‫صفوف‬‫ال‬ ‫عرّف‬ُ‫ت‬
.( )‫يُعرّفهها‬ ‫الهتي‬ ‫الدالهة‬ ‫أو‬ ‫الفهادة‬ ‫فيهها‬ ‫تسهتطيع‬ ‫الهتي‬ ‫الحهالت‬ ‫فهي‬ ‫عهادة‬ ‫الصهفوف‬ ‫تسهتخدم‬
‫القيم‬ ‫مجموعة‬ ‫أن‬ ‫بأمان‬ ‫تفترض‬ ‫أن‬ ‫المستخدم‬-‫القيم‬ ‫صف‬-‫تتغير‬ ‫لن‬ ‫المستخدمة‬.
‫الصفوف‬ ‫استخدام‬
‫مثال‬9.2.‫الصفوف‬ ‫استخدام‬
#!/usr/bin/python
# Filename: using_tuple.py
zoo = ('wolf', 'elephant', 'penguin')
print 'Number of animals in the zoo is', len(zoo)
new_zoo = ('monkey', 'dolphin', zoo)
print 'Number of animals in the new zoo is', len(new_zoo)
print 'All animals in new zoo are', new_zoo
print 'Animals brought from old zoo are', new_zoo[2]
print 'Last animal brought from old zoo is', new_zoo[2][2]
‫للفهرس‬ ‫عودة‬‫الصفوف‬ ‫استخدام‬|70
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الخرْج‬
$ python using_tuple.py
Number of animals in the zoo is 3
Number of animals in the new zoo is 3
All animals in new zoo are ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin'))
Animals brought from old zoo are ('wolf', 'elephant', 'penguin')
Last animal brought from old zoo is penguin
‫يعمل‬ ‫كيف‬
‫المتغير‬zoo‫العناصر‬ ‫من‬ ‫صف‬ ‫إلى‬ ‫يشير‬.‫الدالة‬ ‫أن‬ ‫نرى‬len‫على‬ ‫للحصول‬ ‫استخدامها‬ ‫يمكن‬
‫الصف‬ ‫طول‬.‫هي‬ ‫الصفوف‬ ‫أن‬ ‫على‬ ‫أيضا‬ ‫يدل‬ ‫وهذا‬‫تتابعات‬‫أيضا‬.
‫جديدة‬ ‫حيوانات‬ ‫حديقة‬ ‫إلى‬ ‫الحيوانات‬ ‫هذه‬ ‫ننقل‬ ‫اﻵن‬)new_zoo(‫القديمة‬ ‫الحديقة‬ ‫إن‬ ‫حيث‬
)zoo(‫إغلقهها‬ ‫يتهم‬.‫الجديهد‬ ‫الصهف‬ ‫يحتهوي‬ ‫لهذا‬new_zoo‫الموجهودة‬ ‫الحيوانهات‬ ‫بعهض‬ ‫علهى‬
‫القديمة‬ ‫الحديقة‬ ‫من‬ ‫جلبت‬ ‫التي‬ ‫الحيوانات‬ ‫مع‬ ‫جنب‬ ‫إلى‬ ‫جنبا‬ ‫بالفعل‬.‫نلحظ‬ ،‫الواقع‬ ‫إلى‬ ‫عودة‬
‫هويته‬ ‫يفقد‬ ‫ل‬ ‫آخر‬ ‫صف‬ ‫داخل‬ ‫الصف‬ ‫أن‬
‫القواس‬ ‫من‬ ‫زوج‬ ‫داخل‬ ‫العنصر‬ ‫موضع‬ ‫تحديد‬ ‫طريق‬ ‫عن‬ ‫الصف‬ ‫في‬ ‫العناصر‬ ‫إلى‬ ‫الوصول‬ ‫يمكننا‬
‫المربعة‬[ ]‫القوائم‬ ‫مع‬ ‫فعلنا‬ ‫ما‬ ‫مثل‬.‫يسمى‬ ‫ما‬ ‫وهذا‬‫عامل‬‫الفهرسة‬
)indexing operator.(‫في‬ ‫الثالث‬ ‫البند‬ ‫إلى‬ ‫الوصول‬ ‫نستطيع‬new_zoo‫بتحديد‬
]new_zoo [2‫في‬ ‫الثالث‬ ‫البند‬ ‫إلى‬ ‫الوصول‬ ‫ويمكن‬ ،‫الصف‬new_zoo‫بتحديد‬
]new_zoo [2] [2.‫الطريقة‬ ‫تفهم‬ ‫أن‬ ‫بمجرد‬ ، ‫جدا‬ ‫واضح‬ ‫هذا‬.
‫واحد‬ ‫عنصر‬ ‫أو‬ ‫عناصر‬ ‫بدون‬ ‫صف‬.‫الخالية‬ ‫القواس‬ ‫من‬ ‫زوج‬ ‫طريق‬ ‫عن‬ ‫فارغ‬ ‫صف‬ ‫يُنشأ‬
()=() ‫مثل‬myempty.‫البساطة‬ ‫بهذه‬ ‫ليس‬ ‫واحد‬ ‫عنصر‬ ‫ذي‬ ‫صف‬ ‫تحديد‬ ‫لكن‬.‫أن‬ ‫عليك‬
‫فاصلة‬ ‫مستخدما‬ ‫تحدده‬","‫الول‬ ‫العنصر‬ ‫بعد‬)‫والوحيد‬(‫صف‬ ‫بين‬ ‫التفرقة‬ ‫بيثون‬ ‫تستطيع‬ ‫؛حتى‬
‫تعبير‬ ‫داخل‬ ‫بكائن‬ ‫المحيطة‬ ‫القواس‬ ‫من‬ ‫زوج‬ ‫وبين‬.‫تحدد‬ ‫أن‬ ‫عليك‬ ‫أي‬
,)singleton = (2‫العنصر‬ ‫يحتوي‬ ‫صفا‬ ‫تريد‬ ‫أنك‬ ‫تعني‬ ‫كنت‬ ‫إذا‬2.
‫بيرل‬ ‫لمبرمجي‬ ‫ملحظة‬
‫المر‬ ‫نفس‬ . ‫بيرل‬ ‫في‬ ‫هو‬ ‫كما‬ ‫منبسطة‬ ‫غير‬ ‫القوائم‬ ‫.فمثل‬ ‫هويتها‬ ‫تفقد‬ ‫ل‬ ‫قائمة‬ ‫داخل‬ ‫القائمة‬
‫صف‬ ‫على‬ ‫ينطبق‬‫صف‬ ‫داخل‬‫يتعلق‬ ‫ما‬ ‫فبقدر‬ . ‫إلخ‬ ‫صف‬ ‫داخل‬ ‫قائمة‬ ‫أو‬ ،‫قائمة‬ ‫داخل‬ ‫الصف‬ ‫أو‬ ،
‫في‬ ‫ما‬ ‫كل‬ ‫هذا‬ ،‫آخر‬ ‫كائن‬ ‫باستخدام‬ ‫مخزنة‬ ‫كائنات‬ ‫عن‬ ‫عبارة‬ ‫فقط‬ ‫فإنه‬ ، ‫ببايثون‬ ‫المر‬
. ‫الموضوع‬
‫للفهرس‬ ‫عودة‬‫الصفوف‬ ‫استخدام‬|71
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫وإفادة‬ ‫الصفوف‬print
‫واحدة‬‫من‬‫أكثر‬‫الستعمالت‬‫الشائعة‬‫هي‬‫الصفوف‬‫مع‬‫الفادة‬print.‫وإليك‬‫هذا‬‫المثال‬
‫مثال‬9.3‫الصفوف‬ ‫استخدام‬
#!/usr/bin/python
# Filename: print_tuple.py
age = 22
name = 'Swaroop'
print '%s is %d years old' % (name, age)
print 'Why is %s playing with that python?' % name
‫الخرج‬
$ python print_tuple.py
Swaroop is 22 years old
Why is Swaroop playing with that python?
‫البرنامج‬ ‫يعمل‬ ‫كيف‬
•‫إفادة‬print‫يمكن‬‫ان‬‫ت‬‫أخذ‬‫سلسلة‬‫نصية‬‫باستخدام‬‫مواصفات‬‫معينة‬‫يتبعها‬‫الرمز‬٪‫يليها‬
tuple‫من‬‫البنود‬‫المطابق‬‫للمواصفات‬.‫المواصفات‬‫تستخدم‬‫في‬‫صياغه‬‫النتائج‬‫بطريقة‬‫معينة‬.
‫المواصفات‬‫يمكن‬‫أن‬‫تكون‬‫على‬‫غرار‬%s‫للسلسل‬‫النصية‬strings‫و‬%d‫للعداد‬
‫الصحيحة‬‫الصف‬ .‫يجب‬‫أن‬‫ي‬‫حتوي‬‫على‬‫بنود‬‫مقابلة‬‫لهذه‬‫المواصفات‬‫في‬‫نفس‬‫النظام‬.
•‫لحظ‬‫أن‬‫أ‬‫ول‬‫استعمال‬‫حيث‬‫نستخدم‬%s‫أول‬‫وهذا‬‫مطابقا‬‫لسم‬‫المتغير‬‫الذي‬‫هو‬‫البند‬‫الول‬
‫في‬‫الصف‬،‫والوصف‬‫الثاني‬‫هو‬%d‫المقابل‬‫لل‬age‫الذي‬‫هو‬‫البند‬‫الثاني‬‫في‬.‫الصف‬
•‫ما‬‫يعمله‬‫بيثون‬‫هنا‬‫هو‬‫أنه‬‫يحول‬‫كل‬‫بند‬‫في‬‫الصف‬‫إلى‬‫سلسلة‬‫نصية‬‫وبدائل‬‫لقيمة‬‫هذه‬
‫السلسلة‬‫داخل‬‫مكان‬‫المواصفات‬.‫لذا‬%s‫هو‬‫استعاضة‬‫عن‬‫قيمة‬‫المتغير‬name‫وهلم‬‫جرا‬.
•‫هذا‬‫الستخدام‬‫للفادة‬print‫يجعل‬‫من‬‫السهل‬‫للغاية‬‫كتابة‬‫الناتج‬‫ويتجنب‬‫الكثير‬‫من‬‫التلعب‬
‫بالنص‬‫لتحقيق‬‫ذات‬‫المر‬.‫كما‬‫انه‬‫يتجنب‬‫استعمال‬‫الفواصل‬‫في‬‫كل‬‫مكان‬‫كما‬‫فعلنا‬‫حتى‬
‫اﻵن‬.
•‫معظم‬‫الوقت‬،‫يمكنك‬‫استخدام‬‫الوصف‬%s.‫واترك‬‫لبايثون‬‫العناية‬‫بالباقي‬‫من‬‫أجلك‬.‫وهذا‬
‫يعمل‬‫حتى‬‫مع‬‫الرقام‬.‫ومع‬‫ذلك‬،‫قد‬‫ترغب‬‫في‬‫إ‬‫عطاء‬‫المواصفات‬‫الصحيحة‬‫حي‬‫ث‬‫إ‬‫ن‬‫هذا‬
‫للفهرس‬ ‫عودة‬‫وإفادة‬ ‫الصفوف‬print|72
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫يضيف‬‫مستوى‬ً‫واحدا‬‫من‬‫التأكد‬‫من‬‫صحة‬‫برنامجك‬.
•‫في‬‫الفادة‬‫الثانية‬print،‫نستخدم‬‫أحد‬‫المواصفات‬‫التي‬‫يتبعها‬‫الرمز‬%‫يليه‬‫بند‬‫واحد‬--‫ل‬
‫يوجد‬‫زوج‬‫من‬‫القواس‬.‫هذا‬‫يعمل‬‫فقط‬‫في‬‫حالة‬‫عندما‬‫يكون‬‫هناك‬‫وصف‬‫واحد‬‫في‬‫السلسلة‬
‫النصية‬.
‫القاموس‬
‫القاموس‬‫هو‬‫بمثابة‬‫كتاب‬‫عنونة‬‫حيث‬‫يمكنك‬‫أن‬‫تجد‬‫عنوانا‬‫أو‬‫تفاصيل‬‫للتصال‬‫مع‬‫شخص‬
‫عن‬‫طريق‬‫معرفه‬‫اسمه‬/‫اسمها‬.‫مثل‬‫؛‬‫نحن‬‫نتشارك‬‫المفاتيح‬)‫السم‬(‫مع‬‫القيم‬)‫التفاصيل‬.(
‫علما‬‫بأن‬‫المفتاح‬‫يجب‬‫أن‬‫يكون‬‫فريدا‬unique‫حيث‬‫أنه‬‫ل‬‫يمكنك‬‫الحصول‬‫على‬‫معلومات‬
‫صحيحة‬‫إذا‬‫كان‬‫لديك‬‫شخصان‬‫بنفس‬‫السم‬‫بالضبط‬.
‫علما‬‫بأ‬‫نه‬‫يمكنك‬‫استخدام‬‫كائنات‬‫ثابتة‬‫فقط‬)‫مثل‬‫السلسل‬‫النصية‬(‫لمفاتيح‬‫القاموس‬‫ولكن‬
‫يمكنك‬‫استخدام‬‫كائنات‬‫ثابتة‬‫أو‬‫قابلة‬‫للتغيير‬‫لقيم‬‫القاموس‬‫يمكننا‬‫أن‬‫نترجم‬‫ذلك‬‫بقولنا‬
‫أنه‬‫ينبغي‬‫أن‬‫ل‬‫تستخدم‬‫سوى‬‫أ‬‫شياء‬‫بسيطة‬‫للمفاتيح‬.
‫زوج‬‫من‬‫المفاتيح‬‫المذكورة‬ ‫والقيم‬‫في‬‫القاموس‬‫باستخدام‬‫العبارة‬
}d = {key1 : value1, key2 : value2‫لحظ‬‫أن‬‫أزواج‬‫المفتاح‬/‫القيمة‬‫منفصلن‬‫عن‬
‫طريق‬‫النقطتين‬":"‫والزواج‬‫أنفسهم‬‫منفصلن‬‫عن‬‫طريق‬‫فاصلة‬,‫و‬‫كل‬‫هذا‬‫داخل‬‫في‬‫زوج‬
‫من‬‫القواس‬‫المجعدة‬. { }
‫تذكر‬‫أن‬‫أزواج‬key/value‫في‬‫القاموس‬‫ليست‬‫لها‬‫أي‬‫طريقة‬‫ترتيب‬‫إ‬ .‫ذا‬‫أ‬‫ردت‬‫ترتيبا‬‫معينا‬،
‫سيتعين‬‫عليك‬‫ترتيبها‬‫بنفسك‬‫قبل‬‫استعمالها‬.
‫القواميس‬‫التي‬‫ستقوم‬‫باستخدامها‬‫تعتبر‬‫حالت‬/‫كائنات‬instances/objects‫من‬‫الطبقة‬
"dict. "
‫القواميس‬ ‫استخدام‬
‫مثال‬9.4‫القواميس‬ ‫استخدام‬
#!/usr/bin/python
# Filename: using_dict.py
# 'ab' is short for 'a'ddress'b'ook
‫للفهرس‬ ‫عودة‬‫القواميس‬ ‫استخدام‬|73
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
ab = { 'Swaroop' : 'swaroopch@byteofpython.info',
'Larry' : 'larry@wall.org',
'Matsumoto' : 'matz@ruby-lang.org',
'Spammer' : 'spammer@hotmail.com'
}
print "Swaroop's address is %s" % ab['Swaroop']
# Adding a key/value pair
ab['Guido'] = 'guido@python.org'
# Deleting a key/value pair
del ab['Spammer']
print 'nThere are %d contacts in the address-bookn' % len(ab)
for name, address in ab.items():
print 'Contact %s at %s' % (name, address)
if 'Guido' in ab: # OR ab.has_key('Guido')
print "nGuido's address is %s" % ab['Guido']
‫الخرج‬
$ python using_dict.py
Swaroop's address is swaroopch@byteofpython.info
There are 4 contacts in the address-book
Contact Swaroop at swaroopch@byteofpython.info
Contact Matsumoto at matz@ruby-lang.org
‫للفهرس‬ ‫عودة‬‫القواميس‬ ‫استخدام‬|74
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Contact Larry at larry@wall.org
Contact Guido at guido@python.org
Guido's address is guido@python.org
‫البرنامج‬ ‫يعمل‬ ‫كيف‬
‫قمنا‬‫بصنع‬‫القاموس‬ ab ‫باستخدام‬‫الترقيم‬‫الذي‬‫سبق‬‫مناقشته‬.‫ثم‬‫شغلنا‬‫مفتاح/قيمة‬ ‫أزواج‬
key/value ‫من‬‫خلل‬‫تحديد‬‫المفتاح‬‫باستخدام‬‫عامل‬‫الفهرسة‬ indexing operator
‫كما‬‫نوقش‬‫في‬‫الكلم‬‫عن‬‫القوائم‬‫و‬.‫الصفوف‬‫نلحظ‬‫أ‬‫ن‬‫التركيب‬‫بسيط‬‫جدا‬‫للقواميس‬
‫.كذلك‬
‫ويمكننا‬‫أن‬‫نضيف‬‫أزواج‬‫جديدة‬‫من‬‫مفتاح/قيمة‬‫ببساطة‬‫عن‬‫طريق‬‫استخدام‬‫الفهرسة‬ ‫عامل‬
‫للوصول‬‫إلى‬‫مفتاح‬‫وإسناد‬‫قيمة‬‫إليه‬،‫كما‬‫فعلنا‬‫ل‬ Guido ‫في‬‫الحالة‬‫المذكورة‬‫أ‬‫عله‬ .
‫يمكننا‬‫حذف‬‫أزواج‬‫المفتاح‬/‫القيمة‬‫باستخدام‬‫صديقنا‬‫القديم‬‫الفادة‬ del. ‫نحن‬‫ببساطة‬‫نحدد‬
‫القاموس‬‫الفهرسة‬ ‫عامل‬ ‫و‬ indexing operator ‫لزالة‬‫المفتاح‬‫وتمرير‬‫ذلك‬‫إلى‬‫الفادة‬
del. ‫ليست‬‫هناك‬‫حاجة‬‫لمعرفة‬‫القيمة‬‫المقابلة‬‫للمفتاح‬‫في‬‫هذه‬‫العملية‬ .
‫بعد‬‫ذلك‬‫نصل‬‫إلى‬‫كل‬‫زوج‬‫من‬ key/value ‫في‬‫القاموس‬‫باستخدام‬‫طريقة‬ items ‫من‬
‫القاموس‬‫التي‬‫تعيد‬‫قائمة‬‫من‬‫الصف‬‫حيث‬‫كل‬‫صف‬‫يحتوي‬‫زوجا‬‫من‬‫البنود‬–‫والمفتاح‬
‫متبوعا‬‫بقيمة‬.‫نسحب‬‫هذا‬‫الزوج‬‫ونسنده‬‫إلى‬‫اسم‬‫المتغيرات‬‫والعنوان‬‫المقابل‬‫لكل‬‫زوج‬
‫باستخدام‬‫الحلقة‬ for..in ، ‫ثم‬‫نطبع‬‫هذه‬‫القيم‬‫اللبنة‬ ‫في‬ for.
‫يمكننا‬‫معرفة‬‫ما‬‫اذا‬‫كان‬‫زوج‬ key/value ‫موجود‬‫باستخدام‬‫العامل‬ in ‫أ‬‫و‬‫حتى‬‫طريقة‬
has_key ‫من‬‫الفئة‬ dict ‫تستطيع‬‫أن‬‫ترى‬‫الوثائق‬‫للطلع‬‫على‬‫القائمة‬‫الكاملة‬‫للطرق‬‫من‬
‫الفئة‬ dict ‫باستخدام‬ (help(dict
‫والقواميس‬ ‫للمعطيات‬ ‫المفتاحية‬ ‫الكلمات‬
‫على‬‫صعيد‬‫آخر‬‫نلحظ‬،‫إ‬ ‫أنك‬‫ن‬‫كنت‬‫قد‬‫استخدمت‬‫للمعطياتا‬ ‫المفتاحية‬ ‫الكلمات‬‫في‬‫الدوال‬
‫الخاصة‬‫بك‬،‫ولقد‬‫سبق‬‫أ‬‫ن‬‫استخدمت‬‫قواميس‬!‫فقط‬‫فكر‬‫في‬‫ذلك‬–‫زوج‬‫مفتاح/قيمة‬‫محدد‬
‫من‬‫قِبلِك‬‫في‬‫قائمة‬‫معاملت‬‫تعريف‬‫الدالة‬،‫وعند‬‫تشغيل‬‫المتغيرات‬‫بداخل‬‫الدالة‬،‫وهو‬
‫مجرد‬‫مفتاح‬‫الوصول‬‫إلى‬‫القاموس‬)‫وهو‬‫ما‬‫يسمى‬symbol table‫في‬‫مصطلح‬‫تصميم‬
‫المصرف‬. (
‫للفهرس‬ ‫عودة‬‫للمعطيات‬ ‫المفتاحية‬ ‫الكلمات‬
‫والقواميس‬|75
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫المتسلسلت‬
‫النصية‬ ‫والسلسل‬ ‫والقوائم‬ ‫الصفوف‬‫هي‬‫أمثلة‬‫على‬‫المتسلسلت‬Sequences،‫ولكن‬‫ما‬
‫هي‬‫المتسلسلة‬،‫وماذا‬‫فيها‬‫من‬‫الخصوصية‬‫؟‬‫اثنان‬‫من‬‫السمات‬‫الرئيسية‬‫للمتسلسلة‬‫هي‬‫عملية‬
‫الفهرسة‬‫التي‬‫تتيح‬‫لنا‬‫جلب‬‫بند‬‫بعينه‬‫في‬‫المتسلسلة‬‫مباشرة‬،‫وعملية‬‫التقطيع‬‫الذي‬‫يتيح‬‫لنا‬‫أ‬‫ن‬
‫ن‬‫ستعيد‬‫شريحة‬‫من‬‫المتسلسلة‬‫أي‬‫جزءا‬‫من‬‫المتسلسلة‬.
‫المتسلسلت‬ ‫استخدام‬
‫مثال‬9.5‫المتسلسلت‬ ‫استخدام‬
#!/usr/bin/python
# Filename: seq.py
shoplist = ['apple', 'mango', 'carrot', 'banana']
# Indexing or 'Subscription' operation
print 'Item 0 is', shoplist[0]
print 'Item 1 is', shoplist[1]
print 'Item 2 is', shoplist[2]
print 'Item 3 is', shoplist[3]
print 'Item -1 is', shoplist[-1]
print 'Item -2 is', shoplist[-2]
# Slicing on a list
print 'Item 1 to 3 is', shoplist[1:3]
print 'Item 2 to end is', shoplist[2:]
print 'Item 1 to -1 is', shoplist[1:-1]
print 'Item start to end is', shoplist[:]
# Slicing on a string
name = 'swaroop'
‫للفهرس‬ ‫عودة‬‫المتسلسلت‬ ‫استخدام‬|76
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
print 'characters 1 to 3 is', name[1:3]
print 'characters 2 to end is', name[2:]
print 'characters 1 to -1 is', name[1:-1]
print 'characters start to end is', name[:]
‫الخرج‬
$ python seq.py
Item 0 is apple
Item 1 is mango
Item 2 is carrot
Item 3 is banana
Item -1 is banana
Item -2 is carrot
Item 1 to 3 is ['mango', 'carrot']
Item 2 to end is ['carrot', 'banana']
Item 1 to -1 is ['mango', 'carrot']
Item start to end is ['apple', 'mango', 'carrot', 'banana']
characters 1 to 3 is wa
characters 2 to end is aroop
characters 1 to -1 is waroo
characters start to end is swaroop
‫البرنامج‬ ‫يعمل‬ ‫كيف‬
‫أول‬،‫نرى‬‫كيفية‬‫استخدام‬‫الفهارس‬‫للحصول‬‫على‬‫عناصر‬‫فردية‬‫من‬‫المتسلسلة‬.‫وهذا‬‫أيضا‬
‫يشار‬‫اليه‬‫على‬‫انه‬‫عملية‬‫الكتتاب‬.‫كلما‬‫قمت‬‫بتحديد‬‫عدد‬‫للمتسلسلة‬‫بين‬‫معقوفتين‬[ ]‫كما‬
‫هو‬‫مبين‬‫أ‬‫عله‬،‫سوف‬‫يجلب‬‫لك‬‫بيثون‬‫البند‬‫المقابل‬‫لموضعه‬‫في‬‫المتسلسلة‬.‫نتذكر‬‫ان‬
‫بيثون‬‫يبدأ‬‫عد‬‫الرقام‬‫من‬0.‫ومن‬‫هنا‬]shoplist [0‫يجلب‬‫البند‬‫الول‬]‫و‬
shoplist [3‫يجلب‬‫البند‬‫الرابع‬‫في‬‫متسلسلة‬shoplist
‫للفهرس‬ ‫عودة‬‫المتسلسلت‬ ‫استخدام‬|77
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫يمكن‬‫للفهرس‬‫أ‬‫يضا‬‫أ‬‫ن‬‫يكون‬‫عددا‬‫سلبيا‬،‫في‬‫هذه‬،‫الحالة‬‫يحسب‬‫من‬‫نهاية‬‫المتسلسلة‬.‫فإن‬ ‫لذا‬
]shoplist [-1‫يشير‬‫إلى‬‫البند‬‫الخير‬‫في‬‫المتسلسلة‬]‫و‬shoplist [-2‫يجلب‬‫ثاني‬‫آخر‬‫بند‬
‫في‬‫المتسلسلة‬.
‫عملية‬‫التقطيع‬slicing operation‫تستخدم‬‫عن‬‫طريق‬‫تحديد‬‫اسم‬‫المتسلسلة‬‫يليها‬
-‫اختياريا‬-‫زوج‬‫من‬‫الرقام‬‫مفصولة‬‫بنقطتين‬‫داخل‬‫قوسين‬‫مربعين‬. [:]‫أن‬ ‫نلحظ‬‫هذا‬‫المر‬
‫يشبه‬‫إلى‬‫حد‬‫بعيد‬‫جدا‬‫عملية‬‫الفهرسة‬‫التي‬‫قد‬‫قمت‬‫باستعمالها‬.‫تذكر‬‫أن‬‫الرقام‬‫اختيارية‬
‫ولكن‬‫النقطتان‬‫الرأسيتان‬":"‫ليست‬‫كذلك‬.
‫الرقم‬‫الول‬)‫قبل‬‫النقطتين‬(‫في‬‫عملية‬‫التقطيع‬‫يشير‬‫إلى‬‫الموضع‬‫الذي‬‫تبدأ‬‫منه‬‫الشريحة‬،
‫والعدد‬‫الثاني‬)‫بعد‬‫النقطتين‬(‫يشير‬‫فيها‬‫للموضع‬‫الذي‬‫تتوقف‬‫عنده‬‫الشريحة‬.‫إذا‬‫كان‬‫اول‬‫عدد‬
‫غير‬‫محدد‬،‫فإن‬‫بيثون‬‫ستبدأ‬‫من‬‫بداية‬‫المتسلسلة‬.‫وإذا‬‫كان‬‫الرقم‬‫الثاني‬‫متروكا‬‫فإن‬‫بيثون‬
‫ستتوقف‬‫في‬‫نهاية‬‫المتسلسلة‬.‫علما‬‫أن‬‫الشريحة‬‫تعاود‬‫البدء‬‫عند‬‫موضع‬،‫البداية‬‫وستنتهي‬‫قبل‬
‫موضع‬‫النتهاء‬.‫مثل؛‬‫موضع‬‫البداية‬‫يضاف‬‫و‬‫أما‬‫موضع‬‫النتهاء‬‫فهو‬‫مستبعد‬‫من‬‫شريحة‬
‫المتسلسلة‬.
‫وهكذا‬]shoplist [1:3‫تعيد‬‫قطعة‬‫من‬‫المتسلسلة‬‫بدءا‬‫من‬‫الموضع‬1‫بالضافة‬‫إلى‬‫موضع‬
2،‫ولكن‬‫يتوقف‬‫عند‬‫الموضع‬3،‫وبالتالي‬‫فإن‬‫هناك‬‫قطعة‬‫من‬‫هذين‬‫البندين‬‫يعود‬.‫وبالمثل‬،
[:]shoplist‫تعيد‬‫نسخة‬‫من‬‫المتسلسلة‬‫بأكملها‬.
‫يمكنك‬‫أ‬‫يضا‬‫ال‬‫تقطيع‬‫مع‬‫المواضع‬‫السالبة‬.‫وتستخدم‬‫الرقام‬‫السالبة‬‫للمواضع‬‫من‬‫نهاية‬
‫المتسلسلة‬.‫على‬‫سبيل‬‫المثال‬]،shoplist [: -1‫سيعيد‬‫قطعة‬‫من‬‫المتسلسلة‬‫التي‬‫تستثني‬‫البند‬
‫الخير‬‫في‬‫المتسلسلة‬،‫ولكنه‬‫ل‬‫يتضمن‬‫أي‬‫شيء‬‫آخر‬.
‫جرب‬‫توليفات‬‫مختلفة‬‫من‬‫مواصفات‬‫هذه‬‫الشريحة‬‫باستخدام‬‫مفسر‬‫بيثون‬‫التفاعلي‬.‫أي‬‫المحث‬
‫الفوري‬‫بحيث‬‫يمكنك‬‫أ‬‫ن‬‫ترى‬‫النتائج‬‫فورا‬.‫والشيء‬‫العظيم‬‫في‬‫المتسلسلت‬‫هو‬‫أنك‬‫يمكنك‬
‫تشغيل‬‫الصفوف‬،‫و‬‫القوائم‬‫و‬‫النصوص‬،‫الجميع‬‫بنفس‬‫الطريقة‬!
References
‫عندما‬‫تصنع‬‫كائنا‬‫ويسند‬‫إلى‬‫أحد‬‫المتغيرات‬،‫ل‬‫تشير‬‫المتغير‬‫إل‬‫إلى‬‫كائن‬‫ول‬‫يمثل‬‫كائنا‬
‫في‬‫حد‬‫ذاته‬!‫وهذا‬‫هو‬‫المعنى‬‫المراد‬،‫أي‬‫أن‬‫اسم‬‫المتغير‬‫يشير‬‫إلى‬‫ذلك‬‫الجزء‬‫من‬‫ذاكرة‬
‫الكمبيوتر‬‫حيث‬‫تخزن‬‫فيه‬‫الكائنات‬.‫وهذا‬‫ما‬‫يسمى‬‫ربط‬binding‫السم‬‫بالكائن‬.
‫للفهرس‬ ‫عودة‬References|78
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫عموما‬،‫لست‬‫بحاجة‬‫إلى‬‫أ‬‫ن‬‫تشعر‬‫بالقلق‬‫إزاء‬‫هذا‬‫المر‬،‫ولكن‬‫ثمة‬‫تأثير‬‫رقيق‬‫بسبب‬
references‫التي‬‫تحتاج‬‫إلى‬‫أن‬‫تكون‬‫على‬‫علم‬‫بها‬.‫ويتضح‬‫ذلك‬‫من‬‫المثال‬‫التالي‬:
Objects and References
Example 9.6. Objects and References
#!/usr/bin/python
# Filename: reference.py
print 'Simple Assignment'
shoplist = ['apple', 'mango', 'carrot', 'banana']
mylist = shoplist # mylist is just another name pointing to the same object!
del shoplist[0] # I purchased the first item, so I remove it from the list
print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that both shoplist and mylist both print the same list without
# the 'apple' confirming that they point to the same object
print 'Copy by making a full slice'
mylist = shoplist[:] # make a copy by doing a full slice
del mylist[0] # remove first item
print 'shoplist is', shoplist
print 'mylist is', mylist
# notice that now the two lists are different
‫الخرج‬
$ python reference.py
Simple Assignment
‫للفهرس‬ ‫عودة‬References|79
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
shoplist is ['mango', 'carrot', 'banana']
mylist is ['mango', 'carrot', 'banana']
Copy by making a full slice
shoplist is ['mango', 'carrot', 'banana']
mylist is ['carrot', 'banana']
‫البرنامج‬ ‫يعمل‬ ‫كيف‬
‫معظم‬‫الشرح‬‫متاح‬‫في‬‫التعليقات‬‫نفسها‬.‫الذي‬ ‫المر‬‫تحتاج‬‫إلى‬‫تذكره‬‫انك‬‫إ‬‫ذا‬‫أ‬‫ردت‬‫أ‬‫ن‬‫تجعل‬
‫نسخة‬‫من‬‫القائمة‬‫أ‬‫و‬‫من‬‫تلك‬‫النواع‬‫من‬‫المتسلسلت‬‫أو‬‫الكائنات‬‫المعقدة‬)‫ليست‬‫كائنات‬
‫بسيطة‬‫مثل‬‫العداد‬‫الصحيحة‬(،‫فإن‬‫عليك‬‫أن‬‫تستخدم‬‫عملية‬‫التقطيع‬slicing operation
‫لعمل‬‫نسخة‬‫إ‬ .‫ذا‬‫قمت‬‫فقط‬‫بمجرد‬‫إ‬‫سناد‬‫اسم‬‫المتغير‬‫إلى‬‫اسم‬‫آخر‬،‫كلهما‬‫يشير‬‫إلى‬‫الكائن‬
‫ذاته‬،‫فهذا‬‫يمكن‬‫أ‬‫ن‬‫يؤدي‬‫إلى‬‫جميع‬‫أ‬‫نواع‬‫المتاعب‬‫إ‬‫ذا‬‫لم‬‫تكن‬‫حذرا‬.
: ‫بيرل‬ ‫لمبرمجي‬ ‫ملحظة‬
‫تقطيع‬ ‫بعملية‬ ‫تقوم‬ ‫أن‬ ‫عليك‬ ، ‫منها‬ ‫نسخة‬ ‫ينشئ‬ ‫ل‬ ‫القوائم‬ ‫إلى‬ ‫فئة‬ ‫إسناد‬ ‫أن‬ ‫تذكر‬slicing
operation. ‫المتسلسلة‬ ‫من‬ ‫نسخة‬ ‫لعمل‬
‫المزيد‬‫عن‬‫السلسل‬‫النصية‬
‫لقد‬‫ناقشنا‬‫بالفعل‬‫السلسل‬‫النصية‬‫بالتفصيل‬‫في‬‫وقت‬‫سابقا‬.‫ما‬‫المزيد‬‫الذي‬‫يمكن‬‫معرفته‬
‫عنها؟‬
‫حسنا‬،‫هل‬‫تعرف‬‫ان‬‫السلسل‬‫النصية‬‫تعتبر‬‫هي‬‫أيضا‬objects‫ولديها‬‫الساليب‬‫لفعل‬‫كل‬
‫شيء‬‫من‬‫أول‬‫فحص‬‫جزء‬‫من‬‫النص‬‫حتى‬‫تعرية‬‫المساحات‬!
‫النصية‬ ‫السلسل‬‫التي‬‫تستخدمها‬‫في‬‫البرنامج‬‫هي‬‫جميع‬‫الكائن‬) ‫الفئة‬ ‫من‬str(‫بعض‬‫من‬‫الطرق‬
‫المفيدة‬‫لهذه‬‫الفئة‬‫تتجلى‬‫في‬‫المثال‬‫التالي‬.‫وللحصول‬‫على‬‫قائمة‬‫كاملة‬‫من‬‫هذه‬‫الطرق‬،‫انظر‬
)help(str.
‫مثال‬9.7‫النصية‬ ‫السلسل‬ ‫طرق‬
#!/usr/bin/python
# Filename: str_methods.py
name = 'Swaroop' # This is a string object
‫للفهرس‬ ‫عودة‬‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬|80
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
if name.startswith('Swa'):
print 'Yes, the string starts with "Swa"'
if 'a' in name:
print 'Yes, it contains the string "a"'
if name.find('war') != -1:
print 'Yes, it contains the string "war"'
delimiter = '_*_'
mylist = ['Brazil', 'Russia', 'India', 'China']
print delimiter.join(mylist)
‫الخرج‬
$ python str_methods.py
Yes, the string starts with "Swa"
Yes, it contains the string "a"
Yes, it contains the string "war"
Brazil_*_Russia_*_India_*_China
‫كيف‬‫يعمل‬‫البرنامج‬
‫هنا‬،‫نرى‬‫الكثير‬‫من‬‫أساليب‬‫السلسل‬‫النصية‬strings‫داخل‬‫العمل‬‫طريق‬.Startswith
‫تستخدم‬‫لمعرفة‬‫ما‬‫اذا‬‫كانت‬‫السلسلة‬‫النصية‬‫تبدأ‬‫مع‬‫الجملة‬‫المعطاة‬.‫المشغل‬in‫يستخدم‬
‫لفحص‬‫ما‬‫اذا‬‫كان‬‫النص‬‫المعطى‬‫هو‬‫جزء‬‫من‬‫السلسلة‬‫النصية‬..
‫طريقة‬find‫تستخدم‬‫ليجاد‬‫موضع‬‫النص‬‫المعطى‬‫في‬string‫أو‬‫إعادة‬1-‫اذا‬‫لم‬‫يتم‬‫النجاح‬
‫في‬‫العثور‬‫على‬‫النص‬‫الثانوي‬.‫الفئة‬str‫لها‬‫أيضا‬‫طريقه‬‫بارعة‬‫في‬‫ربط‬‫بنود‬‫من‬‫المتسلسلة‬
‫مع‬‫السلسلة‬‫النصية‬string‫بصفتها‬‫محدد‬‫بين‬‫كل‬‫بند‬‫من‬‫المتسلسلة‬sequence‫وتعيد‬
‫للفهرس‬ ‫عودة‬‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬|81
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫أكبر‬‫سلسلة‬‫نصية‬‫متولدة‬‫منها‬.
‫الخلصة‬
‫لقد‬‫قمنا‬‫باستكشاف‬‫هياكل‬‫البيانات‬‫المدمجة‬‫في‬‫بيثون‬‫بالتفصيل‬.‫هياكل‬‫البيانات‬‫هذه‬‫ستكون‬
‫أ‬‫ساسية‬‫عند‬‫كتابة‬‫برامج‬‫بحجم‬‫معقول‬.
‫واﻵن‬‫لدينا‬‫الكثير‬‫من‬‫أساسيات‬‫بيثون‬‫في‬‫مكان‬،‫واحد‬‫و‬‫سوف‬‫نرى‬‫فيما‬‫يلي‬‫كيفية‬‫تصميم‬
‫وكتابة‬‫برنامج‬‫في‬‫العالم‬‫الحقيقي‬‫لبايثون‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|82
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬10‫بيثون‬ ‫سكربت‬ ‫كتابه‬ - ‫مشكلة‬ ‫.حل‬
‫قائمة‬‫المحتويات‬
‫المشكلة‬
‫الحل‬
‫الصدارة‬‫الولى‬}‫للسكربت‬{
‫الصدارة‬‫الثانية‬
‫الصدارة‬‫الثالثة‬
‫الصدارة‬‫الرابعة‬
‫مزيد‬‫من‬‫التهذيب‬
‫عملية‬‫البرمجيات‬ ‫تطوير‬
‫ال‬‫خلصة‬
‫لقد‬‫استكشفنا‬‫أجزاء‬‫مختلفة‬‫من‬‫لغة‬‫بيثون‬‫واﻵن‬‫سوف‬‫نلقي‬‫نظرة‬‫على‬‫الطريقة‬‫التي‬‫تناسب‬
‫جميع‬‫هذه‬‫الجزاء‬‫معا‬،‫عن‬‫طريق‬‫تصميم‬‫وكتابة‬‫البرنامج‬‫الذي‬‫شيئا‬ ‫يفعل‬ً‫مفيدا‬.
‫المشكلة‬
‫المشكلة‬‫هي‬‫أنني‬‫أريد‬‫برنامجا‬‫يقوم‬‫بعمل‬‫نسخة‬‫احتياطية‬‫من‬‫جميع‬‫ملفاتي‬‫ورغم‬‫أن‬‫هذا‬
‫بمثابة‬‫مشكلة‬‫بسيطة‬،‫ليست‬‫هناك‬‫معلومات‬‫كافية‬‫بالنسبة‬‫لنا‬‫لنبدأ‬‫عملية‬‫الحل‬.‫مزيدا‬ ‫نحتاج‬
‫من‬‫التحليل‬.‫على‬‫سبيل‬‫المثال‬،‫كيف‬‫يمكننا‬‫أن‬‫نحدد‬‫الملفات‬‫التي‬‫سيتم‬‫نسخها‬‫احتياطيا‬‫؟‬
‫أين‬‫ستوضع‬‫النسخة‬‫الحتياطية‬‫المخزنة‬‫؟‬‫كيف‬‫يتم‬‫تخزينها‬‫في‬‫النسخة‬‫الحتياطية؟‬
‫بعد‬‫تحليل‬‫المشكلة‬‫بشكل‬‫صحيح‬،‫نصمم‬‫برنامجنا‬.‫نقوم‬‫بتجهيز‬‫قائمة‬‫من‬‫المور‬‫حول‬‫كيفية‬
‫عمل‬‫برنامجنا‬.‫وفي‬‫هذه‬‫الحالة‬،‫قمت‬‫بإنشاء‬‫القائمة‬‫التالية‬‫بشأن‬‫كيفية‬‫قيامها‬‫بالعمل‬‫إ‬ .‫ذا‬
‫قمت‬‫بعمل‬‫التصميم‬،‫لعلك‬‫ل‬‫تواجه‬‫نفس‬‫النوع‬‫من‬‫المشاكل‬--‫كل‬‫شخص‬‫له‬‫طريقته‬
‫الخاصة‬‫لتسيير‬‫المور‬،‫وهذا‬‫أمر‬‫طيب‬.
1.‫الملفات‬‫والدلة‬‫التي‬‫نعمل‬‫لها‬‫نسخة‬‫احتياطية‬‫محددة‬‫في‬‫قائمة‬.
2.‫النسخة‬‫الحتياطية‬‫يجب‬‫أن‬‫تكون‬‫مخزنة‬‫في‬‫الدليل‬‫الرئيس‬‫للنسخ‬‫الحتياطي‬.
3.‫الملفات‬ ‫ستحزم‬‫في‬‫ملف‬‫مضغوط‬.
4.‫اسم‬‫الرشيف‬‫المضغوط‬‫يتضمن‬‫التاريخ‬‫والوقت‬‫الحالي‬.
5.‫نستخدم‬‫المر‬‫القياسي‬zip‫المتاح‬‫بشكل‬‫افتراضي‬‫في‬‫أي‬‫توزيعة‬‫قياسية‬‫من‬‫لينكس‬/
‫يونكس‬.‫ويمكن‬‫لمستخدمي‬‫ويندوز‬‫استخدام‬‫برنامج‬Info-Zip program–‫علما‬‫بأ‬‫نه‬
‫يمكنك‬‫استخدام‬‫أ‬‫ي‬‫أمر‬‫لبرنامج‬‫أرشفة‬‫تريده‬‫طالما‬‫ان‬‫واجهة‬ ‫له‬‫سطر‬‫الوامر‬،‫حتى‬‫يتسنى‬
‫للفهرس‬ ‫عودة‬‫المشكلة‬|83
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫لنا‬‫تمرير‬‫القيم‬‫إليه‬‫من‬‫السكربت‬‫الخاص‬‫بنا‬.
‫الحـل‬:
‫وبما‬‫أن‬‫تصميم‬‫برنامجنا‬‫اﻵن‬‫مستقر‬،‫يمكننا‬‫أن‬‫نكتب‬‫الكود‬‫الذي‬‫يُعتبر‬‫أداتنا‬‫لتنفيذ‬‫الحل‬.
‫الول‬ ‫الصدار‬
‫مثال‬10.1‫الول‬ ‫الصدار‬ – ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬
#!/usr/bin/python
# Filename: backup_ver1.py
import os
import time
# 1. The files and directories to be backed up are specified in a list.
source = ['/home/swaroop/byte', '/home/swaroop/bin']
# If you are using Windows, use source = [r'C:Documents', r'D:Work'] or
something like that
# 2. The backup must be stored in a main backup directory
target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using
# 3. The files are backed up into a zip file.
# 4. The name of the zip archive is the current date and time
target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip'
# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
‫للفهرس‬ ‫عودة‬‫الول‬ ‫الصدار‬|84
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
print 'Successful backup to', target
else:
print 'Backup FAILED'
‫الخرج‬
$ python backup_ver1.py
Successful backup to /mnt/e/backup/20041208073244.zip
‫نحن‬‫اﻵن‬‫في‬‫مرحلة‬‫الختبار‬‫؛‬‫حيث‬‫إننا‬‫نختبر‬‫كون‬‫برنامجنا‬‫يعمل‬‫بشكل‬‫سليم‬.‫فإذا‬‫لم‬
‫يتصرف‬‫كما‬‫هو‬‫متوقع‬،‫فسيكون‬‫علينا‬‫النتقال‬‫إ‬‫لى‬‫مرحلة‬/‫تصحيح‬debug‫برنامجنا‬‫؛‬‫أ‬‫ي‬‫إ‬‫زالة‬
‫الخطاء‬bugs‫من‬‫البرنامج‬.
‫كيف‬‫يعمل‬
‫ستلحظ‬‫كيف‬‫قمنا‬‫بتحويل‬‫ما‬‫لدينا‬‫من‬‫تصميم‬‫إ‬‫لى‬‫شفرة‬‫خطوة‬‫فخطوة‬.‫ونحن‬‫نستخدم‬
‫الوحدة‬os‫و‬time‫ولذا‬‫قمنا‬‫باستيرادها‬.‫ثم‬،‫نحدد‬‫الملفات‬‫والدلة‬‫التي‬‫سيتم‬‫نسخها‬
‫احتياطيا‬‫في‬" ‫قائمة‬source“.‫الوجهة‬ ‫الدليل‬‫يعني‬‫مكان‬‫تخزين‬‫جميع‬‫الملفات‬‫الحتياطية‬،
‫وهذا‬‫هو‬‫المحدد‬‫في‬‫المتغير‬"target_dir"‫اسم‬‫الرشيف‬‫المضغوط‬‫الذي‬‫سنقوم‬‫بإنشائه‬‫هو‬
‫التاريخ‬‫الحالي‬‫والوقت‬‫الذي‬‫يجلب‬‫لنا‬‫باستخدام‬() ‫الدالة‬time.strftime.‫وسوف‬‫يكون‬
‫أ‬‫يضا‬.‫بامتداد‬.zip‫وسيخزن‬‫في‬‫الدليل‬target_dir
() ‫الدالة‬time.strftime‫تأخذ‬‫مواصفات‬‫مثل‬‫التي‬‫استخدمناها‬‫في‬‫البرنامج‬‫المذكور‬‫أ‬‫عله‬.
‫الصفة‬%Y‫سيحل‬‫محلها‬‫السنة‬‫بدون‬‫القرن‬،‫والصفة‬%m‫سيحل‬‫محلها‬‫الشهر‬‫بوصفها‬‫رقم‬
‫عشري‬‫بين‬01‫و‬12‫وهلم‬‫جرا‬.‫والقائمة‬‫الكاملة‬‫لهذه‬‫المواصفات‬‫يمكن‬‫العثور‬‫عليها‬‫في‬
]‫الدليل‬‫المرجعي‬‫لبايثون‬[]Python Reference Manual[‫الذي‬‫يأتي‬‫مع‬‫بيثون‬‫في‬
‫التوزيعة‬‫الخاصة‬‫بك‬.‫لحظ‬‫أ‬‫ن‬‫هذا‬‫مشابه‬)‫ولكن‬‫ليس‬‫على‬‫النحو‬‫نفسه‬(‫للمواصفات‬
‫المستخدمة‬‫في‬‫إفادة‬print)‫باستخدام‬٪-‫بصف‬ ‫متبوعة‬tuple(
‫قمنا‬‫بعمل‬‫اسم‬‫الدليل‬‫المضغوط‬target‫باستخدام‬‫عامل‬‫الضافة‬‫الذي‬‫يشبك‬‫الجمل‬‫أ‬‫ي‬‫يربط‬
‫بين‬‫اثنين‬‫معا‬‫ويعيدها‬‫إلينا‬‫واحدة‬‫جديدة‬.‫ثم‬،‫ننشئ‬‫سلسلة‬‫نصية‬:zip_command،
‫والتي‬‫تتضمن‬‫المر‬‫الذي‬‫سنقوم‬‫بتنفيذه‬.‫يمكنك‬‫معرفة‬‫ما‬‫إ‬‫ذا‬‫كان‬‫هذا‬‫المر‬‫يعمل‬‫عن‬‫طريق‬
‫تشغيله‬‫في‬‫الصدفة‬)‫طرفية‬‫لينكس‬‫أو‬‫محث‬‫دوس‬(
‫المر‬zip‫الذي‬‫نستخدمه‬‫يحتوي‬‫بعض‬‫الخيارات‬‫الممررة‬ ‫والمعاملت‬–‫الخيار‬q‫يستخدم‬
‫للشارة‬‫إلى‬‫أ‬‫ن‬‫المر‬zip‫ينبغي‬‫أن‬‫يعمل‬‫بهدوء‬‫تماما‬–‫الخيار‬r‫يحدد‬‫أ‬‫ن‬‫المر‬zip‫يجب‬
‫أ‬‫ن‬‫ي‬‫عمل‬‫بشكل‬‫تتابعيا‬)recursively‫الدلة‬ ‫في‬ (‫أ‬‫ي‬‫ينبغي‬‫أ‬‫ن‬‫تشمل‬‫الدلة‬‫الفرعية‬‫والملفات‬
‫للفهرس‬ ‫عودة‬‫الول‬ ‫الصدار‬|85
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫داخل‬‫الدلة‬‫الفرعية‬‫كذلك‬.‫وقد‬‫تم‬‫الجمع‬‫بين‬‫خيارين‬‫ل‬‫ثالث‬‫لهما‬‫مختصر‬ ‫بشكل‬‫وهما‬qr–
‫هذه‬‫الخيارات‬‫متبوعة‬‫باسم‬‫الرشيف‬‫المضغوط‬‫المراد‬‫إنشاؤه‬‫متبوعا‬‫بقائمة‬‫الملفات‬‫والدلة‬
‫التي‬‫سنقوم‬‫بنسخها‬‫احتياطيا‬.‫نحن‬‫نحول‬‫قائمة‬source‫داخل‬‫الجملة‬‫باستخدام‬‫طريقة‬
join‫لضم‬‫الجمل‬‫والتي‬‫شاهدنا‬‫بالفعل‬‫كيفية‬‫استخدامها‬.
‫وأخيرا‬‫نشغل‬‫المر‬‫باستخدام‬‫الدالة‬os.system‫المر‬ ‫تشغل‬ ‫التي‬‫كما‬‫لو‬‫كان‬‫يعمل‬‫من‬
‫داخل‬‫النظام‬‫في‬‫الصدفة‬–‫وهو‬‫يعيد‬‫لنا‬0‫إذا‬‫تمت‬‫العملية‬‫بنجاح‬،‫وإل‬‫فانه‬‫يعيد‬‫إلينا‬‫رقم‬
‫الخطأ‬.
‫واعتمادا‬‫على‬‫نتيجة‬‫المر‬،‫نقوم‬‫بطباعة‬‫رسالة‬‫مناسبة‬‫بأن‬‫النسخة‬‫الحتياطية‬‫فشلت‬‫أو‬‫نجحت‬
،‫وهذا‬‫هو‬‫كل‬‫ما‬‫في‬‫الموضوع‬،‫لقد‬‫قمنا‬‫بإنشاء‬‫سكربت‬‫لعمل‬‫نسخة‬‫احتياطية‬‫من‬‫الملفات‬
‫المهمة‬!
: ‫ويندوز‬ ‫لمستخدمي‬ ‫ملحظة‬
‫القائمة‬ ‫تحدد‬ ‫أن‬ ‫يمكنك‬source‫والدليل‬target‫أن‬ ‫يجب‬ ‫ولكن‬ ،‫دليل‬ ‫أو‬ ‫ملف‬ ‫اسم‬ ‫لي‬
) ‫يستخدم‬ ‫ويندوز‬ ‫أن‬ ‫هي‬ ‫والمشكلة‬ .‫ويندوز‬ ‫في‬ ‫قليل‬ ‫حذرا‬ ‫تكون‬‫الخلفية‬ ‫المائلة‬ ‫الشرطة‬ (
‫الخلوص‬ ‫تتابعات‬ ‫لتمثيل‬ ‫الخلفية‬ ‫المائلة‬ ‫الشرطة‬ ‫تستخدم‬ ‫بيثون‬ ‫ولكن‬ ،‫الدلة‬ ‫كفاصل‬
)escape sequences.(
‫تستخدم‬ ‫أن‬ ‫عليك‬ ‫أو‬ ‫خلوص‬ ‫تتابع‬ ‫ذاتهاباستخدام‬ ‫الخلفية‬ ‫الشرطة‬ ‫تمثل‬ ‫أن‬ ‫عليك‬ ،‫لذلك‬raw
strings‫استخدم‬ ،‫المثال‬ ‫سبيل‬ ‫على‬ .'C:Documents'‫أو‬r'C:Documents'‫ولكن‬‫ل‬
‫تستخدم‬'C:Documents'‫مجهول‬ ‫خلوص‬ ‫تتابع‬ ‫تستخدم‬ ‫هكذا‬ ‫فأنت‬D.
‫نأخهذ‬ ‫أن‬ ‫نريهد‬ ‫ا‬‫ه‬‫حينم‬ ‫اسهتخدامه‬ ‫يمكننها‬ ،‫الحتيهاطي‬ ‫للنسهخ‬ ‫سهكربت‬ ‫بعمهل‬ ‫ا‬‫ه‬‫قمن‬ ‫أننها‬ ‫وحيهث‬ ،‫اﻵهن‬
‫باسهتخدام‬ ‫لينكهس/يهونكس‬ ‫مسهتخدمو‬ ‫وينصهح‬ .‫الملفهات‬ ‫مهن‬ ‫احتياطيهة‬ ‫نسهخة‬‫الملف‬‫ه‬‫طريقةه‬
‫التنفيذي‬‫في‬ ‫الحتياطي‬ ‫النسخ‬ ‫برنامج‬ ‫تشغيل‬ ‫من‬ ‫يتمكنوا‬ ‫حتى‬ ،‫مناقشته‬ ‫سبق‬ ‫الذي‬ ‫النحو‬ ‫على‬
‫مرحلة‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫مكان‬ ‫أي‬ ‫وفي‬ ‫وقت‬ ‫أي‬‫التشغيل‬‫مرحلة‬ ‫أو‬‫نشر‬.‫البرمجيات‬
‫على‬ .‫تتوقع‬ ‫كنت‬ ‫كما‬ ‫تماما‬ ‫تعمل‬ ‫ل‬ ‫الولى‬ ‫البرامج‬ (‫)عادة‬ ‫ولكن‬ ،‫صحيح‬ ‫بشكل‬ ‫أعله‬ ‫البرنامج‬ ‫يعمل‬
‫أخطأت‬ ‫قد‬ ‫كنت‬ ‫إذا‬ ‫أو‬ ،‫صحيح‬ ‫بشكل‬ ‫البرنامج‬ ‫تصمم‬ ‫لم‬ ‫كنت‬ ‫إذا‬ ‫مشاكل‬ ‫هناك‬ ‫تكون‬ ‫قد‬ ،‫المثال‬ ‫سبيل‬
.‫برنامجك‬ ‫علل‬ ‫لتتبع‬ ‫ستضطر‬ ‫أو‬ ‫التصميم‬ ‫مرحلة‬ ‫إلى‬ ‫العودة‬ ‫عليك‬ ‫سيتعين‬ .‫إلخ‬ ،‫الكود‬ ‫كتابه‬ ‫في‬
‫الثاني‬ ‫الصدار‬:
‫أن‬ ‫يمكنه‬ ‫حتى‬ ‫عليه‬ ‫التحسينات‬ ‫بعض‬ ‫يمكنناإدخال‬ ،‫ولكن‬ .‫يعمل‬ ‫برنامجنا‬ ‫من‬ ‫الول‬ ‫الصدار‬
‫مرحلة‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫يومى‬ ‫أساس‬ ‫على‬ ‫أفضل‬ ‫نحو‬ ‫على‬ ‫يعمل‬‫صيانة‬.‫البرمجيات‬
‫للفهرس‬ ‫عودة‬‫الثاني‬ ‫الصدار‬:|86
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫باستخدام‬ - ‫الملفات‬ ‫لتسمية‬ ‫أفضل‬ ‫ميكانيكية‬ ‫هي‬ ‫بفائدتها‬ ‫شعرت‬ ‫التي‬ ‫التحسينات‬ ‫هذه‬ ‫أحد‬
time‫الحالي‬ ‫التاريخ‬ ‫يحمل‬ ‫دليل‬ ‫بداخل‬ ‫للملف‬ ‫كاسم‬date‫النسخة‬ ‫دليل‬ ‫ضمن‬ ‫كدليل‬
‫ولذا‬ ،‫هرمية‬ ‫بطريقة‬ ‫تخزينها‬ ‫سيتم‬ ‫الحتياطية‬ ‫نسخك‬ ‫أن‬ ‫هي‬ ‫الميزات‬ ‫أحد‬ .‫الرئيس‬ ‫الحتياطية‬
‫بهذه‬ ‫بكثير‬ ‫أقصر‬ ‫الملفات‬ ‫أسماء‬ ‫طول‬ ‫أن‬ ‫وهي‬ ‫أخرى‬ ‫ميزة‬ ‫وهناك‬ .‫إدارتها‬ ‫السهل‬ ‫من‬ ‫سيكون‬
‫ما‬ ‫إذا‬ ‫بسهولة‬ ‫تعرف‬ ‫أن‬ ‫ستساعدك‬ ‫المنفصلة‬ ‫الدلة‬ ‫أن‬ ‫هي‬ ‫أخرى‬ ‫ميزة‬ ‫هناك‬ ‫وأيضا‬ .‫الطريقة‬
‫أخذت‬ ‫قد‬ ‫كنت‬ ‫إذا‬ ‫إل‬ ‫الدليل‬ ‫ينشأ‬ ‫لن‬ ‫حيث‬ ‫يوم‬ ‫كل‬ ‫عن‬ ‫احتياطية‬ ‫نسخة‬ ‫بعمل‬ ‫قمت‬ ‫قد‬ ‫كنت‬
.‫اليوم‬ ‫لذلك‬ ‫احتياطية‬ ‫نسخة‬
‫مثال‬10.2‫الثاني‬ ‫الصدار‬ -‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬
#!/usr/bin/python
# Filename: backup_ver2.py
import os
import time
# 1. The files and directories to be backed up are specified in a list.
source = ['/home/swaroop/byte', '/home/swaroop/bin']
# If you are using Windows, use source = [r'C:Documents', r'D:Work'] or
something like that
# 2. The backup must be stored in a main backup directory
target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using
# 3. The files are backed up into a zip file.
# 4. The current day is the name of the subdirectory in the main directory
today = target_dir + time.strftime('%Y%m%d')
# The current time is the name of the zip archive
now = time.strftime('%H%M%S')
# Create the subdirectory if it isn't already there
if not os.path.exists(today):
‫للفهرس‬ ‫عودة‬‫الثاني‬ ‫الصدار‬:|87
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
os.mkdir(today) # make directory
print 'Successfully created directory', today
# The name of the zip file
target = today + os.sep + now + '.zip'
# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'
‫الخرج‬
$ python backup_ver2.py
Successfully created directory /mnt/e/backup/20041208
Successful backup to /mnt/e/backup/20041208/080020.zip
$ python backup_ver2.py
Successful backup to /mnt/e/backup/20041208/080428.zip
‫يعمل‬ ‫كيف‬
‫أجزاء‬ ‫معظم‬‫هذا‬‫البرنامج‬‫التغيير‬ ‫يعترها‬ ‫لم‬.‫والتغيرات‬‫هي‬‫أ‬‫ننا‬‫نتحقق‬‫إ‬‫ذا‬‫كان‬‫هناك‬‫دليل‬
‫باسم‬‫اليوم‬‫الحالي‬‫داخل‬‫الدليل‬‫الرئيس‬‫للنسخة‬‫الحتياطية‬‫باستخدام‬‫الدالة‬os.exists.‫فإذا‬
‫يكن‬ ‫لم‬‫موجودا‬،‫فنحن‬‫ننشئه‬‫مستخدمين‬‫الدالة‬os.mkdir.
‫لحظ‬‫استخدام‬‫المتغير‬os.sep-‫فهو‬‫للدلة‬ ‫يعطيفاصل‬‫وفقا‬‫لنظام‬‫التشغيل‬‫الخاص‬‫بك‬‫أ‬‫ي‬
‫انه‬‫سيكون‬'/'‫في‬‫لينكس‬،‫و‬‫يونيكس‬،‫وسيكون‬' '‫في‬‫ويندوز‬‫و‬':'‫في‬‫نظام‬‫تشغيل‬
‫ماكنتوش‬.‫استخدام‬Os.sep‫بدل‬‫من‬‫هذه‬‫الحروف‬‫بشكل‬‫مباشر‬‫ستجعل‬‫برنامجنا‬‫محمول‬
‫ويعمل‬‫عبر‬‫هذه‬‫النظم‬.
‫للفهرس‬ ‫عودة‬‫الثاني‬ ‫الصدار‬:|88
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الصدار‬: ‫الثالث‬
‫كون‬‫ت‬ ‫ندما‬‫ع‬ ‫كن‬‫ول‬ ،‫ية‬‫الحتياط‬ ‫سخ‬‫الن‬ ‫من‬ ‫كثير‬‫ال‬ ‫مل‬‫بع‬ ‫قوم‬‫أ‬ ‫ندما‬‫ع‬ ‫يدا‬‫ج‬ ‫مل‬‫تع‬ ‫ية‬‫الثان‬ ‫سخة‬‫الن‬
‫نسخة‬ ‫كل‬ ‫من‬ ‫الغرض‬ ‫بين‬ ‫التفريق‬ ‫في‬ ‫صعوبة‬ ‫وجدت‬ ،‫الحتياطية‬ ‫النسخ‬ ‫من‬ ‫كبير‬ ‫كم‬ ‫هناك‬
‫فأريهد‬ ،‫عهرض‬ ‫أو‬ ‫برنامهج‬ ‫علهى‬ ‫الرئيسهة‬ ‫التغييهرات‬ ‫بعهض‬ ‫قمهت‬ ‫إذا‬ ،‫ال‬‫ه‬‫المث‬ ‫سهبيل‬ ‫فعلهى‬ ،‫احتياطيهة‬
‫تعليق‬ ‫إرفاق‬ ‫طريق‬ ‫عن‬ ‫بسهولة‬ ‫تحقيقه‬ ‫يمكن‬ ‫وهذا‬ .‫المضغوط‬ ‫الملف‬ ‫باسم‬ ‫التغييرات‬ ‫هذه‬ ‫ربط‬
.‫المضغوط‬ ‫الرشيف‬ ‫باسم‬ ‫المستخدم‬ ‫من‬.
‫مثال‬10.3(‫يعمل‬ ‫)ل‬ ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬
#!/usr/bin/python
# Filename: backup_ver2.py
import os
import time
# 1. The files and directories to be backed up are specified in a list.
source = ['/home/swaroop/byte', '/home/swaroop/bin']
# If you are using Windows, use source = [r'C:Documents', r'D:Work'] or
something like that
# 2. The backup must be stored in a main backup directory
target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using
# 3. The files are backed up into a zip file.
# 4. The current day is the name of the subdirectory in the main directory
today = target_dir + time.strftime('%Y%m%d')
# The current time is the name of the zip archive
now = time.strftime('%H%M%S')
# Take a comment from the user to create the name of the zip file
comment = raw_input('Enter a comment --> ')
if len(comment) == 0: # check if a comment was entered
‫للفهرس‬ ‫عودة‬‫الثالث‬ ‫الصدار‬:|89
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
target = today + os.sep + now + '.zip'
else:
target = today + os.sep + now + '_' +
comment.replace(' ', '_') + '.zip'
# Create the subdirectory if it isn't already there
if not os.path.exists(today):
os.mkdir(today) # make directory
print 'Successfully created directory', today
# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'
‫الخرج‬
$ python backup_ver3.py
File "backup_ver3.py", line 25
target = today + os.sep + now + '_' +
^
SyntaxError: invalid syntax
‫كيف‬‫لم‬‫يعمل‬‫البرنامج‬‫؟‬
‫هذا‬‫البرنامج‬‫ل‬‫يعمل‬.!‫بيثون‬‫ت‬‫قول‬‫إ‬‫ن‬‫ثمة‬‫خطأ‬‫صياغي‬‫مما‬‫يعني‬‫أ‬‫ن‬‫البرنامج‬‫ل‬‫يوفي‬
‫التركيب‬‫الذي‬‫ت‬‫توقعه‬‫بيثون‬.‫عندما‬‫نلحظ‬‫الخطأ‬‫الذي‬‫قدمته‬‫بيثون‬،‫كذلك‬‫ت‬‫خبرنا‬‫عن‬
‫المكان‬‫الذي‬‫اكتشفت‬‫الخطأ‬.‫ستبدأ‬ ‫لذا‬‫الخطأ‬ ‫تتبع‬.‫السطر‬ ‫هذا‬ ‫من‬
‫أن‬ ‫نوضح‬ ‫لم‬ ‫ولكننا‬ ،‫ماديين‬ ‫سطرين‬ ‫الى‬ ‫انقسم‬ ‫قد‬ ‫منطقيا‬ ‫سطرا‬ ‫أن‬ ‫نرى‬ ،‫الدقيقة‬ ‫وبالملحظة‬
‫للفهرس‬ ‫عودة‬‫الثالث‬ ‫الصدار‬:|90
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
) ‫الضافة‬ ‫عامل‬ ‫أن‬ ‫بيثون‬ ‫وجدت‬ ‫فقد‬ ،‫ببساطة‬ .‫معا‬ ‫الماديين‬ ‫السطرين‬ ‫هذين‬+‫حدود‬ ‫بدون‬ (
‫حسابية‬operand‫أن‬ ‫يمكن‬ ‫أننا‬ ‫تذكر‬ .‫العمل‬ ‫تواصل‬ ‫كيف‬ ‫تعرف‬ ‫ل‬ ‫وبالتالي‬ ،‫السطر‬ ‫هذا‬ ‫في‬
‫المائلة‬ ‫الشرطة‬ ‫باستخدام‬ ‫القادم‬ ‫المادي‬ ‫السطر‬ ‫في‬ ‫متواصل‬ ‫يزال‬ ‫ل‬ ‫المنطقي‬ ‫السطر‬ ‫أن‬ ‫نحدد‬
) ‫الخلفية‬backslash‫وهذا‬ .‫برنامجنا‬ ‫في‬ ‫التصحيح‬ ‫بهذا‬ ‫نقوم‬ ‫لذا‬ .‫المادي‬ ‫السطر‬ ‫نهاية‬ ‫في‬ (
) ‫الخطأ‬ ‫إصلح‬ ‫يسمى‬ ‫ما‬bug fixing.(
‫ال‬‫صدار‬‫الرابع‬
‫مثال‬10.4‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬
#!/usr/bin/python
# Filename: backup_ver2.py
import os, time
# 1. The files and directories to be backed up are specified in a list.
source = ['/home/swaroop/byte', '/home/swaroop/bin']
# If you are using Windows, use source = [r'C:Documents', r'D:Work'] or
something like that
# 2. The backup must be stored in a main backup directory
target_dir = '/mnt/e/backup/' # Remember to change this to what you will be
using
# 3. The files are backed up into a zip file.
# 4. The current day is the name of the subdirectory in the main directory
today = target_dir + time.strftime('%Y%m%d')
# The current time is the name of the zip archive
now = time.strftime('%H%M%S')
‫للفهرس‬ ‫عودة‬‫الرابع‬ ‫الصدار‬|91
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
# Take a comment from the user to create the name of the zip file
comment = raw_input('Enter a comment --> ')
if len(comment) == 0: # check if a comment was entered
target = today + os.sep + now + '.zip'
else:
target = today + os.sep + now + '_' + 
comment.replace(' ', '_') + '.zip'
# Notice the backslash!
# Create the subdirectory if it isn't already there
if not os.path.exists(today):
os.mkdir(today) # make directory
print 'Successfully created directory', today
# 5. We use the zip command (in Unix/Linux) to put the files in a zip archive
zip_command = "zip -qr '%s' %s" % (target, ' '.join(source))
# Run the backup
if os.system(zip_command) == 0:
print 'Successful backup to', target
else:
print 'Backup FAILED'
‫الخرج‬
$ python backup_ver4.py
Enter a comment --> added new examples
Successful backup to /mnt/e/backup/20041208/082156_added_new_examples.zip
$ python backup_ver4.py
‫للفهرس‬ ‫عودة‬‫الرابع‬ ‫الصدار‬|92
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Enter a comment -->
Successful backup to /mnt/e/backup/20041208/082316.zip
‫كيف‬‫يعمل‬‫البرنامج‬:
‫النسخه‬ ‫في‬ ‫بعملها‬ ‫قمنا‬ ‫التي‬ ‫الفعلية‬ ‫التحسينات‬ ‫نستعرض‬ ‫دعونا‬ !‫اﻵن‬ ‫يعمل‬ ‫البرنامج‬ ‫هذا‬3.
‫دالة‬ ‫باستخدام‬ ‫المستخدم‬ ‫تعليقات‬ ‫نأخذ‬raw_input‫قد‬ ‫المستخدم‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫نتحقق‬ ‫ثم‬
‫الدالة‬ ‫باستخدام‬ ‫المدخلت‬ ‫طول‬ ‫باستوضاح‬ ‫بالفعل‬ ‫شيئا‬ ‫به‬ ‫أدخل‬len‫بمجرد‬ ‫المستخدم‬ ‫قام‬ ‫إذا‬ .
‫مفتاح‬ ‫على‬ ‫بالضغط‬enter‫أية‬ ‫تتم‬ ‫لم‬ ‫أو‬ ،‫روتينة‬ ‫نسخة‬ ‫مجرد‬ ‫كانت‬ ‫)لعلها‬ ‫ما‬ ‫لسبب‬
.‫قبل‬ ‫من‬ ‫فعلنا‬ ‫كما‬ ‫نواصل‬ ‫فإننا‬ ،(‫تغييرات‬
‫المتداد‬ ‫قبل‬ ‫المضغوط‬ ‫الرشيف‬ ‫باسم‬ ‫يلحق‬ ‫التعليق‬ ‫فهذا‬ ،‫تعليق‬ ‫هناك‬ ‫كان‬ ‫إذا‬ ‫ولكن‬.zip.
‫أسماء‬ ‫مع‬ ‫التعامل‬ ‫لن‬ ‫وذلك‬ (_) ‫سفلية‬ ‫بشرط‬ ‫التعليق‬ ‫في‬ ‫المساحات‬ ‫نستبدل‬ ‫أننا‬ ‫ولحظ‬
.‫بكثير‬ ‫أسهل‬ ‫هكذا‬ ‫الملفات‬
‫مزيد‬‫من‬‫التحسينات‬
‫مجال‬ ‫دائما‬ ‫هناك‬ ‫ولكن‬ ،‫المستخدمين‬ ‫لمعظم‬ ‫مُرضية‬ ‫بصورة‬ ‫يعمل‬ ‫سكربت‬ ‫هي‬ ‫الرابعة‬ ‫الصدارة‬
‫من‬ ‫مستوى‬ ‫إضافة‬ ‫يمكنك‬ ،‫مثل‬ .‫للتحسين‬‫الستفاضة‬‫الخيار‬ ‫تحديد‬ ‫يمكنك‬ ‫حيث‬ ،‫للبرنامج‬-v
.‫تكلما‬ ‫أكثر‬ ‫يصبح‬ ‫برنامجك‬ ‫لجعل‬
‫في‬ ‫البرنامج‬ ‫إلى‬ ‫الضافية‬ ‫والدلة‬ ‫الملفات‬ ‫بتمرير‬ ‫تسمح‬ ‫أن‬ ‫الخرى‬ ‫الممكنة‬ ‫التحسينات‬ ‫من‬
‫قائمة‬ ‫من‬ ‫ذلك‬ ‫إلى‬ ‫وسنتوصل‬ .‫الوامر‬ ‫سطر‬sys.argv‫قائمة‬ ‫إلى‬ ‫نضيفها‬ ‫أن‬ ‫ونستطيع‬
source‫طريقة‬ ‫باستخدام‬ ‫لدينا‬ ‫التي‬extend‫الصنف‬ ‫يوفرها‬ ‫التي‬list.
‫المر‬ ‫استخدام‬ ‫أحبذها‬ ‫التي‬ ‫التحسينات‬ ‫من‬tar‫المر‬ ‫من‬ ‫بدل‬zip‫أنه‬ ‫المر‬ ‫ذلك‬ ‫مزايا‬ ‫أحد‬ .
‫استخدامك‬ ‫عند‬tar‫مع‬ ‫جنب‬ ‫إلى‬ ‫جنبا‬gzip‫والنسخة‬ ‫سرعة‬ ‫أكثر‬ ‫الحتياطي‬ ‫النسخ‬ ‫يصبح‬
‫فإن‬ ‫ويندوز‬ ‫في‬ ‫الرشيف‬ ‫هذا‬ ‫استخدام‬ ‫أردت‬ ‫وإذا‬ .‫حجما‬ ‫أقل‬ ‫تكون‬ ‫الحتياطية‬WinZip‫يتعامل‬
‫ملفات‬ ‫مع‬.tar.gz‫والمر‬ .‫بسهولة‬ ً‫أيضا‬tar‫أنظمة‬ ‫معظم‬ ‫في‬ ‫افتراضي‬ ‫بشكل‬ ‫متاح‬
‫أيضا‬ ‫ويندوز‬ ‫لمستخدمي‬ ‫ويمكن‬ .‫لينكس/يونكس‬‫تنزيله‬.‫وتثبيته‬ ‫النترنت‬ ‫من‬
‫اﻵن‬‫سيكون‬‫المر‬‫بالشكل‬‫التالي‬:
tar = 'tar -cvzf %s %s -X /home/swaroop/excludes.txt' % (target, '
'.join(srcdir))
‫والخيارات‬‫موضحة‬‫أدناه‬.
‫للفهرس‬ ‫عودة‬‫التحسينات‬ ‫من‬ ‫مزيد‬|93
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
c-‫يشير‬‫إ‬‫لى‬creation‫إنشاء‬‫أرشيف‬.
v-‫يشير‬‫إلى‬verbose‫أي‬‫أن‬‫المر‬‫يجب‬‫ان‬‫تكون‬‫اكثر‬‫تكلما‬‫وثرثرة‬talkative.
z-‫يشير‬‫إلى‬‫مرشح‬gzip‫الذي‬‫ينبغي‬‫استخدامه‬.
f-‫يشير‬‫إلى‬force‫أي‬‫الجبار‬‫في‬‫إ‬‫نشاء‬‫الرشيف‬‫أ‬‫ي‬‫إ‬‫نه‬‫ينبغي‬‫أن‬‫يحل‬‫محل‬‫ملف‬‫آخر‬‫إذا‬‫كان‬
‫يحمل‬‫نفس‬‫السم‬‫بالفعل‬.
x-‫يشير‬‫إلى‬‫الملف‬‫الذي‬‫يتضمن‬‫قائمة‬‫أ‬‫سماء‬‫الملفات‬‫التي‬‫يجب‬‫استبعادها‬excluded‫من‬‫النسخة‬
‫الحتياطية‬.‫على‬‫سبيل‬‫المثال‬،‫يمكنك‬‫تحديد‬*~‫في‬‫هذا‬‫الملف‬‫لعدم‬‫إ‬‫دراج‬‫أ‬‫ي‬‫أ‬‫سماء‬‫للملفات‬
‫المنتهية‬‫ب‬~‫في‬‫النسخة‬‫الحتياطية‬
* ‫*مهم‬
‫الوحدة‬ ‫باستخدام‬ ‫سيكون‬ ‫الرشيف‬ ‫من‬ ‫النوع‬ ‫هذا‬ ‫مثل‬ ‫لنشاء‬ ‫المفضلة‬ ‫الطرق‬ ‫أكثر‬zipfile
‫أو‬tarfile‫استخدامها‬ ‫لك‬ ‫والمتاح‬ ‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫من‬ ‫جزءا‬ ‫تشكل‬ ‫إنها‬ .‫التوالي‬ ‫على‬
‫استخدام‬ ‫تتجنب‬ ‫أيضا‬ ‫المكتبات‬ ‫هذه‬ ‫باستخدام‬ .‫بالفعل‬os.system‫ينصح‬ ‫ل‬ ‫والتي‬
.‫باستخدامها‬ ‫باهظة‬ ‫أخطاء‬ ‫تكلفك‬ ‫أن‬ ‫السهل‬ ‫من‬ ‫لنها‬ ،‫العموم‬ ‫وجه‬ ‫على‬ ‫باستخدامها‬
‫طريقة‬ ‫أستخدم‬ ‫كنت‬ ‫فقد‬ ، ‫ذلك‬ ‫ومع‬os.system‫تعليمية‬ ‫لغراض‬ ‫احتياطية‬ ‫نسخ‬ ‫لعمل‬
‫حقيقية‬ ‫ولكنها‬ ، ‫الجميع‬ ‫قبل‬ ‫من‬ ‫مفهوما‬ ‫ليكون‬ ‫كاف‬ ‫بشكل‬ ‫بسيط‬ ‫مثال‬ ‫ذلك‬ ‫يعتبر‬ ‫لذا‬ ، ‫بحتة‬
.‫يكفي‬ ‫بما‬ ‫أيضا‬
:‫البرمجيات‬ ‫تطوير‬ ‫عملية‬
‫يمكن‬ ‫المراحل‬ ‫هذه‬ ‫فإن‬ .‫البرمجيات‬ ‫كتابة‬ ‫عملية‬ ‫في‬ ‫المختلفة‬ ‫المراحل‬ ‫باجتياز‬ ‫قمنا‬ ‫وقد‬ ‫اﻵن‬
: ‫التالي‬ ‫النحو‬ ‫على‬ ‫تلخيصها‬
1( ‫)التحليل‬ ‫ماذا‬ .
2(‫)التصميم‬ ‫كيف‬ .
3(‫)التنفيذ‬ ‫افعلها‬ .
4(‫الخطاء‬ ‫وتصحيح‬ ‫)اختبار‬ ‫الختبار‬ .
5(‫النشر‬ ‫عملية‬ ‫)أو‬ ‫الستخدام‬ .
6( ‫)التحسين‬ ‫الصيانة‬ .
*‫مهم‬*
‫للفهرس‬ ‫عودة‬‫البرمجيات‬ ‫تطوير‬ ‫عملية‬:|94
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الطريقة‬‫الموصى‬‫بها‬‫لكتابة‬‫البرامج‬‫هي‬‫الجراء‬‫الذي‬‫اتبعناه‬‫في‬‫برنامج‬‫عمل‬‫النسخ‬‫الحتياطية‬
–‫قم‬‫بالتحليل‬‫ثم‬‫التصميم‬.‫ابدأ‬‫بتنفيذ‬‫صيغة‬‫بسيطة‬‫للبرنامج‬.‫الختبار‬‫والتصحيح‬.‫استخدام‬
‫البرنامج‬‫للتأكد‬‫من‬‫أنه‬‫يعمل‬‫كما‬‫هو‬‫متوقع‬.‫واﻵن‬،‫أضف‬‫أية‬‫ميزات‬‫تريدها‬‫واستمر‬‫في‬
‫تكرار‬‫هذه‬‫الدورة‬" :‫افعل‬-‫جرب‬-‫استخدم‬" "Do It-Test-Use"‫لي‬‫عدد‬‫من‬‫المرات‬‫على‬
‫النحو‬‫المطلوب‬.‫وتذكر‬‫؛‬‫البرمجيات‬‫تنمو‬‫كالزرع‬،‫ول‬‫تبنى‬!"Software is grown,
not built"
‫الخلصة‬
‫ولقد‬‫رأينا‬‫كيفية‬‫عمل‬‫البرامج‬‫الخاصة‬‫في‬‫بيثون‬‫والمراحل‬‫المختلفة‬‫التي‬‫تشارك‬‫في‬‫كتابة‬
‫مثل‬‫هذه‬‫البرامج‬.‫وربما‬‫تجد‬‫أ‬‫نه‬‫من‬‫المفيد‬‫إ‬‫نشاء‬‫برامجك‬‫بنفسك‬‫مثلما‬‫فعلنا‬‫في‬‫هذا‬
‫الفصل‬‫حتى‬‫ت‬‫صبح‬‫مرتاحا‬‫مع‬‫بيثون‬‫فضل‬‫عن‬‫القدرة‬‫على‬‫حل‬‫المشاكل‬.‫وفيما‬‫يلي؛سوف‬
‫نناقش‬‫البرمجة‬‫الكائنية‬"object-oriented”
‫للفهرس‬ ‫عودة‬‫الخلصة‬|95
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫فصل‬11‫الموجهة‬ ‫الكائنية‬ ‫البرمجة‬ .
‫المحتويات‬ ‫جدول‬
‫مقدمة‬
the self
‫الفئات‬
‫إنشاء‬‫الفئة‬.
‫طرق‬‫الكائنات‬
‫استخدام‬‫طرق‬‫الكائنات‬
_ ‫طريقة‬init_
_ ‫طريقة‬ ‫استخدام‬init_
‫والكائن‬ ‫الفئة‬ ‫متغيرات‬
‫استخدام‬‫متغيرات‬‫الفئة‬‫والكائن‬
‫التوارث‬
‫استخدام‬‫التوارث‬
‫الخلصة‬
:‫مقدمــة‬
‫التي‬ ‫الفادات‬ ‫من‬ ‫لبنات‬ ‫أو‬ ‫دوال‬ ‫حول‬ ‫برنامجنا‬ ‫بتصميم‬ ‫قمنا‬ ‫لقد‬ ،‫اﻵن‬ ‫وحتى‬ ‫برامجنا‬ ‫جميع‬ ‫في‬
‫البرمجة‬ ‫طريقة‬ ‫هذا‬ ‫ويسمى‬ .‫بالبيانات‬ ‫تتلعب‬‫الموجهة‬ ‫الجرائية‬‫لتنظيم‬ ‫أخرى‬ ‫طريقة‬ ‫وهناك‬ .
‫بالكائن‬ ‫يسمى‬ ‫فيما‬ ‫معا‬ ‫وتغليفها‬ ‫والبيانات‬ ‫الوظيفة‬ ‫بين‬ ‫الجمع‬ ‫وهو‬ ‫برنامجك‬object‫وهذا‬ .
‫البرمجة‬ ‫نموذج‬ ‫يسمى‬ ‫ما‬‫الموجهة‬ ‫الكائنية‬‫البرمجه‬ ‫استخدام‬ ‫يمكنك‬ ‫الوقت‬ ‫معظم‬ ‫في‬ .
‫الحل‬ ‫هو‬ ‫ذلك‬ ‫يكون‬ ‫ان‬ ‫أو‬ ،‫كبيرة‬ ‫برامج‬ ‫كتابة‬ ‫تريد‬ ‫عندما‬ ‫الحيان‬ ‫بعض‬ ‫في‬ ‫ولكن‬ ‫الجراءيه‬
.‫التوجه‬ ‫كائنية‬ ‫البرمجة‬ ‫تقنيات‬ ‫استخدام‬ ‫يمكنك‬ ،‫لها‬ ‫النسب‬
‫الفئة‬ ‫إن‬ ‫الموجهة.حيث‬ ‫الكائنية‬ ‫للبرمجه‬ ‫الرئيسيان‬ ‫الشكلن‬ ‫هما‬ ‫يعتبران‬ ‫والكائنات‬ ‫الفئات‬
class‫تنشئ‬ً‫نوعا‬‫تعتبر‬ ‫حيث‬ ‫جديدا‬‫الكائنات‬‫أمثلة‬‫هو‬ ‫ذلك‬ ‫على‬ ‫القيسة‬ ‫أحد‬ .‫الفئة‬ ‫من‬
‫الصحيح‬ ‫العدد‬ ‫نوعية‬ ‫من‬ ‫متغيرات‬ ‫لديك‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫أنه‬int‫إن‬ ‫قولنا‬ ‫إلى‬ ‫تترجم‬ ‫والتي‬
‫)أوكائنات‬ ‫حالت‬ ‫تعتبر‬ ‫التي‬ ‫المتغيرات‬ ‫هي‬ ‫الصحيحه‬ ‫العداد‬ ‫تخزن‬ ‫التي‬ ‫المتغيرات‬objects(
‫الفئة‬ ‫من‬int.
‫للفهرس‬ ‫عودة‬‫فصل‬.11.‫الموجهة‬ ‫الكائنية‬ ‫البرمجة‬|
96
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫ملحظة‬‫لمبرمجي‬C/C++/Java/C:*#
‫نلحظ‬‫أن‬‫ه‬‫حتى‬‫الصحيحة‬ ‫العداد‬‫تعامل‬‫على‬‫أ‬‫نها‬‫كائنات‬)‫من‬‫الفئة‬int.(‫وهذا‬‫بخلف‬‫سي‬+
+‫وجافا‬)‫قبل‬‫الصدار‬1.5(‫حيث‬‫الصحيحة‬ ‫العداد‬‫هي‬‫أ‬‫نواع‬‫بدائية‬‫الصل‬.‫انظر‬
)help(int‫لمزيد‬‫من‬‫التفاصيل‬‫حول‬-‫الفئة‬class.
‫مبرمجو‬#‫سي‬‫و‬‫جافا‬1.5‫سيجدون‬‫ذلك‬‫المر‬‫مألوفا‬‫إليهم‬‫حيث‬‫إ‬‫نه‬‫يشبه‬‫مفهوم‬
boxing‫و‬unboxing
‫التي‬ ‫العاديه‬ ‫المتغيرات‬ ‫باستخدام‬ ‫البيانات‬ ‫تخزين‬ ‫للكائنات‬ ‫يمكن‬‫تنتمي‬.‫الكائن‬ ‫هذه‬ ‫إلى‬
‫حقول‬ ‫تسمى‬ ‫الكائن‬ ‫أو‬ ‫الفئة‬ ‫إلى‬ ‫تنتمي‬ ‫التي‬ ‫والمتغيرات‬fields‫أن‬ ‫للكائنات‬ ‫يمكن‬ .‫الفئة‬ ‫لهذه‬
‫التي‬ ‫الدوال‬ ‫باستخدام‬ ‫وظائف‬ ‫ايضا‬ ‫لها‬ ‫يكون‬‫تنتمي‬ً‫طرقا‬ ‫تسمى‬ ‫الدوال‬ ‫الفئة.هذه‬ ‫إلى‬
methods‫الدوال‬ ‫بين‬ ‫التفريق‬ ‫في‬ ‫تساعدنا‬ ‫لنها‬ ‫مهمة‬ ‫المصطلحات‬ ‫هذه‬ .‫الفئة‬ ‫لهذ‬
.‫ما‬ ‫كائن‬ ‫أو‬ ‫معينة‬ ‫فئة‬ ‫إلى‬ ‫تنتمي‬ ‫التي‬ ‫وتلك‬ ،‫ذاتها‬ ‫حد‬ ‫في‬ ‫مستقلة‬ ‫هي‬ ‫التي‬ ‫والمتغيرات‬
‫أنها‬ ‫على‬ ‫اليها‬ ‫يشار‬ ‫ان‬ ‫يمكن‬ ‫والطرق‬ ‫الحقول‬ ‫جميعا‬ ‫وكلها‬‫مواصفات‬.‫الفئة‬ ‫لتلك‬
‫تنتمي‬ ‫ان‬ ‫يمكنها‬ ‫أو‬ ،‫الفئة‬ ‫من‬ ‫حالة/كائن‬ ‫إلى‬ ‫تنتمي‬ ‫ان‬ ‫منهما‬ ‫لكل‬ ‫يمكن‬ – ‫نوعين‬ ‫من‬ ‫تتكون‬ ‫الحقول‬
‫اﻵنية‬ ‫المتغيرات‬ ‫تسمي‬ ‫نفسها.فهي‬ ‫الفئة‬ ‫إلى‬instance variables‫الفئة‬ ‫ومتغيرات‬class
variables.‫التوالي‬ ‫على‬
‫المفتاحية‬ ‫الكلمة‬ ‫باستخدام‬ ‫إنشاؤها‬ ‫يتم‬ ‫الفئة‬class‫منظومة‬ ‫في‬ ‫مدرجة‬ ‫الفئة‬ ‫وطرق‬ ‫.الحقول‬
‫لها‬ ‫تكون‬ ‫أن‬ ‫يجب‬ ‫انها‬ ‫وذلك‬ ،‫العادية‬ ‫الدوال‬ ‫يخالف‬ ‫الفئة‬ ‫لطرق‬ ‫محدد‬ ‫واحد‬ ‫فارق‬ ‫اللبنة.هناك‬
‫ولكنك‬ ،‫القائمة‬ ‫باراميتر‬ ‫بداية‬ ‫إلى‬ ‫يضاف‬ ‫إضافي‬ ‫أول‬ ‫اسم‬‫ل‬‫عندما‬ ‫الباراميتر‬ ‫لهذا‬ ‫قيمة‬ ‫تعطي‬
‫ال‬ ‫تستدعي‬method،‫ذاته‬ ‫الكائن‬ ‫إلى‬ ‫يشير‬ ‫المحدد‬ ‫المتغير‬ ‫هذا‬ .‫به‬ ‫تزودنا‬ ‫سوف‬ ‫وبيثون‬ ،
‫الذات‬ ‫باسم‬ ‫تحظى‬ ‫فإنها‬ ،‫التفاق‬ ‫وحسب‬self.
The self
‫اسم‬ ‫لها‬ ‫تكون‬ ‫أن‬ ‫يجب‬ ‫انها‬ ‫العادية،وذلك‬ ‫الدوال‬ ‫يخالف‬ ‫الفئة‬ ‫لطرق‬ ‫محدد‬ ‫واحد‬ ‫فارق‬ ‫هناك‬
‫ولكنك‬ ،‫القائمة‬ ‫باراميتر‬ ‫بداية‬ ‫إلى‬ ‫يضاف‬ ‫إضافي‬ ‫أول‬‫ل‬‫عندما‬ ‫الباراميتر‬ ‫لهذا‬ ‫قيمة‬ ‫تعطي‬
‫ال‬ ‫تستدعي‬method،‫ذاته‬ ‫الكائن‬ ‫إلى‬ ‫يشير‬ ‫المحدد‬ ‫المتغير‬ ‫هذا‬ .‫به‬ ‫تزودنا‬ ‫سوف‬ ‫وبيثون‬ ،
‫الذات‬ ‫باسم‬ ‫تحظى‬ ‫فإنها‬ ، ‫التفاق‬ ‫وحسب‬self.
،‫الباراميتر‬ ‫لهذه‬ ‫اسم‬ ‫أي‬ ‫إعطاء‬ ‫يمكنك‬ ‫انه‬ ‫ورغم‬‫بشدة‬ ‫يوصى‬‫اسم‬ ‫تستخدم‬ ‫ان‬self‫اسم‬ ‫اي‬ -
‫وأي‬ -‫معياري‬ ‫اسم‬ ‫لستخدام‬ ‫المزايا‬ ‫من‬ ‫العديد‬ ‫وهناك‬ .‫العبوس‬ ‫إلى‬ ‫يؤدي‬ ‫بالتأكيد‬ ‫هو‬ ‫آخر‬
‫التطوير‬ ‫)بيئة‬ ‫ل‬ ‫المخصصة‬ ‫برامج‬ ‫وحتى‬ ‫فورا‬ ‫به‬ ‫يعترف‬ ‫سوف‬ ‫لبرنامجك‬ ‫قارئ‬
‫تستخدم‬ ‫كنت‬ ‫اذا‬ ‫تساعدك‬ ‫ان‬ ‫المتكامله(يمكن‬self.
‫للفهرس‬ ‫عودة‬The self|97
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
C++/Java/C‫لمبرمجي‬ ‫ملحظة‬ #
‫الفادة‬self‫المؤشر‬ ‫تعادل‬ ‫بيثون‬ ‫في‬self‫لغة‬ ‫في‬C‫الشارة‬ ‫و‬ ++this‫سي‬ ‫و‬ ‫جافا‬ ‫في‬#
‫ل‬ ‫قيمة‬ ‫تعطي‬ ‫بيثون‬ ‫أن‬ ‫كيف‬ ‫مندهشا؛‬ ‫تكون‬ ‫أن‬ ‫عليك‬self‫إعطاء‬ ‫إلى‬ ‫بحاجة‬ ‫لست‬ ‫ولماذا‬ ،
‫قي‬‫تدعى‬ ‫فئة‬ ‫لديك‬ ‫أن‬ ‫مثل‬ ‫لنقل‬ .‫واضحا‬ ‫المر‬ ‫هذا‬ ‫سيجعل‬ ‫المثلة‬ ‫؟.أحد‬ ‫لها‬ ‫مة‬
MyClass‫يسمى‬ ‫الفئة‬ ‫هذه‬ ‫ومثال‬MyObject‫ال‬ ‫تستدعي‬ ‫فعندما‬ .method‫الكائن‬ ‫لهذا‬
: ‫يلي‬ ‫كهما‬MyObject.method(arg1, arg2(‫طريق‬ ‫عن‬ ‫تلقائيا‬ ‫تحويلها‬ ‫يتم‬ ‫فإنه‬ ،
‫إلى‬ ‫بيثون‬MyClass.method(MyObject, arg1, arg2(‫يخص‬ ‫ما‬ ‫كل‬ ‫،وهذا‬self.
‫لديك‬ ‫كان‬ ‫إذا‬ ‫انه‬ ‫أيضا‬ ‫يعني‬ ‫وهذا‬method‫أي‬ ‫تأخذ‬ ‫ل‬argument‫بحاجة‬ ‫تزال‬ ‫ل‬ ‫فإنك‬ ،
‫قيمة‬ ‫على‬ ‫للحصول‬ ‫طريقة‬ ‫تحديد‬ ‫إلى‬self.
‫الفئات‬
:‫التالي‬ ‫المثال‬ ‫خلل‬ ‫منن‬ ‫رؤيتها‬ ‫يمكن‬ ‫للفئة‬ ‫صورة‬ ‫أبسط‬
‫الفئة‬ ‫إنشاء‬
‫مثال‬11.1‫الفئة‬ ‫إنشاء‬
#!/usr/bin/python
# Filename: simplestclass.py
class Person:
pass # An empty block
p = Person()
print p
‫الخرج‬
$ python simplestclass.py
<__main__.Person instance at 0xf6fcb18c>
‫للفهرس‬ ‫عودة‬‫الفئة‬ ‫إنشاء‬|98
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫يعمل‬ ‫كيف‬
‫الفادة‬ ‫باستخدام‬ ‫جديدة‬ ‫فئة‬ ‫بإنشاء‬ ‫قمنا‬class‫من‬ ‫مزاحة‬ ‫لبنة‬ ‫تتبع‬ ‫وتلك‬ .‫الفئة‬ ‫باسم‬ ‫متبوعة‬
‫إليها‬ ‫يشار‬ ‫الفادات‬ ‫من‬ ‫فارغة‬ ‫لبنة‬ ‫لدينا‬ ‫الحالة‬ ‫هذه‬ ‫وفي‬ . ‫الفئة‬ ‫هيكل‬ ‫تصوغ‬ ‫التي‬ ‫الفادات‬
‫الفادة‬ ‫باستخدام‬pass.
.‫الهللية‬ ‫القواس‬ ‫من‬ ‫بزوج‬ ‫متبوعا‬ ‫الفئة‬ ‫اسم‬ ‫باستخدام‬ ‫الفئة‬ ‫لهذه‬ ‫كائن/مثال‬ ‫بإنشاء‬ ‫قمنا‬ ‫ثم‬
‫عن‬ ‫المزيد‬ ‫نتعلم‬ ‫وسوف‬instantiation‫بفحص‬ ‫نقوم‬ ، ‫التحقق‬ ‫أجل‬ ‫ومن‬ .‫التالي‬ ‫القسم‬ ‫في‬
‫الفئة‬ ‫من‬ ‫مثال‬ ‫لدينا‬ ‫أن‬ ‫يخبرنا‬ ‫وهو‬ .‫طباعته‬ ‫بمجرد‬ ‫ببساطة‬ ‫المتغير‬ ‫نوع‬person‫في‬
__ ‫الوحدة‬main. __
‫العنوان‬ ‫هذا‬ ‫وقيمة‬ .ً‫أيضا‬ ‫كتابته‬ ‫يتم‬ ‫للكائن‬ ‫تخزينك‬ ‫عند‬ ‫الحاسب‬ ‫ذاكرة‬ ‫عنوان‬ ‫أن‬ ‫لحظ‬
‫مساحة‬ ‫تجد‬ ‫حالما‬ ‫الكائن‬ ‫تخزين‬ ‫تستطيع‬ ‫بيثون‬ ‫إن‬ ‫حيث‬ ‫حاسبك‬ ‫على‬ ‫مختلفة‬ ‫قيمة‬ ‫لها‬ ‫سيكون‬
.‫فارغة‬
‫الكائن‬ ‫طرق‬
‫لقد‬‫ناقشنا‬‫بالفعل‬‫أن‬‫ال‬‫فئات/الكائنات‬‫يمكنها‬‫أن‬‫تحتوي‬‫طرقا‬‫تشبه‬‫الدوال‬‫إل‬‫إذا‬‫كان‬‫لدينا‬
‫متغير‬self‫إضافي‬.‫واﻵن‬‫سوف‬‫نرى‬‫مثال‬‫على‬‫ذلك‬.
‫استخدام‬‫الكائن‬ ‫طرق‬
‫مثال‬11.2‫الكائن‬ ‫طرق‬
#!/usr/bin/python
# Filename: method.py
class Person:
def sayHi(self):
print 'Hello, how are you?'
p = Person()
p.sayHi()
# This short example can also be written as Person().sayHi()
‫للفهرس‬ ‫عودة‬‫الكائن‬ ‫طرق‬ ‫استخدام‬|99
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الخرج‬
$ python method.py
Hello, how are you?
‫كيف‬‫يعمل‬:
‫عمل‬ ‫طريقة‬ ‫رأينا‬ ‫لقد‬self‫طريقة‬ ‫أن‬ ‫لحظ‬ .sayHi‫تظل‬ ‫ولكنها‬ ‫بارميتر‬ ‫أي‬ ‫تأخذ‬ ‫ل‬
‫ب‬ ‫محتفظة‬self.‫الدالة‬ ‫تعريف‬ ‫في‬
__ ‫طريقة‬init__:
‫من‬ ‫المغزى‬ ‫نرى‬ ‫وسوف‬ .‫بيثون‬ ‫لغة‬ ‫فئات‬ ‫في‬ ‫خاصة‬ ‫أهمية‬ ‫لها‬ ‫الطرق‬ ‫أسماء‬ ‫من‬ ‫العديد‬ ‫هناك‬
‫طريقة‬__init__.‫اﻵن‬
‫طريقة‬ ‫تعمل‬__init__‫تهيئة‬ ‫أي‬ ‫لعمل‬ ‫مفيدة‬ ‫الطريقة‬ ‫هذه‬ .‫للفئة‬ ‫المنتمي‬ ‫الكائن‬ ‫عمل‬ ‫بمجرد‬
initialization.‫ونهايته‬ ‫السم‬ ‫بداية‬ ‫في‬ ‫السفليتين‬ ‫الشرطتين‬ ‫ولحظ‬ .‫الكائن‬ ‫مع‬ ‫عملها‬ ‫تريد‬
__ ‫طريقة‬ ‫استخدام‬init: __
‫مثال‬11.3__ ‫استخدام‬init__ method:
#!/usr/bin/python
# Filename: class_init.py
class Person:
def __init__(self, name):
self.name = name
def sayHi(self):
print 'Hello, my name is', self.name
p = Person('Swaroop')
p.sayHi()
# This short example can also be written as Person('Swaroop').sayHi(
‫للفهرس‬ ‫عودة‬‫طريقة‬ ‫استخدام‬__init: __|
100
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫الخرج‬
$ python class_init.py
Hello, my name is Swaroop
‫كيف‬‫يعمل‬‫البرنامج‬:
‫الطريقة‬ ‫بتعريف‬ ‫قمنا‬ ‫هنا‬__init__‫المعامل‬ ‫بإعطائها‬__init__‫)مع‬self‫المعتاد(.وهنا؛‬
‫يسمى‬ ‫كذلك‬ ‫جديد‬ ‫حقل‬ ‫بإنشاء‬ ‫فحسب‬ ‫قمنا‬name‫أنهما‬ ‫رغم‬ ‫مختلفان‬ ‫متغيران‬ ‫أنهما‬ ‫.ولحظ‬
.‫بينهما‬ ‫التفرقة‬ ‫لنا‬ ‫يتيح‬ ‫المنقوط‬ ‫السم‬ .‫السم‬ ‫نفس‬ ‫يحملن‬
‫طريقة‬ ‫صراحة‬ ‫نستدعي‬ ‫ل‬ ‫أننا‬ ‫تلحظ‬ ‫أن‬ ،‫أهمية‬ ‫والكثر‬__init__‫قيم‬ ‫بتمرير‬ ‫نقوم‬ ‫ولكن‬
-‫عنصر‬ ‫ننشئ‬ ‫عندما‬ ‫الفئة‬ ‫اسم‬ ‫بعد‬ ‫القوسين‬ ‫بداخل‬instance‫هو‬ ‫وهذا‬ .‫الفئة‬ ‫هذه‬ ‫من‬ ‫جديد‬
.‫الطريقة‬ ‫هذه‬ ‫من‬ ‫الخاص‬ ‫المغزى‬
‫حقل‬ ‫استخدام‬ ‫على‬ ‫قادرون‬ ‫نحن‬ ،‫اﻵن‬self.name‫طريقة‬ ‫في‬ ‫تتجلى‬ ‫التي‬ ‫طرقنا‬ ‫في‬sayHi.
#‫سي++/جافا/سي‬ ‫لمبرمجي‬ ‫ملحظة‬
__ ‫طريقة‬init‫له‬ ‫مماثلة‬ __constructor#‫سي++/جافا/سي‬ ‫في‬
‫والفئة‬ ‫الكائن‬ ‫متغيرات‬
‫لقد‬‫سبق‬‫أن‬‫ناقشنا‬‫بالفعل‬‫الجزء‬‫المتعلق‬‫بوظيفة‬‫الفئات‬‫والكائنات‬،‫واﻵن‬‫سنرى‬‫جزء‬‫البيانات‬
‫الخاص‬‫بها‬.‫في‬‫الواقع‬،‫إ‬‫نها‬‫ليست‬‫سوى‬‫متغيرات‬‫عادية‬‫مرتبطة‬‫بحيزات‬‫أسماء‬‫الفئات‬
‫والكائنات‬.‫هذه‬‫السماء‬‫صالحة‬‫ضمن‬‫سياق‬‫هذه‬‫الفئات‬‫والكائنات‬‫فقط‬.
‫وهناك‬‫نوعان‬‫من‬‫الحقول‬--‫متغيرات‬‫الفئة‬class variables‫و‬‫متغيرات‬‫الكائن‬object
variables‫والتي‬‫تصنف‬‫تبعا‬‫لما‬‫إذا‬‫كانت‬‫الفئة‬‫أو‬‫الكائن‬-‫على‬‫التوالي‬-‫تمتلك‬
‫للمتغيرات‬.
‫متغيرات‬‫الفئة‬‫تشترك‬‫في‬‫معنى‬‫أ‬‫نها‬‫تعمل‬‫من‬‫خلل‬‫جميع‬‫الكائنات‬)‫العناصر‬(‫لهذه‬‫الفئة‬.‫ل‬
‫يوجد‬‫سوى‬‫نسخة‬‫من‬‫متغير‬‫الفئة‬‫وعندما‬‫يقوم‬‫الكائن‬‫ما‬ ‫بعمل‬‫على‬‫متغير‬‫الفئة‬،‫ينعكس‬‫هذا‬
‫التغيير‬‫في‬‫جميع‬(‫)الكائنات‬ ‫الحالت‬‫الخرى‬‫أيضا‬.
‫تختص‬‫الكائن‬ ‫متغيرات‬‫بالفئة‬ ‫الخاص‬ ‫العنصر‬ ‫في‬ ‫حدة‬ ‫على‬ ‫كائن‬ ‫بكل‬‫ل‬ ‫هم‬ ‫فمثل‬ .
‫ورؤية‬ .‫الفئة‬ ‫نفس‬ ‫في‬ ‫مختلف‬ ‫عنصر‬ ‫في‬ ‫السم‬ ‫بنفس‬ ‫طريقة‬ ‫بأي‬ ‫يرتبطون‬ ‫ول‬ ‫يشتركون‬
‫والكائن‬ ‫الفئة‬ ‫متغيرات‬ ‫الفهماستخدام‬ ‫سهل‬ ‫المر‬ ‫سيجعل‬ ‫واحد‬ ‫مثال‬
‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬|101
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬
‫مثال‬11.4.‫والطبقة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬
#!/usr/bin/python
# Filename: objvar.py
class Person:
'''Represents a person.'''
population = 0
def __init__(self, name):
'''Initializes the person's data.'''
self.name = name
print '(Initializing %s)' % self.name
# When this person is created, he/she
# adds to the population
Person.population += 1
def __del__(self):
'''I am dying.'''
print '%s says bye.' % self.name
Person.population -= 1
if Person.population == 0:
print 'I am the last one.'
else:
print 'There are still %d people left.' % Person.population
‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬|
102
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
def sayHi(self):
'''Greeting by the person.
Really, that's all it does.'''
print 'Hi, my name is %s.' % self.name
def howMany(self):
'''Prints the current population.'''
if Person.population == 1:
print 'I am the only person here.'
else:
print 'We have %d persons here.' % Person.population
swaroop = Person('Swaroop')
swaroop.sayHi()
swaroop.howMany()
kalam = Person('Abdul Kalam')
kalam.sayHi()
kalam.howMany()
swaroop.sayHi()
swaroop.howMany()
‫الخرج‬
$ python objvar.py
(Initializing Swaroop)
Hi, my name is Swaroop.
I am the only person here.
‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬|
103
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
(Initializing Abdul Kalam)
Hi, my name is Abdul Kalam.
We have 2 persons here.
Hi, my name is Swaroop.
We have 2 persons here.
Abdul Kalam says bye.
There are still 1 people left.
Swaroop says bye.
I am the last one.
‫كيف‬‫يعمل‬:
‫هذا‬‫مثال‬‫طويل‬‫ولكنه‬‫يساعد‬‫في‬‫تبيين‬‫طبيعة‬‫متغيرات‬‫الفئات‬‫والكائنات‬‫؛‬‫وهنا‬
population‫تنتمي‬‫إلى‬‫الفئة‬Person،‫ولذا‬‫تعتبر‬‫متغيرا‬‫للفئة‬.‫والمتغير‬name
‫ينتمي‬‫إلى‬‫الكائن‬)‫وهو‬‫مسند‬‫باستخدام‬self(‫وبالتالي‬‫هو‬‫متغير‬‫للكائن‬.
‫وهكذا‬‫نشير‬‫إلى‬‫متغير‬‫الفئة‬"population"‫كه‬Person.population‫وليس‬‫كه‬
self.population.‫لحظ‬‫أن‬‫متغير‬‫كائن‬‫يحمل‬‫نفس‬‫اسم‬‫متغير‬‫فئة‬‫سوف‬‫يخفي‬‫متغير‬
‫الفئة‬!‫ونحن‬‫نشير‬‫إلى‬‫اسم‬‫متغير‬‫الكائن‬name‫باستخدام‬self.name‫في‬‫الطرق‬‫الخاصة‬
‫بالكائن‬.‫تذكر‬‫أن‬‫هناك‬‫اختلف‬‫بسيط‬‫بين‬‫متغيرات‬‫الفئة‬‫ومتغيرات‬‫الكائن‬.
ْ‫لحظ‬‫طريقة‬ ّ‫بأن‬__init__ُ‫تُستَعمل‬‫لعمل‬initializeِ‫للحالة‬Person‫مَع‬name.
‫وفي‬‫هذه‬،ِ‫الطريقة‬‫نزيد‬‫عدد‬population‫بمقدار‬1‫حيث‬‫ن‬‫حصل‬Person‫واحد‬‫مضافا‬.
‫كذلك‬‫نلحظ‬‫أن‬‫قيم‬self.name‫تحدد‬‫لكل‬‫كائن‬‫يشير‬‫إلى‬‫طبيعة‬‫متغيرات‬‫الكائن‬.
‫المتغير‬ ‫باستخدام‬ ‫الكائن‬ ‫بنفس‬ ‫الخاصة‬ ‫والطرق‬ ‫المتغيرات‬ ‫إلى‬ ‫تشير‬ ‫أن‬ ‫يجب‬ ‫أنه‬ ‫تذكر‬self
‫و‬‫فقط‬‫يدعى‬ ‫وذلك‬ .attribute reference.
‫استخدام‬ ‫أيضا‬ ‫نرى‬ ‫البرنامج‬ ‫هذا‬ ‫في‬docstrings‫الوصول‬ ‫يمكننا‬ .‫الطرق‬ ‫وكذلك‬ ‫للفئات‬
‫إلى‬class docstring‫باستخدام‬ ‫التشغيل‬ ‫وقت‬ ‫في‬Person.__doc__‫والطريقة‬
docstring‫كه‬Person.sayHi.__doc__
‫تشبه‬ ‫أخرى‬ ‫طريقة‬ ‫وهناك‬__init__‫مثل‬__del__‫على‬ ‫ما‬ ‫كائن‬ ‫يوشك‬ ‫عندما‬ ‫تستدعى‬ ‫،التي‬
‫من‬ ‫الجزء‬ ‫هذا‬ ‫استعمال‬ ‫لعادة‬ ‫النظام‬ ‫إلى‬ ‫إعادته‬ ‫وستتم‬ ،‫ذلك‬ ‫بعد‬ ‫استخدامه‬ ‫يمكن‬ ‫.ول‬ ‫الموت‬
‫ال‬ ‫حساب‬ ‫بإنقاص‬ ‫ببساطة‬ ‫نقوم‬ ‫الطريقة‬ ‫هذه‬ ‫وفي‬ .‫الذاكرة‬Person.population‫بمقدار‬
1.
‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬|
104
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫طريقة‬__del__‫ضمان‬ ‫هناك‬ ‫وليس‬ ،‫مستخدما‬ ‫الكائن‬ ‫يكون‬ ‫ل‬ ‫حين‬ ‫تعمل‬‫متى‬‫هذه‬ ‫ستعمل‬
‫إفادة‬ ‫تستخدم‬ ‫أن‬ ‫فقط‬ ‫عليك‬ ‫بوضوح‬ ‫ذلك‬ ‫عمل‬ ‫أردت‬ ‫وإذا‬ .‫الطريقة‬del‫في‬ ‫استعملناها‬ ‫التي‬
.‫السابقة‬ ‫المثلة‬
‫لمبرمجي‬ ‫ملحظة‬C++/Java/C:
‫تعتبر‬ (‫البيانات‬ ‫عناصر‬ ‫إلى‬ ‫الفئة)إضافة‬ ‫عناصر‬ ‫جميع‬‫عمومية‬‫تعتبر‬ ‫الطرق‬ ‫وجميع‬‫تخيلية‬‫في‬
.‫بيثون‬
‫و‬‫باستخدام‬ ‫السماء‬ ‫مع‬ ‫البيانات‬ ‫عناصر‬ ‫تستخدم‬ ‫كنت‬ ‫إذا‬ ‫واحد؛‬ ‫استثناء‬ ‫هناك‬‫الشرطتين‬ ‫بادئة‬
‫السفليتين‬‫مثل‬__privatevar.‫منفردة‬ ‫قيمة‬ ‫لها‬ ‫ليجعل‬ ‫بفاعلية‬ ‫السم‬ ‫صقل‬ ‫بيثون‬ ‫تستخدم‬ ‫؛‬
‫يصبح‬ ‫أن‬ ‫يجب‬ ‫الكائن‬ ‫أو‬ ‫الفئة‬ ‫داخل‬ ‫فقط‬ ‫يستعمل‬ ‫متغير‬ ‫كل‬ ‫أن‬ ‫هي‬ ‫المتبعة‬ ‫التفاقية‬ ‫فإن‬ ‫هكذا‬
-‫عامة‬ ‫الخرى‬ ‫السماء‬ ‫وجميع‬ ،‫سفلية‬ ‫بشرطة‬public‫أي‬ ‫قبل‬ ‫من‬ ‫تستخدم‬ ‫أن‬ ‫ويمكن‬
‫الشرطة‬ ‫بادئة‬ ‫عدا‬ ‫)ما‬ ‫بيثون‬ ‫من‬ ‫إجبارية‬ ‫وليست‬ ‫فحسب‬ ‫اتفاقية‬ ‫هذه‬ ‫أن‬ ‫.تذكر‬ ‫فئات/كائنات‬
.(‫المزدوجة‬ ‫السفلية‬
‫الطريقة‬ ‫أن‬ ً‫أيضا‬ ‫لحظ‬__del__‫مفهوم‬ ‫تماثل‬destructor.
‫التوارث‬
‫هو‬ ‫الموجهة‬ ‫الكائنية‬ ‫للبرمجة‬ ‫الرئيسة‬ ‫المنافع‬ ‫أحد‬‫استعمال‬ ‫عادة‬‫إ‬‫ذلك‬ ‫وسائل‬ ‫وأحد‬ ،‫الشفرة‬
‫آلية‬ ‫خلل‬ ‫من‬ ‫عمله‬ ‫يتم‬‫التوارث‬‫بين‬ ‫علقة‬ ‫تطبيق‬ ‫أنه‬ ‫على‬ ‫افضل‬ ‫بشكل‬ ‫تخيله‬ ‫يمكن‬ ‫.التوارث‬
‫فرعي‬ ‫ونوع‬ ‫رئيس‬ ‫نوع‬subtype. ‫الفئات‬ ‫بين‬
‫بعض‬ ‫ولديهم‬ .‫كلية‬ ‫في‬ ‫والطلب‬ ‫المعلمين‬ ‫بمتابعة‬ ‫يقوم‬ ‫برنامج‬ ‫كتابة‬ ‫تريد‬ ‫انك‬ ‫لنفترض‬
‫الراتب‬ ‫مثل‬ ‫معينة‬ ‫خصائص‬ ‫كذلك‬ ‫ولديهم‬ .‫والعنوان‬ ‫والسن‬ ‫السم‬ ‫مثل‬ ‫المشتركة‬ ‫الخصائص‬
.‫للطلبة‬ ‫ومصاريف‬ ‫ودرجات‬ ،‫للمعلمين‬ ‫وإجازات‬ ،‫العلمية‬ ‫والدورات‬
‫خاصية‬ ‫بإضافة‬ ‫ولكن‬ ،‫وتعالجهما‬ ‫نوع‬ ‫لكل‬ ‫الفئات‬ ‫من‬ ‫مستقلين‬ ‫نوعين‬ ‫تنشئ‬ ‫أن‬ ‫يمكنك‬
. ‫جدا‬ ‫ثقيل‬ ‫المر‬ ‫هذا‬ ‫يصبح‬ ‫وسريعا‬ .‫حدة‬ ‫على‬ ‫فئة‬ ‫كل‬ ‫إلى‬ ‫إضافتها‬ ‫معناها‬ ،‫جديدة‬ ‫مشتركة‬
‫تسمى‬ ‫مشتركة‬ ‫فئة‬ ‫بإنشاء‬ ‫تكون‬ ‫ان‬ ‫يمكن‬ ‫الفضل‬ ‫والطريقة‬SchoolMember‫وبعدها‬ ،
‫فئة‬ ‫تجعل‬teacher‫وفئة‬student‫ترث‬‫سيصبحان‬ ‫آخر‬ ‫وبمعنى‬ .‫الولى‬ ‫الفئة‬ ‫هذه‬ ‫من‬
.‫الفرعية‬ ‫النواع‬ ‫هذه‬ ‫خصائص‬ ‫نحدد‬ ‫أن‬ ‫يمكننا‬ ‫ذلك‬ ‫وبعد‬ .(‫)الفئة‬ ‫النوع‬ ‫لهذا‬ ‫فرعية‬ ‫أنواع‬
‫في‬ ‫وظيفة‬ ‫اي‬ ‫أضفت/غيرت‬ ‫الطريقة.إذا‬ ‫هذه‬ ‫في‬ ‫مميزات‬ ‫عدة‬ ‫هناك‬SchoolMember،
‫تضيف‬ ‫ان‬ ‫يمكنك‬ ‫المثال؛‬ ‫سبيل‬ ‫على‬ .‫كذلك‬ ‫الفرعية‬ ‫النواع‬ ‫على‬ ‫تلقائيًا‬ ‫هذا‬ ‫ينعكس‬ ‫سوف‬
‫جديدا‬ ‫هوية‬ ‫بطاقة‬ ‫حقل‬field card ID‫إضافة‬ ‫طريق‬ ‫عن‬ ‫ببساطة‬ ‫والطلب‬ ‫المعلمين‬ ‫من‬ ‫لكل‬
،‫الفئة‬classname>SchoolMember‫النواع‬ ‫في‬ ‫الحادثة‬ ‫التغيرات‬ ‫حال‬ ‫أية‬ ‫وعلى‬ .
‫للفهرس‬ ‫عودة‬‫التوارث‬|105
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫كائنات‬ ‫إلى‬ ‫تشير‬ ‫أن‬ ‫يمكنك‬ ‫انه‬ ‫الخرى‬ ‫.والميزة‬ ‫الخرى‬ ‫الفرعية‬ ‫النواع‬ ‫في‬ ‫تؤثر‬ ‫ل‬ ‫الفرعية‬
‫كائن‬ ‫باعتبارها‬ ‫الطلبة‬ ‫أو‬ ‫المعلمين‬SchoolMember‫بعض‬ ‫في‬ ‫مفيدا‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫والذي‬
‫الوجه‬ ‫تعدد‬ ‫يسمى‬ ‫وذلك‬ .‫المدرسة‬ ‫أعضاء‬ ‫عدد‬ ‫حساب‬ ‫مثل‬ ،‫الحالت‬‫الوجه‬ ‫تعدد‬‫ان‬ ‫حيث‬ ‫؛‬
‫الكائن‬ ‫فمثل‬ .‫متوقعا‬ ‫الصل‬ ‫النوع‬ ‫يكون‬ ‫عندما‬ ‫حالة‬ ‫أي‬ ‫في‬ ‫يستبدل‬ ‫أن‬ ‫يمكن‬ ‫الفرعي‬ ‫النوع‬
.‫الصلية‬ ‫الفئة‬ ‫من‬ ‫حالة‬ ‫بصفته‬ ‫تكراره‬ ‫يمكن‬
‫أننا‬ ‫كذلك‬ ‫ونلحظ‬‫استخدام‬ ‫نعيد‬‫فئات‬ ‫في‬ ‫تكرارها‬ ‫إلى‬ ‫بحاجة‬ ‫ولسنا‬ ،‫الصل‬ ‫الفئة‬ ‫شفرة‬
. ‫مستقلة‬ ‫فئات‬ ‫استخدمنا‬ ‫ما‬ ‫حالة‬ ‫في‬ ‫واجبا‬ ‫كان‬ ‫كما‬ ،‫مختلفة‬
‫الفئة‬SchoolMember‫بأنها‬ ‫تعرف‬ ‫الحالة‬ ‫هذه‬ ‫في‬‫الساسية‬ ‫الفئة‬‫أو‬superclass‫وفئة‬ ،
Teacher‫وفئة‬Student‫تسمى‬derived classes‫أو‬subclasses.
.‫برنامج‬ ‫صورة‬ ‫في‬ ‫التالي‬ ‫المثال‬ ‫هذا‬ ‫اﻵن‬ ‫وسنرى‬
‫استخدام‬‫التوارث‬
‫مثال‬11.5‫التوارث‬ ‫استخدام‬
#!/usr/bin/python
# Filename: inherit.py
class SchoolMember:
'''Represents any school member.'''
def __init__(self, name, age):
self.name = name
self.age = age
print '(Initialized SchoolMember: %s)' % self.name
def tell(self):
'''Tell my details.'''
print 'Name:"%s" Age:"%s"' % (self.name, self.age),
class Teacher(SchoolMember):
'''Represents a teacher.'''
‫للفهرس‬ ‫عودة‬‫التوارث‬ ‫استخدام‬|106
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
def __init__(self, name, age, salary):
SchoolMember.__init__(self, name, age)
self.salary = salary
print '(Initialized Teacher: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Salary: "%d"' % self.salary
class Student(SchoolMember):
'''Represents a student.'''
SchoolMember.__init__(self, name, age)
self.marks = marks
print '(Initialized Student: %s)' % self.name
def tell(self):
SchoolMember.tell(self)
print 'Marks: "%d"' % self.marks
t = Teacher('Mrs. Shrividya', 40, 30000)
s = Student('Swaroop', 22, 75)
print # prints a blank line
members = [t, s]
for member in members:
member.tell() # works for both Teachers and Student
‫الخرج‬
$ python inherit.py
(Initialized SchoolMember: Mrs. Shrividya)
‫للفهرس‬ ‫عودة‬‫التوارث‬ ‫استخدام‬|107
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
(Initialized Teacher: Mrs. Shrividya)
(Initialized SchoolMember: Swaroop)
(Initialized Student: Swaroop)
Name:"Mrs. Shrividya" Age:"40" Salary: "30000"
Name:"Swaroop" Age:"22" Marks: "75"
‫كيف‬‫يعمل‬:
‫لستعمال‬‫التوارث‬‫في‬ ‫الساسية‬ ‫الفئة‬ ‫اسم‬ ‫بتحديد‬ ‫نقوم‬ ،‫التوارث‬ ‫لستخدام‬tuple‫باسم‬ ‫متبوعا‬
‫الطريقة‬ ‫أن‬ ‫نلحظ‬ ‫ذلك‬ ‫بعد‬ .‫الفئة‬ ‫تعريف‬ ‫في‬ ‫الفئة‬__init__‫الساسية‬ ‫بالفئة‬ ‫الخاصة‬
‫المتغير‬ ‫باستخدام‬ ‫واضح‬ ‫بشكل‬ ‫تستدعى‬self‫في‬ ‫الساسية‬ ‫الفئة‬ ‫جزء‬ ‫إعداد‬ ‫يمكننا‬ ‫ذلك‬ ‫أجل‬ ‫،من‬
‫الدالة‬ ‫باستدعاء‬ ‫تلقائي‬ ‫تقوم‬ ‫ل‬ ‫بيثون‬ ‫إن‬ ،‫تتذكرها‬ ‫أن‬ ‫عليك‬ ‫التي‬ ‫المهمة‬ ‫المور‬ ‫من‬ .‫الكائن‬
.‫بنفسك‬ ‫واضح‬ ‫بشكل‬ ‫باستدعائها‬ ‫تقوم‬ ‫أن‬ ‫وعليك‬ ،‫الساسية‬ ‫للفئة‬ ‫المشيِّدة‬
‫ال‬ ‫لستدعاء‬ ‫الفئة‬ ‫اسم‬ ‫تقديم‬ ‫طريق‬ ‫عن‬ ‫الساسية‬ ‫الفئة‬ ‫طرق‬ ‫استدعاء‬ ‫يمكننا‬ ‫أنه‬ ‫نلحظ‬ ‫كذلك‬
method‫المتغير‬ ‫إلى‬ ‫نمرر‬ ‫ذلك‬ ‫وبعد‬ ،self.‫قيمة‬ ‫أي‬ ‫مع‬
‫الفئات‬ ‫معالجة‬ ‫يمكننا‬ ‫أنه‬ ‫نلحظ‬Teacher‫أو‬Student‫للفئة‬ ‫عناصر‬ ‫كمجرد‬
SchoolMember‫الطريقة‬ ‫نستخدم‬ ‫عندما‬ .tell‫للفئة‬SchoolMember.
‫الطريقة‬ ‫أن‬ ‫كذلك‬ ‫ونلحظ‬tell‫الطريقة‬ ‫وليست‬ ‫استدعاؤها‬ ‫يتم‬ ‫الفرعي‬ ‫بالنوع‬ ‫الخاصة‬
tell‫بالفئة‬ ‫الخاصة‬SchoolMember‫بيثون‬ ‫أن‬ ‫هو‬ ‫ذلك‬ ‫لفهم‬ ‫الطرق‬ ‫أحد‬ .ً‫دائما‬‫في‬ ‫تبدأ‬
‫الطرق‬ ‫عن‬ ‫البحث‬methods‫إيجاد‬ ‫تستطع‬ ‫لم‬ ‫وإذا‬ .‫ذلك‬ ‫تفعل‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫وهي‬ ،‫النوع‬ ‫في‬
‫ال‬method‫ال‬ ‫عن‬ ‫البحث‬ ‫في‬ ‫تبدأ‬ ‫فإنها‬methods‫تلو‬ ‫واحدة‬ ‫الساسية‬ ‫الفئات‬ ‫إلى‬ ‫المنتمية‬
‫صف‬ ‫في‬ ‫تحديدها‬ ‫أجل‬ ‫من‬ ‫الخرى‬tuple. ‫الطبقة‬ ‫تعريف‬ ‫في‬
-‫صف‬ ‫في‬ ‫مندرجة‬ ‫فئة‬ ‫من‬ ‫أكثر‬ ‫هناك‬ ‫كان‬ ‫–إذا‬ ‫بالمصطلح‬ ‫خاصة‬ ‫ملحظة‬tuple،‫التوريث‬
‫تسمى‬ ‫عندئذ‬‫المتعدد‬ ‫بالتوريث‬.
‫الخلصـة‬
‫لقد‬‫قمنا‬‫اﻵن‬‫باستكشاف‬‫الجوانب‬‫المختلفة‬‫للفئات‬‫والكائنات‬‫فضل‬‫عن‬‫مختلف‬‫المصطلحات‬
‫المرتبطة‬‫بها‬.‫وقد‬‫شاهدنا‬‫أيضا‬‫فوائد‬‫ومتطلبات‬‫البرمجة‬‫الكائنية‬‫الموجهة‬.‫بيثون‬‫تعتبر‬‫لغة‬
‫برمجة‬‫عالية‬‫المستوى‬‫في‬‫مجال‬‫البرمجة‬‫الكائنية‬‫الموجهة‬‫وفهم‬‫هذه‬‫المفاهيم‬‫بعناية‬
‫سيساعدك‬‫كثيرا‬‫في‬‫المدى‬‫البعيد‬.
‫وفيما‬‫يلي‬،‫سنتعلم‬‫كيفية‬‫التعامل‬‫مع‬‫المدخلت‬‫والمخرجات‬‫وكيفية‬‫الوصول‬‫إ‬‫لى‬‫الملفات‬‫في‬
‫بيثون‬.
‫للفهرس‬ ‫عودة‬‫الخلصـة‬|108
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
. ‫الفصل‬12‫الدخل/الخــرج‬ .
‫المحتويات‬ ‫قائمة‬
‫ال‬‫ملفات‬
‫استخدام‬‫الملف‬
Pickle
Pickling‫و‬Unpickling
‫ال‬‫خلصة‬
‫مهع‬ ‫التفاعهل‬ ‫علهى‬ ‫قهدرة‬ ‫برنامجهك‬ ‫إعطهاء‬ ‫فهي‬ ‫ترغهب‬ ‫عنهدما‬ ‫الهوقت‬ ‫مهن‬ ‫الكهثير‬ ‫لهديك‬ ‫سهيكون‬
‫المسهتخدم‬)‫نفسهك‬ ‫أنهت‬ ‫يكهون‬ ‫ولعلهه‬.(‫تطبهع‬ ‫ثهم‬ ، ‫المسهتخدم‬ ‫مهن‬ ً‫مهدخل‬ ‫تأخهذ‬ ‫إن‬ ‫تريهد‬ ‫فهأنت‬
‫السهابقة‬ ‫النتهائج‬ ‫بعهض‬.‫أن‬ ‫يمكننها‬ ‫ول‬‫الفهادات‬ ‫باسهتخدام‬ ‫ذلهك‬ ‫نحقهق‬raw_input‫و‬print
‫علهى‬‫التهوالي‬.‫بالنسهبة‬‫لل‬‫خهههرج‬‫يمكننها‬ ،‫أيضها‬‫اسهتخدام‬‫مختلهف‬‫الفئة‬ ‫طهرق‬)str (string
‫على‬‫سبيل‬‫المثال‬،‫يمكنك‬‫استخدام‬‫طريقة‬rjust‫إلى‬ ‫محاذاة‬ ‫ذات‬ ‫نصية‬ ‫سلسلة‬ ‫على‬ ‫لتحصل‬
) ‫انظههههر‬ . ‫محههههدد‬ ‫لنطههههاق‬ ‫اليميههههن‬help(str. ‫صههههيل‬ ‫التفهههها‬ ‫مههههن‬ ‫لمزيههههد‬
‫يوجد‬‫نوع‬‫شائع‬‫آخر‬‫من‬‫ت‬ ‫الدخل/الخههرج‬‫تعامل‬‫مع‬‫الملفات‬‫وقراءة‬ ،‫إنشاء‬ ‫على‬ ‫القدرة‬ ‫إن‬ .
‫الفصل‬ ‫هذا‬ ‫في‬ ‫الجانب‬ ‫هذا‬ ‫في‬ ‫سنبحث‬ ‫و‬ ، ‫البرامج‬ ‫من‬ ‫للعديد‬ ‫أساسي‬ ‫أمر‬ ‫الملفات‬ ‫وكتابة‬.
‫الملفات‬
‫يمكنك‬‫فتح‬‫واستخدام‬‫الملفات‬‫ا‬ ‫بغرض‬‫لقراءة‬‫أو‬‫الكتابة‬‫عن‬‫طريق‬‫إنشاء‬‫كائن‬‫للفئة‬file
‫واستخدام‬‫طرق‬read, readline‫أو‬write‫بشكل‬‫مناسب‬‫للقراءة‬‫من‬‫الملف‬‫أو‬‫الكتابة‬‫إلى‬
‫الملف‬‫قابلية‬ ‫إن‬ .‫القراءة‬‫أو‬‫الكتابة‬‫إلى‬‫ملف‬‫يتوقف‬‫على‬‫النمط‬‫الذي‬‫قمت‬‫بتحديده‬‫لفتح‬
‫الملف‬.‫ثم‬‫أخيرا‬،‫وعندما‬‫تنتهي‬‫من‬‫الملف‬،‫يمكنك‬‫استدعاء‬‫طريقة‬close‫لتبلغ‬‫بيثون‬‫بأننا‬
‫انتهينا‬‫من‬‫استخدام‬‫الملف‬.
‫مثال‬12.1‫الملف‬ ‫استخدام‬
#!/usr/bin/python
# Filename: using_file.py
poem = '''
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
'''
‫للفهرس‬ ‫عودة‬‫الملفات‬|109
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
f = file('poem.txt', 'w') # open for 'w'riting
f.write(poem) # write text to file
f.close() # close the file
f = file('poem.txt') # if no mode is specified, 'r'ead mode is assumed by default
while True:
line = f.readline()
if len(line) == 0: # Zero length indicates EOF
break
print line, # Notice comma to avoid automatic newline added by Python
f.close() # close the file
‫الخههرج‬
$ python using_file.py
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
‫كيف‬‫يعمل‬‫البرنامج‬
‫للفئة‬ ‫مثال‬ ‫بإنشاء‬ ‫قمنا‬ ،‫أول‬file‫الملف‬ ‫فتح‬ ‫نريد‬ ‫الذي‬ ‫والنمط‬ ‫الملف‬ ‫اسم‬ ‫تحديد‬ ‫طريق‬ ‫عن‬
) ‫بواسطة‬ ‫للقراءة‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫النمط‬ .‫به‬'r') ‫للكتابة‬ ‫نمط‬ ‫أو‬ ‫و‬ ('w') ‫مشترك‬ ‫نمط‬ ‫(أو‬'
a'‫تعطيك‬ ‫وسوف‬ ،‫المتاحة‬ ‫النماط‬ ‫من‬ ‫العديد‬ ‫الواقع‬ ‫في‬ ‫وهناك‬ ،(help(file(‫المزيد‬
.‫عنها‬ ‫التفاصيل‬ ‫من‬
‫طريقة‬ ‫واستخدام‬ ‫الكتابة‬ ‫نمط‬ ‫في‬ ‫ملف‬ ‫نفتح‬ ‫أول‬write‫للفئة‬file‫غلق‬ ‫أخيرا‬ ‫الملف،ثم‬ ‫إلى‬ ‫للكتابة‬
close.‫الملف‬ ‫هذا‬
.‫الفتراضي‬ ‫هو‬ ‫القراءة‬ ‫نمط‬ ‫يكون‬ ،‫نمطا‬ ‫نحدد‬ ‫لم‬ ‫وإذا‬ .‫للقراءة‬ ‫أخرى‬ ‫مرة‬ ‫الملف‬ ‫نفس‬ ‫نفتح‬ ،‫ذلك‬ ‫بعد‬
‫الطريقة‬ ‫باستخدام‬ ‫الملف‬ ‫من‬ ‫سطر‬ ‫كل‬ ‫في‬ ‫نقرأ‬readline‫إلينا‬ ‫ترجع‬ ‫الطريقة‬ ‫هذه‬ .‫حلقة‬ ‫في‬
‫نصية‬ ‫سلسلة‬ ‫إلينا‬ ‫يرجع‬ ‫عندما‬ ‫السطر.ولذا‬ ‫نهاية‬ ‫في‬ ‫جديد‬ ‫لسطر‬ ‫حرف‬ ‫إلى‬ ‫بالضافة‬ ‫كامل‬ ‫سطرا‬
‫فارغة‬.‫الحلقة‬ ‫وتتوقف‬ ‫إليها‬ ‫الوصول‬ ‫تم‬ ‫قد‬ ‫الملف‬ ‫نهاية‬ ‫أن‬ ‫إلى‬ ‫يشير‬ ‫فهو‬ ،
‫الفادة‬ ‫مع‬ ‫فاصلة‬ ‫نستخدم‬ ‫أننا‬ ‫ولحظ‬print‫إفادة‬ ‫تضيفه‬ ‫والذي‬ ،‫تلقائيا‬ ‫جديد‬ ‫سطر‬ ‫حدوث‬ ‫لمنع‬
print.‫جديد‬ ‫سطر‬ ‫إشارة‬ ‫مع‬ ‫ينتهي‬ ‫بالفعل‬ ‫الملف‬ ‫من‬ ‫يقرأ‬ ‫الذي‬ ‫السطر‬ ‫لن‬‫غلق‬ ‫أخيرا‬ ،‫ثم‬close
.‫الملف‬ ‫هذا‬
‫الملف‬ ‫محتويات‬ ‫على‬ ‫اطلع‬ ،‫اﻵن‬poem.txt.‫صحيح‬ ‫بشكل‬ ‫يعمل‬ ‫البرنامج‬ ‫أن‬ ‫من‬ ‫للتأكد‬
‫للفهرس‬ ‫عودة‬‫الملفات‬|110
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Pickle
‫تدعى‬ ‫معيارية‬ ‫وحدة‬ ‫بيثون‬ ‫لنا‬ ‫توفر‬pickle‫تخزين‬ ‫استخدامهافي‬ ‫يمكن‬ ‫،والتي‬‫أي‬‫في‬ ‫كائن‬
‫الكائن‬ ‫تخزين‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫مساس‬ ‫دون‬ ‫لحقا‬ ‫عليها‬ ‫تحصل‬ ‫ثم‬ ،‫ملف‬ ‫في‬ ‫بيثون‬‫الدائم‬.
‫تسمى‬ ‫أخرى‬ ‫وحدة‬ ‫وهناك‬cPickle‫الوحدة‬ ‫به‬ ‫تقوم‬ ‫ما‬ ‫نفس‬ ‫بالضبط‬ ‫وظيفتها‬ ‫والتي‬pickle‫ما‬ ‫؛‬
‫بلغة‬ ‫انهامكتوبة‬ ‫عدا‬C)‫بمقدار‬ ‫أسرع‬ ‫وهي‬1000‫هذه‬ ‫من‬ ‫أي‬ ‫استخدام‬ ‫يمكنك‬ .(‫أكثر‬ ‫أو‬ ‫مرة‬
‫الوحدات‬cPickle‫الوحدة‬ ‫تستخدم‬ ‫سوف‬ ‫أننا‬ ‫من‬ ‫الرغم‬ ‫على‬ ،cPickle‫إلى‬ ‫نشير‬ ‫نحن‬ ،‫تذكر‬ .‫هنا‬
‫وحدة‬ ‫مجرد‬ ‫ببساطة‬ ‫الوحدات‬ ‫هذه‬ ‫من‬ ‫كل‬ ‫أن‬pickle
Pickling and Unpickling
‫مثال‬12.2Pickling and Unpickling
#!/usr/bin/python
# Filename: pickling.py
import cPickle as p
#import pickle as p
shoplistfile = 'shoplist.data' # the name of the file where we will store the object
shoplist = ['apple', 'mango', 'carrot']
# Write to the file
f = file(shoplistfile, 'w')
p.dump(shoplist, f) # dump the object to a file
f.close()
del shoplist # remove the shoplist
# Read back from the storage
f = file(shoplistfile)
storedlist = p.load(f)
print storedlist
‫الخههرج‬
$ python pickling.py
['apple', 'mango', 'carrot']
‫للفهرس‬ ‫عودة‬Pickling and Unpickling|
111
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫كيف‬‫يعمل‬‫البرنامج‬
‫الصيغة‬ ‫نستخدم‬ ‫أن‬ ‫نلحظ‬ ،‫أول‬import..as‫اسم‬ ‫استخدام‬ ‫يمكننا‬ ‫حيث‬ ‫يسير‬ ‫أمر‬ ‫هذا‬ ‫و‬ .
) ‫مختلفة‬ ‫وحدة‬ ‫إلى‬ ‫النتقال‬ ‫لنا‬ ‫يتيح‬ ‫فإنه‬ ،‫الحالة‬ ‫هذه‬ ‫في‬ ‫وحتى‬ .‫للوحدة‬ ‫اقصر‬cPickle‫أو‬
pickle‫هذه‬ ‫إلى‬ ‫نشير‬ ‫ببساطة‬ ‫ونحن‬ ،‫البرنامج‬ ‫بقية‬ ‫في‬ !‫واحد‬ ‫لسطر‬ ‫بسيط‬ ‫تغيير‬ ‫خلل‬ ‫(من‬
‫كه‬ ،‫الوحدة‬p.
‫الكائن‬ ‫بفتح‬ ‫نقوم‬ ‫أول‬ ،‫ملف‬ ‫في‬ ‫كائن‬ ‫لتخزين‬file‫الملف‬ ‫في‬ ‫الكائن‬ ‫وتخزين‬ ‫الكتابة‬ ‫نمط‬ ‫في‬
‫الدالة‬ ‫استدعاء‬ ‫طريق‬ ‫عن‬ ‫المفتوح‬dump‫الوحدة‬ ‫من‬pickle‫تسمى‬ ‫العملية‬ ‫هذه‬ .pickling.
‫الدالة‬ ‫باستخدام‬ ‫الكائن‬ ‫نسترجع‬ ‫ذلك؛‬ ‫بعد‬load‫للوحدة‬pickle‫تسمى‬ ‫العملية‬ ‫هذه‬ .‫الكائن‬ ‫ترجع‬ ‫التي‬
unpickling
‫الخلص‬‫ة‬
‫لقد‬‫ناقشنا‬‫مختلف‬‫أنواع‬‫المدخلت‬‫والمخرجات‬‫وأيضا‬‫معالجة‬‫الملفات‬‫واستخدام‬‫الوحدة‬
pickle.
‫وفيما‬‫يلي‬‫سنبحث‬‫في‬‫مفهوم‬‫الستثناءات‬exceptions.
‫للفهرس‬ ‫عودة‬‫الخلصة‬|112
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
. ‫فصل‬13‫الستثناءات‬ .
‫المحتويات‬ ‫قائمة‬
‫الخطاء‬
Try..Except
‫الستثناءات‬ ‫معالجة‬
‫الستثناءات‬ ‫رفع‬
‫الستثناءات‬ ‫رفع‬ ‫كيفية‬
Try ..Finally
‫استخدام‬Finally
‫الخلصة‬
‫،ماذا‬ ‫المثال‬ ‫سبيل‬ ‫على‬ .‫برنامجك‬ ‫في‬ ‫معينة‬ ‫استثنائية‬ ‫حالت‬ ‫تحدث‬ ‫عندما‬ ‫الستثناءات‬ ‫تقع‬
‫بالمصادفة‬ ‫حذفت‬ ‫كنت‬ ‫إذا‬ ‫ما‬ ‫أو‬ ‫موجود؟‬ ‫غير‬ ‫والملف‬ ‫ما‬ ‫ملف‬ ‫لقراءة‬ ‫ذاهبا‬ ‫كنت‬ ‫لو‬ ‫يحدث‬
.‫الستثناءات‬ ‫باستخدام‬ ‫تعالج‬ ‫الحالت‬ ‫هذه‬ ‫مثل‬ ‫يعمل؟‬ ‫كان‬ ‫برنامجا‬
‫والذي‬ ‫بيثون‬ ‫تتولها‬ ‫المور‬ ‫هذه‬ ‫؟‬ ‫الصالحة‬ ‫غير‬ ‫التصريحات‬ ‫بعض‬ ‫لبرنامجك‬ ‫كان‬ ‫لو‬ ‫ماذا‬
. ‫ما‬ ‫خطأ‬ ‫هناك‬ ‫أن‬ ‫وتخبرك‬ {‫لك‬ ‫}معلنة‬ ‫يديها‬ ‫ترفع‬
‫الخطــاء‬
‫إفادة‬ ‫إلى‬ ‫بسيطة‬ ‫نظرة‬print‫كتابة‬ ‫في‬ ‫إملئيا‬ ‫أخطأنا‬ ‫لو‬ ‫ماذا‬ .print‫كه‬ ‫وكتبناها‬
Print‫صياغة‬ ‫خطأ‬ ‫بيثون‬ ‫لنا‬ ‫ترفع‬ ، ‫الحالة‬ ‫هذه‬ ‫وفي‬ .‫الصغير‬ ‫والحرف‬ ‫الكبير‬ ‫الحرف‬ ‫لحظ‬ ‫؟‬
syntax error.
>>> Print 'Hello World'
File "<stdin>", line 1
Print 'Hello World'
^
SyntaxError: invalid syntax
>>> print 'Hello World'
Hello World
‫هذا‬ ‫أن‬ ‫نلحظ‬syntaxerror‫وهذا‬ .‫عنده‬ ‫الكتابة‬ ‫خطأ‬ ‫اكتشاف‬ ‫تم‬ ‫الذي‬ ‫المكان‬ ‫وأيضا‬ ، ‫يرفع‬
‫الخطاء‬ ‫معالج‬ ‫يفعله‬ ‫ما‬ ‫هو‬error handler.‫الخطأ‬ ‫لهذا‬
‫للفهرس‬ ‫عودة‬‫الخطــاء‬|113
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Try..Except
‫اضغط‬ .‫المستخدمين‬ ‫من‬ ‫مدخلت‬ ‫قراءة‬ ‫سنحاول‬Ctrl-d.‫يحدث‬ ‫ماذا‬ ‫وانظر‬
>>> s = raw_input('Enter something --> ')
Enter something --> Traceback (most recent call last):
File "<stdin>", line 1, in ?
EOFError
‫يدعى‬ ‫خطأ‬ ‫إلينا‬ ‫ترفع‬ ‫بيثون‬EOFError‫الملف‬ ‫نهاية‬ ‫على‬ ‫العثور‬ ‫تم‬ ‫أنه‬ ‫أساسا‬ ‫يعني‬ ‫والذي‬
‫مفتاحي‬ ‫على‬ ‫الضغط‬ ‫خلل‬ ‫من‬ ‫يتمثل‬ ‫)الذي‬ ‫متوقعا‬ ‫ذلك‬ ‫يكن‬ ‫لم‬ ‫حيث‬Ctrl-d(
.‫الخطاء‬ ‫هذه‬ ‫مثل‬ ‫مع‬ ‫التعامل‬ ‫كيفية‬ ‫سنرى‬ ، ‫يلي‬ ‫وفيما‬
‫الستثناءات‬ ‫معالجة‬
‫إفادة‬ ‫باستخدام‬ ‫الستثناءات‬ ‫معالجة‬ ‫يمكننا‬try..except‫المعتادة‬ ‫البيانات‬ ‫بالساس‬ ‫وضعنا‬ ‫.وقد‬
‫لبنة‬ ‫ضمن‬try‫لبنة‬ ‫في‬ ‫لدينا‬ ‫التي‬ ‫الخطاء‬ ‫معالجات‬ ‫كل‬ ‫وضعنا‬ ‫،وكذلك‬except.
‫مثال‬13.1‫الستثناءات‬ ‫معالجة‬
#!/usr/bin/python
# Filename: try_except.py
import sys
try:
s = raw_input('Enter something --> ')
except EOFError:
print 'nWhy did you do an EOF on me?'
sys.exit() # exit the program
except:
print 'nSome error/exception occurred.'
# here, we are not exiting the program
print 'Done'
‫الخرج‬
$ python try_except.py
Enter something -->
Why did you do an EOF on me?
$ python try_except.py
Enter something --> Python is exceptional!
‫للفهرس‬ ‫عودة‬‫الستثناءات‬ ‫معالجة‬|114
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Done
‫البرنامج‬ ‫يعمل‬ ‫كيف‬
‫اللبنة‬ ‫في‬ ‫خطأ‬ ‫تثير‬ ‫قد‬ ‫التي‬ ‫الفادات‬ ‫كل‬ ‫نضع‬try‫الخطاء‬ ‫جميع‬ ‫معالجة‬ ‫محاولة‬ ‫ثم‬ ‫ومن‬
‫اللبنة‬ / ‫البند‬ ‫في‬ ‫والستثناءات‬except‫البند‬ .except‫واحد‬ ‫استثناء‬ ‫أو‬ ‫خطأ‬ ‫معالجة‬ ‫يمكنه‬
‫من‬ ‫أسماء‬ ‫هناك‬ ‫يكن‬ ‫لم‬ ‫إذا‬ .‫للخطاء/الستثناءات‬ ‫العتراضية‬ ‫الجمل‬ ‫من‬ ‫قائمة‬ ‫أو‬ ، ‫محدد‬
‫بند‬ ‫هناك‬ ‫يكون‬ ‫أن‬ ‫ويجب‬ .‫والستثناءات‬ ‫الخطاء‬ ‫جميع‬ ‫ستعالج‬ ، ‫معطاة‬ ‫الستثناءات‬ ‫أو‬ ‫الخطاء‬
except‫من‬ ‫بند‬ ‫كل‬ ‫مع‬ ‫مرتبط‬ ‫القل‬ ‫على‬ ‫واحد‬try.
‫البرنامج‬ ‫تنفيذ‬ ‫يوقف‬ ‫و‬ ‫يستدعي‬ ‫لبيثون‬ ‫الفتراضي‬ ‫المعالج‬ ‫فإن‬ ‫استثناء‬ ‫أو‬ ‫خطأ‬ ‫أي‬ ‫يعالج‬ ‫لم‬ ‫إذا‬
.‫العمل‬ ‫هذا‬ ‫في‬ ‫بالفعل‬ ‫رأينا‬ ‫وقد‬ .‫رسالة‬ ‫ويطبع‬
‫بند‬ ‫على‬ ‫الحصول‬ ‫أيضا‬ ‫يمكنك‬else‫اللبنة‬ ‫مع‬ ‫مرتبطا‬try..catch‫البند‬ ‫تنفيذ‬ ‫ويتم‬ .else‫عند‬
‫استثناء‬ ‫أي‬ ‫وجود‬ ‫عدم‬
‫على‬ ‫الحصول‬ ‫كذلك‬ ‫نا‬ ‫يمكن‬‫الستثناء‬‫عن‬ ‫إضافية‬ ‫معلومات‬ ‫على‬ ‫الحصول‬ ‫يمكننا‬ ‫لذا‬‫الذي‬ ‫الستثناء‬
‫حدث‬.‫التالي‬ ‫المثال‬ ‫في‬ ‫هذا‬ ‫ويتجلى‬.
‫الستثناءات‬ ‫رفع‬
‫الفادة‬ ‫باستخدام‬ ‫الستثناءات‬ ‫رفع‬ ‫يمكنك‬raise‫الخطأ‬ ‫اسم‬ ‫تحدد‬ ‫أن‬ ‫أيضا‬ ‫عليك‬ ‫يجب‬ .
‫الستثناء‬ ‫أو‬ ‫الخطأ‬ .‫الستثناء‬ ‫مع‬ ‫جنب‬ ‫إلى‬ ‫جنبا‬ ‫موضوعا‬ ‫يكون‬ ‫الستثنائي‬ ‫والكائن‬ ، ‫/الستثناء‬
‫عن‬ ‫مشتقة‬ ‫فئة‬ ‫مباشر‬ ‫غير‬ ‫أو‬ ‫مباشر‬ ‫بشكل‬ ‫تعتبر‬ ‫والتي‬ ‫فئة‬ ‫يكون‬ ‫أن‬ ‫ينبغي‬ ‫رفعه‬ ‫يمكنك‬ ‫الذي‬
‫الفئة‬Error‫الفئة‬ ‫أو‬Exception.‫التوالي‬ ‫على‬
‫الستثناءات‬ ‫رفع‬ ‫كيفية‬
‫مثال‬13.2‫الستثناءات‬ ‫رفع‬ ‫كيفية‬
#!/usr/bin/python
# Filename: raising.py
class ShortInputException(Exception):
'''A user-defined exception class.'''
def __init__(self, length, atleast):
Exception.__init__(self)
self.length = length
self.atleast = atleast
try:
‫للفهرس‬ ‫عودة‬‫الستثناءات‬ ‫رفع‬ ‫كيفية‬|115
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
s = raw_input('Enter something --> ')
if len(s) < 3:
raise ShortInputException(len(s), 3)
# Other work can continue as usual here
except EOFError:
print 'nWhy did you do an EOF on me?'
except ShortInputException, x:
print 'ShortInputException: The input was of length %d, 
was expecting at least %d' % (x.length, x.atleast)
else:
print 'No exception was raised.'
‫الخهرج‬
$ python raising.py
Enter something -->
Why did you do an EOF on me?
$ python raising.py
Enter something --> ab
ShortInputException: The input was of length 2, was expecting at least 3
$ python raising.py
Enter something --> abc
No exception was raised.
‫يعمل‬ ‫كيف‬
‫استخدام‬ ‫يمكننا‬ ‫ل‬ ‫قد‬ ‫أننا‬ ‫من‬ ‫الرغم‬ ‫على‬ ‫بنا‬ ‫خاص‬ ‫الستثناء‬ ‫من‬ ‫نوع‬ ‫بإنشاء‬ ‫قمنا‬ ،‫هنا‬‫أي‬
‫استثناء‬/‫إيضاحية‬ ‫لغراض‬ ‫سلفا‬ ‫محدد‬ ‫خطأ‬.‫الفئة‬ ‫هو‬ ‫الجديد‬ ‫الستثناء‬ ‫من‬ ‫النوع‬ ‫وهذا‬
ShortInputException‫هما‬ ‫حقلين‬ ‫على‬ ‫تحتوي‬ ‫وهي‬:length‫و‬ ،‫المدخلت‬ ‫طول‬ ‫وهو‬
atleast‫البرنامج‬ ‫يتوقعه‬ ‫طول‬ ‫أقل‬ ‫وهو‬.‫هو‬ ‫الجديد‬‫الفئة‬.‫حقلين‬ ‫على‬ ‫تحتوي‬ ‫وهي‬:‫هما‬
length،‫المدخلت‬ ‫طول‬ ‫وهو‬
‫البند‬ ‫في‬، except‫بالفئة‬ ‫نذكرك‬error‫بإجراء‬ ‫يقوم‬ ‫الذي‬ ‫المتغير‬ ‫إلى‬ ‫إضافة‬ ‫أيضا‬
‫مع‬ ‫المقارنة‬‫الخطأ‬ ‫الكائن‬/‫الستثناء‬.‫للقيم‬ ‫مماثلة‬ ‫تعتبر‬ ‫والتي‬‫والمعاملت‬‫في‬‫الدالة‬ ‫استدعاء‬.
‫الفئة‬ ‫داخل‬ ‫وفي‬except‫نستخدم‬ ‫الخاصة‬‫الحقل‬length‫والحقل‬atleast‫رسالة‬ ‫لطباعة‬
.‫للمستخدم‬ ‫مناسبة‬
‫للفهرس‬ ‫عودة‬‫الستثناءات‬ ‫رفع‬ ‫كيفية‬|116
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Try..Finally
‫يتم‬ ‫أن‬ ‫ويمكن‬ ‫؟‬ ‫ل‬ ‫أو‬ ‫استثناء‬ ‫رفع‬ ‫تم‬ ‫سواء‬ ‫الملف‬ ‫هذا‬ ‫إغلق‬ ‫وأردت‬ ‫الملف‬ ‫تقرأ‬ ‫كنت‬ ‫لو‬ ‫ماذا‬
‫باستخدام‬ ‫ذلك‬finally‫بنود‬ ‫أحد‬ ‫استخدام‬ ‫يمكنك‬ ‫أنه‬ ‫علما‬ .‫اللبنة‬except‫جنب‬ ‫إلى‬ ‫جنبا‬
‫لبنة‬ ‫مع‬finally‫اللبنة‬ ‫لنفس‬try‫كنت‬ ‫إذا‬ ‫اﻵخر‬ ‫بداخل‬ ‫واحد‬ ‫لتضمين‬ ‫ستضطر‬ .‫لها‬ ‫المقابلة‬
. ‫كليهما‬ ‫استخدام‬ ‫في‬ ‫ترغب‬
‫استخدام‬Finally
‫مثال‬13.3‫استخدام‬Finally
#!/usr/bin/python
# Filename: finally.py
import time
try:
f = file('poem.txt')
while True: # our usual file-reading idiom
line = f.readline()
if len(line) == 0:
break
time.sleep(2)
print line,
finally:
f.close()
print 'Cleaning up...closed the file'
‫الخرج‬
$ python finally.py
Programming is fun
When the work is done
Cleaning up...closed the file
Traceback (most recent call last):
File "finally.py", line 12, in ?
time.sleep(2)
KeyboardInterrupt
: ‫يعمل‬ ‫كيف‬
‫من‬ ‫اعتباطية‬ ‫طريقة‬ ‫أدخلت‬ ‫كنت‬ ‫ولكني‬ ،‫الملف‬ ‫بقراءة‬ ‫الخاصة‬ ‫العمل‬ ‫بمجموعة‬ ‫كالمعتاد‬ ‫نقوم‬
‫لمدة‬ ‫السبات‬2‫الدالة‬ ‫طريقة‬ ‫باستخدام‬ ‫سطر‬ ‫كل‬ ‫طباعة‬ ‫قبل‬ ‫ثانية‬time.sleep‫السبب‬ .
‫ببطء‬ ‫يعمل‬ ‫البرنامج‬ ‫أن‬ ‫هو‬ ‫لذلك‬ ‫الوحيد‬‫العمل‬ ‫بطاقم‬ ‫نقوم‬) .‫بطبيعتها‬ ‫جدا‬ ‫سريعة‬ ‫بيثون‬.(
‫للفهرس‬ ‫عودة‬‫استخدام‬Finally|117
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫اضغط‬ ،‫يعمل‬ ‫البرنامج‬ ‫يظل‬ ‫وعندما‬Ctrl+c‫البرنامج‬ ‫لمقاطعة/إلغاء‬
‫الستثناء‬ ‫أن‬ ‫لحظ‬KeyboardInterrupt‫قبل‬ ‫ولكنه‬ ،‫للخروج‬ ‫طريقه‬ ‫في‬ ‫البرنامج‬ ‫و‬ ‫يلقى‬
‫الملف‬ ‫إغلق‬ ‫ويتم‬ ‫البند‬ ‫ينفيذ‬ ‫النهاية‬ ‫وفي‬ ،‫البرنامج‬ ‫وجود‬.
‫الخلصة‬
‫بيانات‬ ‫استخدام‬ ‫ناقشنا‬ ‫لقد‬try..except‫و‬try..finally‫ننشئ‬ ‫كيف‬ ‫رأينا‬ ‫ولقد‬ .
.‫كذلك‬ ‫الستثناءات‬ ‫رفع‬ ‫وكيفية‬ ‫بنا‬ ‫خاصة‬ ‫استثناء‬ ‫أنواع‬ ‫منطقتنا‬
.‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫باستكشاف‬ ‫سنقوم‬ ‫المقبل‬ ‫الفصل‬ ‫وفي‬
‫للفهرس‬ ‫عودة‬‫استخدام‬Finally|118
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫فصل‬14‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ .
.‫المحتويات‬ ‫قائمة‬
‫مقدمة‬
‫الوحدة‬sys
‫الوامر‬ ‫سطر‬ ‫معطيات‬
‫عن‬ ‫المزيد‬sys
‫الوحدة‬os
‫الخلصة‬
‫مقدمة‬:
‫مكتبهه‬‫بيثهون‬‫القياسهية‬‫متاحهة‬‫مهع‬‫كهل‬‫تركيهب‬‫لبهايثون‬.‫وههي‬‫تحتهوي‬‫علهى‬‫عهدد‬‫ههائل‬‫مهن‬
‫الوحدات‬/modules‫المفيدة‬‫جدا‬.‫من‬‫و‬‫الهمية‬‫بمكان‬‫أن‬‫لى‬‫ع‬ ‫تاد‬‫تع‬‫بة‬‫مكت‬‫بيثون‬‫القياسية‬‫؛‬
‫حيث‬‫إن‬‫معظم‬‫المشاكل‬‫يمكن‬‫حلها‬‫بسهولة‬‫وبسرعة‬‫إذا‬‫كنت‬‫المكتبة‬ ‫هذه‬ ‫على‬ ‫معتادا‬
‫سنبحث‬‫بعضا‬‫من‬‫الوحدات‬‫المستخدمة‬‫في‬‫هذه‬‫المكتبة‬.‫يمكنك‬‫العثور‬‫على‬‫التفاصيل‬‫الكاملة‬
‫لجميع‬‫الوحدات‬‫في‬‫مكتبة‬‫بيثون‬‫القياسية‬‫في‬‫قسم‬"Library Reference"‫في‬‫الوثائق‬
‫التي‬‫تأتي‬‫مع‬‫تركيب‬‫بيثون‬‫الخاص‬‫بك‬.
‫الوحدة‬sys:
" ‫الوحهدة‬ ‫ههذه‬ ‫تحتهوي‬sys‫قائمهة‬ ‫بالفعهل‬ ‫رأينها‬ ‫وقهد‬ .‫النظهام‬ ‫مهن‬ ‫محهددة‬ ‫وظيفهة‬ ‫علهى‬ "
sys.argv. ‫الوامر‬ ‫سطر‬ ‫معطيات‬ ‫على‬ ‫تحتوي‬ ‫التي‬
‫الوامر‬ ‫سطر‬ ‫معطيات‬
‫مثال‬14.1‫الوحدة‬ ‫استخدام‬sys.argv
#!/usr/bin/python
# Filename: cat.py
import sys
def readfile(filename):
'''Print a file to the standard output.'''
‫للفهرس‬ ‫عودة‬‫الوامر‬ ‫سطر‬ ‫معطيات‬|119
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
f = file(filename)
while True:
line = f.readline()
if len(line) == 0:
break
print line, # notice comma
f.close()
# Script starts from here
if len(sys.argv) < 2:
print 'No action specified.'
sys.exit()
if sys.argv[1].startswith('--'):
option = sys.argv[1][2:]
# fetch sys.argv[1] but without the first two characters
if option == 'version':
print 'Version 1.2'
elif option == 'help':
print '''
This program prints files to the standard output.
Any number of files can be specified.
Options include:
--version : Prints the version number
--help : Display this help'''
else:
print 'Unknown option.'
sys.exit()
else:
for filename in sys.argv[1:]:
readfile(filename)
‫الخرج‬
$ python cat.py
No action specified.
$ python cat.py --help
This program prints files to the standard output.
Any number of files can be specified.
Options include:
‫للفهرس‬ ‫عودة‬‫الوامر‬ ‫سطر‬ ‫معطيات‬|120
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
--version : Prints the version number
--help : Display this help
$ python cat.py --version
Version 1.2
$ python cat.py --nonsense
Unknown option.
$ python cat.py poem.txt
Programming is fun
When the work is done
if you wanna make your work also fun:
use Python!
‫كيف‬‫يعمل‬ :
‫المر‬ ‫تقليد‬ ‫يحاول‬ ‫البرنامج‬ ‫هذا‬cat‫لينكس‬ ‫مستخدمي‬ ‫عند‬ ‫المألوف‬/‫يونكس‬.‫فقط‬ ‫عليك‬‫تح‬
‫الخرج‬ ‫إلى‬ ‫بطباعتها‬ ‫المر‬ ‫يقوم‬ ‫وسوف‬ ‫النصية‬ ‫الملفات‬ ‫بعض‬ ‫أسماء‬ ‫ديد‬-output
‫في‬ ‫القل‬ ‫على‬ ‫واحد‬ ‫عنصر‬ ‫دائما‬ ‫هناك‬ ،‫تفاعلية‬ ‫غير‬ ‫بطريقة‬ ‫لبيثون‬ ‫برنامج‬ ‫يعمل‬ ‫عندما‬‫قائمة‬
sys.argv‫كه‬ ‫متاحا‬ ‫ويكون‬ ‫عامل‬ ‫يصبح‬ ‫الحالي‬ ‫البرنامج‬ ‫اسم‬ ‫هو‬sys.argv‫بيثون‬ ‫إن‬ ‫حيث‬
‫الصفر‬ ‫من‬ ‫العد‬ ‫تبدأ‬.‫الوامر‬ ‫سطر‬ ‫ومعاملت‬‫العنصر‬ ‫ذلك‬ ‫تتبع‬ ‫الخرى‬.
‫تحهدد‬ ‫أنهها‬ ‫المؤكهد‬ ‫مهن‬ ‫الهتي‬ ‫الخيهارات‬ ‫ببعهض‬ ‫نمهده‬ ‫أن‬ ‫علينها‬ ‫السهتعمال‬ ‫سههل‬ ‫البرنامهج‬ ‫لجعهل‬
‫البرنامج‬ ‫عن‬ ‫المزيد‬ ‫معرفة‬ ‫للمستخدم‬.‫أول‬ ‫نستخدم‬ ‫نحن‬argument‫أي‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫لمعرفة‬
‫لبرنامجنا‬ ‫محددة‬ ‫الخيارات‬ ‫من‬.‫الخيار‬ ‫كان‬ ‫إذا‬--version‫رقم‬ ‫طباعة‬ ‫يتم‬ ،‫مستخدما‬‫إصدارة‬
‫البرنامج‬.‫الخيار‬ ‫نحدد‬ ‫عندما‬ ،‫وبالمثل‬، -- help‫حول‬ ‫الشرح‬ ‫من‬ ‫قليل‬ ‫نعطي‬‫البرنامج‬.‫نحن‬
‫دالهة‬ ‫اسهتعمال‬ ‫مهن‬ ‫نسهتفيد‬sys.exit‫البرنامهج‬ ‫مهن‬ ‫للخهروج‬.‫تعودنها‬ ‫وكمها‬‫انظهر‬ ،‫دائمها‬
help(sys.exit(‫التفاصيل‬ ‫من‬ ‫لمزيد‬.
‫ساطة‬‫بب‬ ‫تم‬‫ت‬ ،‫مج‬‫البرنا‬ ‫لى‬‫إ‬ ‫ها‬‫تمرير‬ ‫تم‬‫ي‬ ‫فات‬‫المل‬ ‫سماء‬‫وأ‬ ‫حددة‬‫م‬ ‫يارات‬‫خ‬ ‫ناك‬‫ه‬ ‫كون‬‫ي‬ ‫ل‬ ‫ندما‬‫ع‬
.‫الوامر‬ ‫سطر‬ ‫على‬ ‫محدد‬ ‫ترتيب‬ ‫في‬ ‫اﻵخر‬ ‫تلو‬ ‫واحدا‬ ،‫ملف‬ ‫كل‬ ‫من‬ ‫سطر‬ ‫كل‬ ‫طباعة‬
‫المر‬ ،‫وبالمناسبة‬cat‫لكلمة‬ ‫اختصار‬concatenate‫هذا‬ ‫به‬ ‫يقوم‬ ‫ما‬ ‫الساس‬ ‫في‬ ‫وهي‬‫البرنا‬
‫من‬ ‫أكثر‬ ‫أو‬ ‫اثنان‬ ،‫ملحقة‬ ‫أو‬ ‫مرتبطة‬ ‫ملفات‬ ‫سلسلة‬ ‫أو‬ ‫ملف‬ ‫طباعة‬ ‫يمكنه‬ ‫حيث‬ – ‫مج‬‫الملفات‬
‫الخرج‬ ‫أو‬ ‫الشاشة‬ ‫على‬ ‫معا‬/.output
‫للفهرس‬ ‫عودة‬‫الوامر‬ ‫سطر‬ ‫معطيات‬|121
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫عن‬ ‫المزيد‬sys:
‫سلة‬‫السل‬‫صية‬‫الن‬sys.version‫يك‬‫تعط‬‫مات‬‫معلو‬‫عن‬‫صدارة‬‫إ‬‫ثون‬‫بي‬‫لتي‬‫ا‬‫مت‬‫ق‬‫ها‬‫بتثبيت‬.‫و‬
-‫الصف‬tuple‫المسماة‬sys.version_info‫تعطيك‬‫طريقة‬‫أسهل‬‫لتاحة‬‫أجزاء‬‫محددة‬‫من‬
‫إصدارة‬‫بيثون‬‫لبرنامجك‬.
[swaroop@localhost code]$ python
>>> import sys
>>> sys.version
'2.3.4 (#1, Oct 26 2004, 16:42:40) n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]'
>>> sys.version_info
(2, 3, 4, 'final', 0)
*‫للمبرمجين‬‫المحترفين‬: *
‫العناصر‬‫الخرى‬‫ذات‬‫الهمية‬‫في‬‫الوحدة‬sys‫تتضمن‬sys.stdin‫و‬sys.stdout‫و‬
sys.stderr. ‫التوالي‬ ‫على‬ ‫برنامجك‬ ‫في‬ ‫القياسي‬ ‫والخطأ‬ ‫والدخل‬ ‫الخرج‬ ‫سريان‬ ‫مع‬ ‫تتطابق‬
‫الوحدة‬os
‫إذا‬ ‫خاصهة‬ ‫أهميهة‬ ‫لهها‬ ‫الوحهدة‬ ‫ههذه‬ . ‫التشهغيل‬ ‫ام‬‫ه‬‫لنظ‬ ‫عامهة‬ ‫وظيفهة‬ ‫تمثهل‬ ‫البرمجيهة‬ ‫الوحهدة‬ ‫ههذه‬
‫يعمل‬ ‫لكي‬ ‫مكتوبا‬ ‫ليكون‬ ‫للبرنامج‬ ‫يسمح‬ ‫إنه‬ ‫أي‬ - ‫لبرامجك‬ ‫مستقلة‬ ‫منصات‬ ‫عمل‬ ‫تريد‬ ‫كنت‬
.‫تغييرات‬ ‫أي‬ ‫ذلك‬ ‫يتطلب‬ ‫أن‬ ‫ودون‬ ‫مشاكل‬ ‫أي‬ ‫دون‬ ‫من‬ ‫كذلك‬ ‫ويندوز‬ ‫على‬ ‫أو‬ ‫لينوكس‬ ‫على‬
‫المتغير‬ ‫استخدام‬ ‫ذلك‬ ‫على‬ ‫المثلة‬ ‫ومن‬os.sep‫مستقلة‬ ‫بيئة‬ ‫أو‬ ‫مسار‬ ‫تحديد‬ ‫عملية‬ ‫من‬ ‫بدل‬
.‫محدد‬ ‫لنظام‬
‫الموديل‬ ‫من‬ ‫فائدة‬ ‫الجزاء‬ ‫أكثر‬os.‫بذاته‬ ‫واضح‬ ‫ومعظمها‬ ‫أدناه‬ ‫مدرجة‬
•‫النصية‬ ‫السلسلة‬os.name" ‫فمثل‬ ، ‫تستخدمها‬ ‫التي‬ ‫المنصة‬ ‫تحدد‬nt' ‫و‬ ‫لويندوز‬ "posix'
. ‫لينكس/يونيكس‬ ‫لمستخدمي‬
•() ‫الدالة‬os.getcwd‫عليه‬ ‫يعمل‬ ‫الذي‬ ‫الحالي‬ ‫الدليل‬ ‫مثل‬ ، ‫الحالي‬ ‫العمل‬ ‫دليل‬ ‫على‬ ‫للحصول‬
. ‫لبايثون‬ ‫سكريبت‬
•() ‫الدوال‬os.getenv() ‫و‬os.putenv‫على‬ ‫البيئة‬ ‫متغيرات‬ ‫إعداد‬ ‫أو‬ ‫على‬ ‫للحصول‬ ‫تستخدم‬
. ‫التوالي‬
•() ‫الدالة‬os.listdir‫الملفات‬ ‫كل‬ ‫أسماء‬ ‫تعيد‬. ‫الحالي‬ ‫الدليل‬ ‫في‬ ‫والمجلدات‬
•() ‫الدالة‬os.remove. ‫الملفات‬ ‫أحد‬ ‫لحذف‬ ‫تستخدم‬
‫للفهرس‬ ‫عودة‬‫الوحدة‬os|122
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
•() ‫الدالة‬os.system. ‫للصدفة‬ ‫أمر‬ ‫لتشغيل‬ ‫تستخدم‬
•‫النصهية‬ ‫السلسهلة‬os.linesep‫سهبيل‬ ‫علهى‬ ‫الحاليهة‬ ‫المنصهة‬ ‫علهى‬ ‫المسهتخدم‬ ‫السهطر‬ ‫اء‬‫ه‬‫إنه‬ ‫تفيهد‬
' ‫وندوز‬ ‫يستخدم‬ ‫المثال‬rn' ‫لينكس‬ ‫ويستخدم‬ ، 'n' ‫ماك‬ ‫ويستخدم‬ ، 'r'
•‫الدالة‬os.path.split‫المسار‬ ‫في‬ ‫الملف‬ ‫واسم‬ ‫الدليل‬ ‫اسم‬ ‫تعيد‬ ().
>>> os.path.split('/home/swaroop/byte/code/poem.txt')
('/home/swaroop/byte/code', 'poem.txt')
•() ‫الدوال‬os.path.isfile()‫و‬os.path.isdir‫المعطى‬ ‫المسار‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫لفحص‬ ‫تستخدم‬
() ‫الدالة‬ ، ‫وبالمثل‬ . ‫التوالي‬ ‫على‬ ‫مجلد‬ ‫أو‬ ‫ملف‬ ‫إلى‬ ‫يشير‬os.path.exists‫لمعرفة‬ ‫تستخدم‬
. ‫بالفعل‬ ‫موجودا‬ ‫المعطى‬ ‫المسار‬ ‫كان‬ ‫إذا‬ ‫ما‬
) ‫تستخدم‬ ‫أن‬ ‫ويمكن‬ . ‫التفاصيل‬ ‫من‬ ‫لمزيد‬ ‫القياسية‬ ‫بيثون‬ ‫وثائق‬ ‫في‬ ‫البحث‬ ‫يمكنك‬
help(sys‫كذلك‬.
‫الخلصة‬
‫الوحدة‬ ‫وظائف‬ ‫من‬ ‫بعضا‬ ‫رأينا‬ ‫قد‬sys‫في‬ ‫تبحث‬ ‫أن‬ ‫عليك‬ ‫ينبغي‬ . ‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫في‬
. ‫كذلك‬ ‫الوحدات‬ ‫من‬ ‫والمزيد‬ ‫حولها‬ ‫المزيد‬ ‫على‬ ‫لتحصل‬ ‫القياسية‬ ‫بيثون‬ ‫وثائق‬
‫أكثر‬ ‫بيثون‬ ‫في‬ ‫جولتنا‬ ‫ستجعل‬ ‫،والتي‬ ‫بيثون‬ ‫من‬ ‫متنوعة‬ ‫جوانب‬ ‫نغطي‬ ‫سوف‬ ‫التالي‬ ‫الفصل‬ ‫وفي‬
. ً‫اكتمال‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬|123
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫فصل‬15‫بيثون‬ ‫من‬ ‫المزيد‬ .
‫المحتويات‬ ‫جدول‬
. ‫الخاصة‬ ‫الطرق‬
‫القائمة‬ ‫تضمين‬
‫المفردة‬ ‫الفادات‬ ‫لبنات‬
‫المضمنة‬ ‫القوائم‬ ‫استخدام‬
‫استقبال‬‫الصفوف‬‫والقوائم‬‫في‬‫الدالة‬
‫لمبدا‬ ‫نماذج‬
‫لمبدا‬ ‫نماذج‬ ‫استخدام‬
‫إفادات‬exec‫و‬eval
‫إفادة‬assert
‫دالة‬repr
‫الخلصة‬
‫اﻵن‬‫وقد‬‫قمنا‬‫بنجاح‬‫بتغطية‬‫جوانب‬‫رئيسة‬‫ومتنوعة‬‫من‬‫بيثون‬‫والتي‬‫سوف‬‫تستخدمها‬،‫في‬‫هذا‬
‫الفصل‬‫سنغطي‬‫المزيد‬‫من‬‫الجوانب‬‫التي‬‫تجعل‬‫معرفتنا‬‫بلغة‬‫بيثون‬‫أكثر‬‫اكتمال‬
‫الخاصة‬ ‫الطرق‬
‫هنهاك‬‫بعهض‬‫السهاليب‬‫الخاصهة‬‫الهتي‬‫لهها‬‫أهميهة‬‫خاصهة‬‫فهي‬‫الفئات‬/classes‫مثهل‬‫طهرق‬
__init__‫و‬__del__‫والتي‬‫لها‬‫أهمية‬‫قد‬‫شهدناها‬‫بالفعل‬.
‫عموما‬،‫الطرق‬‫الخاصة‬‫تستخدم‬‫لتقليد‬‫سلوك‬‫معين‬.‫فعلى‬‫سبيل‬‫المثال‬،‫إذا‬‫أردت‬‫أ‬‫ن‬‫تستعمل‬
]x[key‫ية‬‫لعمل‬‫الفهرسهة‬‫الخاصهة‬‫بهك‬‫من‬‫جل‬‫أ‬‫فئة‬‫لديك‬)‫ثل‬‫م‬‫الهتي‬‫ستخدمها‬‫ت‬‫في‬‫القهوائم‬
‫والصفوف‬tuples(‫ثم‬‫مجرد‬‫تنفيذ‬‫طريقة‬()__getitem__‫ويتم‬‫عملك‬.‫إذا‬‫كنت‬‫تفكر‬
‫في‬‫ذلك‬،‫فهذا‬‫ما‬‫ت‬‫قوم‬‫بيثون‬‫بعمله‬‫مع‬‫الفئة‬list‫نفسها‬!
‫بعض‬‫هذه‬‫الطرق‬/Methods‫المفيدة‬‫الخاصة‬‫مدرجة‬‫في‬‫الجدول‬‫التالي‬.‫إذا‬‫كنت‬‫تريد‬‫أن‬
‫تتعرف‬‫على‬‫كل‬‫الطرق‬‫الخاصة‬،‫هناك‬‫قائمة‬‫ضخمة‬‫متاحة‬‫في‬‫الدليل‬‫المرجعي‬‫لبايثون‬.
‫جدول‬15.1‫الخاصة‬ ‫الساليب‬ ‫بعض‬
‫السم‬‫الشرح‬
__init__(self, ...)‫للستعمال‬ ‫حديثا‬ ‫المنشأ‬ ‫الكائن‬ ‫يعود‬ ‫عندما‬ ‫فقط‬ ‫تستدعى‬ ‫الطريقة‬ ‫وهذه‬
__del__(self)‫الكائن‬ ‫تدمير‬ ‫يتم‬ ‫أن‬ ‫قبل‬ ‫فقط‬ ‫تستدعى‬
‫للفهرس‬ ‫عودة‬‫فصل‬.15.‫بيثون‬ ‫من‬ ‫المزيد‬|124
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫السم‬‫الشرح‬
__str__(self)‫الفادة‬ ‫نستخدم‬ ‫عندما‬ ‫تستدعى‬print‫عندما‬ ‫أو‬ ‫كائن‬ ‫مع‬‫نستخدم‬()str
__lt__(self, other)
‫وبالمثل‬‫يوجد‬‫أساليب‬‫خاصة‬‫لجميع‬‫العوامل‬+"،>‫،إلخ‬""> "Less than
‫تستدعى‬‫عند‬‫استخدام‬‫العامل‬
__getitem__(self,
key)
] ‫الفهرسة‬ ‫عملية‬ ‫استخدام‬ ‫عند‬ ‫تستدعى‬x[key
__len__(self)() ‫المدمجة‬ ‫الدالة‬ ‫استعمال‬ ‫عند‬ ‫تستدعى‬len‫المتسلسلة‬ ‫لكائن‬
‫لبنات‬‫الفادات‬‫المفردة‬
‫لها‬ ‫الجزاء‬ ‫من‬ ‫مجموعة‬ ‫تمثل‬ ‫الفادات‬ ‫من‬ ‫لبنة‬ ‫كل‬ ‫أن‬ ‫راسخ‬ ‫فهم‬ ‫لديك‬ ‫يكون‬ ‫أن‬ ‫ينبغي‬ ،‫واﻵن‬
‫نى‬‫مع‬ ‫جع‬‫ها}را‬‫ب‬ ‫خاص‬‫ال‬ ‫حة‬‫الزا‬ ‫من‬ ‫ستوى‬‫م‬‫الزاحة‬‫صحيح‬ ‫هذا‬ ، ‫سنا‬‫ح‬ .{‫بع‬‫الرا‬ ‫صل‬‫الف‬ ‫في‬
‫قة‬‫دقي‬ ‫ست‬‫لي‬ ‫ها‬‫ولكن‬ ، ‫لجزاء‬‫ا‬ ‫ظم‬‫لمع‬ ‫سبة‬‫بالن‬100‫سوى‬ ‫ضمن‬‫تت‬ ‫ل‬ ‫فادات‬‫ال‬ ‫نة‬‫لب‬ ‫كانت‬ ‫إذا‬ .٪
، ‫مثل‬ ‫لنقل‬ ، ‫السطر‬ ‫نفس‬ ‫لى‬‫ع‬ ‫حدده‬‫ت‬ ‫أن‬ ‫يمكنك‬ ‫حينئذ‬ ، ‫واحدة‬ ‫إفادة‬‫إفادة‬conditional
‫أو‬looping.
: ‫بوضوح‬ ‫ذلك‬ ‫يشرح‬ ‫التالي‬ ‫والمثال‬
>>> flag = True
>>> if flag: print 'Yes'
...
Yes
.‫اللبنة‬ ‫من‬ ‫مستقل‬ ‫كبند‬ ‫وليس‬ - ‫المكان‬ ‫ذات‬ ‫داخل‬ ‫في‬ ‫تستخدم‬ ‫الواحدة‬ ‫الفادة‬ ‫فإن‬ ، ‫نرى‬ ‫كما‬
‫برنامجك‬ ‫لجعل‬ ‫هذا‬ ‫استخدام‬ ‫يمكنك‬ ، ‫ذلك‬ ‫من‬ ‫الرغم‬ ‫على‬‫أصغر‬‫أل‬ ‫بشدة‬ ‫أوصي‬ ‫وإنني‬ ،
‫المختصر‬ ‫الرمز‬ ‫طريقة‬ ‫تستخدم‬short-cut، ‫الخطاء‬ ‫من‬ ‫التحقق‬ ‫حالة‬ ‫باستثناء‬ ‫هذه‬
‫تستخدم‬ ‫كنت‬ ‫إذا‬ ‫إضافية‬ ‫إفادة‬ ‫إضافة‬ ‫بكثير‬ ‫السهل‬ ‫من‬ ‫سيكون‬ ‫أنه‬ ‫الرئيسية‬ ‫السباب‬ ‫الخ.أحد‬
‫الزاحة‬. ‫السليمة‬
‫إدخال‬ ‫في‬ ‫يساعدك‬ ‫ذلك‬ ‫فإن‬ ، ‫التفاعلي‬ ‫النمط‬ ‫في‬ ‫بيثون‬ ‫مفسر‬ ‫استخدام‬ ‫عند‬ ‫أنه‬ ‫لحظ‬ ‫أيضا‬
‫المؤشرات‬ ‫تغيير‬ ‫طريق‬ ‫عن‬ ‫البيانات‬‫حالة‬ ‫وفي‬ .‫ملئم‬ ‫بشكل‬aboe‫الكلمة‬ ‫تدخل‬ ‫أن‬ ‫بعد‬ ،
‫المفتاحية‬if‫عندما‬ .‫بعد‬ ‫منها‬ ‫النتهاء‬ ‫يتم‬ ‫لم‬ ‫الفادة‬ ‫أن‬ ‫إلى‬ ‫لتشير‬ ... ‫إلى‬ ‫المؤشر‬ ‫تغير‬ ‫فإنها‬ ،
‫مفتاح‬ ‫نضغط‬ ، ‫الطريقة‬ ‫بهذه‬ ‫الفادة‬ ‫نكمل‬enter، ‫ذلك‬ ‫بعد‬ .‫اكتملت‬ ‫قد‬ ‫البيانات‬ ‫أن‬ ‫لتأكيد‬
.‫التالية‬ ‫المدخلت‬ ‫وانتظار‬ ‫القديم‬ ‫المؤشر‬ ‫إلى‬ ‫والعودة‬ ‫كلها‬ ‫الفادة‬ ‫تنفيذ‬ ‫بيثون‬ ‫ينهي‬
‫المضمنة‬ ‫القوائم‬
‫قائمة‬ ‫لديك‬ ، ‫المثال‬ ‫سبيل‬ ‫على‬ .‫الحالية‬ ‫القائمة‬ ‫من‬ ‫جديدة‬ ‫قائمة‬ ‫لستخلص/اشتقاق‬ ‫تستخدم‬
‫للفهرس‬ ‫عودة‬‫المضمنة‬ ‫القوائم‬|125
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫في‬ ‫مضروبة‬ ‫الرقام‬ ‫جميع‬ ‫مع‬ ‫مناظرة‬ ‫قائمة‬ ‫على‬ ‫تحصل‬ ‫أن‬ ‫تريد‬ ‫و‬ ، ‫العداد‬ ‫من‬2‫فقط‬ ‫ولكن‬
‫من‬ ‫أكبر‬ ‫تكون‬ ‫عندما‬2.‫تكون‬ ‫المضمنة‬ ‫فالقائمة‬‫نموذجية‬.‫الحالت‬ ‫هذه‬ ‫لمثل‬
‫المضمنة‬ ‫القوائم‬ ‫استخدام‬
‫مثال‬15.1‫المضمنة‬ ‫القوائم‬ ‫استخدام‬
#!/usr/bin/python
# Filename: list_comprehension.py
listone = [2, 3, 4]
listtwo = [2*i for i in listone if i > 2]
print listtwo
‫الخرج‬
$ python list_comprehension.py
[6, 8]
‫يعمل‬ ‫كيف‬
) ‫بها‬ ‫القيام‬ ‫ينبغي‬ ‫التي‬ ‫التغيرات‬ ‫تحديد‬ ‫خلل‬ ‫من‬ ‫جديدة‬ ‫قائمة‬ ‫نشتق‬ ، ‫هنا‬2*i‫تتحقق‬ ‫عندما‬ (
‫الشروط‬ ‫بعض‬)if i > 2(‫من‬ ‫الكثير‬ ‫في‬ .‫معدلة‬ ‫غير‬ ‫تزال‬ ‫ل‬ ‫الصلية‬ ‫القائمة‬ ‫أن‬ ‫لحظ‬ .
/‫الحلقات‬ ‫نستخدم‬ ‫المرات‬loops‫الشيء‬ ‫ونفس‬ ، ‫القائمة‬ ‫عناصر‬ ‫من‬ ‫عنصر‬ ‫كل‬ ‫إلى‬ ‫للوصول‬
‫باستخدام‬ ‫يتحقق‬ ‫أن‬ ‫يمكن‬list comprehensions، ‫وإحكاما‬ ، ‫دقة‬ ‫أكثر‬ ‫طريقة‬ ‫وهي‬
. ‫ووضوحا‬
‫الدوال‬ ‫في‬ ‫والقوائم‬ ‫الصفوف‬ ‫استقبال‬
‫الصف‬ ‫مثل‬ ‫الدالة‬ ‫معاملت‬ ‫لستقبال‬ ، ‫خاصة‬ ‫طريقة‬ ‫وهناك‬tuple‫بادئة‬ ‫باستخدام‬ ‫قاموس‬ ‫أو‬
*‫أو‬**. ‫الدالة‬ ‫في‬ ‫المعاملت‬ ‫من‬ ‫عدديا‬ ‫متغيرا‬ ‫نأخذ‬ ‫عندما‬ ‫مفيد‬ ‫أمر‬ ‫وهذا‬ .‫التوالي‬ ‫على‬
>>> def powersum(power, *args):
... '''Return the sum of each argument raised to specified power.'''
... total = 0
... for i in args:
... total += pow(i, power)
... return total
...
>>> powersum(2, 3, 4)
25
‫للفهرس‬ ‫عودة‬‫الدوال‬ ‫في‬ ‫والقوائم‬ ‫الصفوف‬ ‫استقبال‬|
126
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
>>> powersum(2, 10)
100
‫بادئة‬‫ال‬ ‫لى‬‫إ‬ ‫بالنظر‬‫و‬*‫ير‬‫المتغ‬ ‫مام‬‫أ‬args‫في‬ ‫لة‬‫الدا‬ ‫لى‬‫إ‬ ‫ضافة‬‫الم‬ ‫عاملت‬‫الم‬ ‫كل‬ ‫ين‬‫تخز‬ ‫تم‬‫،ي‬
args** ‫البادئة‬ ‫استخدام‬ ‫تم‬ ‫وإذا‬ .‫تيوبل‬ ‫باعتباره‬
‫مفتهاح/قيمهة‬ ‫مهن‬ ‫أزواج‬ ‫لتكهون‬ ‫المعهاملت‬ ‫إلهى‬ ‫ينظهر‬ ‫أن‬ ‫يجهب‬ ، * ‫مهن‬ ‫بهدل‬ ‫اسهتخدمت‬ ‫قهد‬
key/value.‫للقاموس‬
‫لمدا‬ ‫نماذج‬
‫تستخدم‬‫الفادة‬lambda‫لنشاء‬‫كائنات‬‫دالة‬‫جديدة‬‫ثم‬‫إرجاعها‬‫أثناء‬‫وقت‬‫التشغيل‬
‫لمدا‬ ‫نماذج‬ ‫استخدام‬
‫مثال‬15.2‫لمبدا‬ ‫نماذج‬ ‫استخدام‬
#!/usr/bin/python
# Filename: lambda.py
def make_repeater(n):
return lambda s: s * n
twice = make_repeater(2)
print twice('word')
print twice(5)
‫الخرج‬
$ python lambda.py
wordword
10
: ‫يعمل‬ ‫كيف‬
‫الدالهة‬ ‫اسهتخدمنا‬ ‫؛‬ ‫هنها‬make_repeater‫فهي‬ ‫جديهدة‬ ‫دالهة‬ ‫كائنهات‬ ‫لنشهاء‬‫وقهت‬‫التشهغيل‬/
runtime. ‫وإرجاعها‬
‫الفادة‬lambda‫تأخذ‬ ، ‫الساس‬ ‫في‬ . ‫للدالة‬ ‫كائن‬ ‫لنشاء‬ ‫تستخدم‬lambda‫متبوعا‬ ‫معامل‬
‫بتعبير‬‫واحد‬‫فقط‬‫والذي‬‫يصبح‬‫الجسم‬‫لهذه‬‫الدالة‬،‫وقيمة‬‫هذا‬‫التعبير‬‫يتم‬‫إرجاعها‬‫من‬‫خلل‬
‫الدالة‬‫الجديدة‬.‫لحظ‬‫أنه‬‫حتى‬‫الفادة‬print‫ل‬‫يمكن‬‫تستخدم‬ ‫أن‬‫نموذج‬ ‫داخل‬‫لمدا‬‫ولكن‬ .
.‫فقط‬ ‫كعبارات‬ ‫تستخدم‬
‫للفهرس‬ ‫عودة‬‫لمدا‬ ‫نماذج‬|127
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫إفادات‬exec‫و‬eval
‫ستخدم‬‫ت‬‫يذ‬‫لتنف‬‫فادات‬‫إ‬‫ثون‬‫بي‬‫لتي‬‫ا‬‫تم‬‫ي‬‫ها‬‫تخزين‬‫في‬‫بارة‬‫ع‬‫صية‬‫ن‬‫أو‬‫لف‬‫م‬.‫لى‬‫ع‬‫سبيل‬‫ثال‬‫الم‬،
‫يمكننا‬‫توليد‬‫سلسلة‬‫نصية‬‫تحتوي‬‫شفرة‬‫لبايثون‬‫عند‬‫وقت‬‫التشغيل‬/runtime‫ومن‬َّ‫ثم‬‫تنفيذ‬
‫هذه‬‫الفادات‬‫باستخدام‬‫الفادات‬exec.‫وهذا‬‫مثال‬‫بسيط‬‫تراه‬‫بأسفهل‬:
>>> exec 'print "Hello World"'
Hello World
‫إفادة‬eval
‫المثال‬ ‫في‬ ‫يتضح‬ ‫كما‬ ‫النصية‬ ‫السلسلة‬ ‫في‬ ‫تخزن‬ ‫التي‬ ‫الصالحة‬ ‫بيثون‬ ‫تعابير‬ ‫لحساب‬ ‫تستخدم‬
:‫بأسفل‬
>>> eval('2*3')
6
‫إفادة‬assert
‫إفهادة‬ ‫تسهتخدم‬assert‫بهأن‬ ‫متأكهدا‬ ‫كنهت‬ ‫إذا‬ ‫المثهال‬ ‫سهبيل‬ ‫مهاعلى‬ ‫شهيء‬ ‫تحقهق‬ ‫مهن‬ ‫للتأكهد‬
‫لم‬ ‫إذا‬ ‫خطأ‬ ‫وترفع‬ ‫ذلك‬ ‫من‬ ‫التحقق‬ ‫وتريد‬ ‫قائمة‬ ‫في‬ ‫تستخدمه‬ ‫القل‬ ‫على‬ ً‫واحدا‬ ً‫عنصرا‬ ‫لديك‬
‫الفادة‬ ‫تبر‬‫تع‬ ‫حينئذ‬ ً‫قا‬‫متحق‬ ‫يكن‬assert‫الفادة‬ ‫تفشل‬ ‫وعندما‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫ية‬‫مثال‬ ‫إفادة‬
assert‫لنا‬ ‫يرتفع‬classname>AssertionError
>>> mylist = ['item']
>>> assert len(mylist) >= 1
>>> mylist.pop()
'item'
>>> assert len(mylist) >= 1
Traceback (most recent call last):
File "<stdin>", line 1, in ?
AssertionError
‫الدالة‬repr
‫الدالة‬ ‫تستخدم‬reprt‫ما‬ ‫لكائن‬ ‫نصية‬ ‫لسلسلة‬ ‫قانوني‬ ‫تمثيل‬ ‫على‬ ‫للحصول‬.‫وتقوم‬Backticks‫)وقد‬
‫ت‬ ‫يسههمى‬‫القتبههاس‬ ‫علمههات‬ ‫عكههس‬ ‫أو‬ ‫حويههل‬(‫الههمر‬ ‫بنفههس‬.‫سههيكون‬ ‫أنههه‬ ‫لحههظ‬‫لههديك‬
eval(repr(object)) == object‫الحيان‬ ‫أغلب‬ ‫في‬
>>> i = []
>>> i.append('item')
>>> `i`
"['item']"
‫للفهرس‬ ‫عودة‬‫الدالة‬repr|128
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
>>> repr(i)
"['item']"
‫لة‬‫الدا‬ ‫ستخدم‬‫ت‬ ، ‫ساطة‬‫وبب‬repr‫او‬backticks.‫بع‬‫للط‬ ‫لة‬‫قاب‬ ‫كائن‬‫لل‬ ‫يل‬‫تمث‬ ‫لى‬‫ع‬ ‫صول‬‫للح‬
‫للدالهة‬ ‫بهك‬ ‫الخاصهة‬ ‫الكائنهات‬ ‫تعيهده‬ ‫فيمها‬ ‫التحكهم‬ ‫يمكنهك‬repr__ ‫طريقهة‬ ‫تحديهد‬ ‫خلل‬ ‫مهن‬
repr.‫بك‬ ‫الخاصة‬ ‫الفئة‬ ‫في‬ __
: ‫الخلصة‬
‫بعد‬ َّ‫نغط‬ ‫لم‬ ‫أننا‬ ‫من‬ ‫التأكد‬ ‫يمكنك‬ ‫و‬ ،‫الفصل‬ ‫هذا‬ ‫في‬ ‫بيثون‬ ‫مميزات‬ ‫من‬ ‫المزيد‬ ‫تناولنا‬ ‫لقد‬
‫في‬ ‫تستخدمه‬ ‫سوف‬ ‫ما‬ ‫معظم‬ ‫غطينا‬ ‫قد‬ ‫نكون‬ ،‫المرحلة‬ ‫هذه‬ ‫في‬ ،‫ولكن‬ .‫بيثون‬ ‫ملمح‬ ‫كل‬
.‫ستنشئها‬ ‫أنت‬ ‫البرامج‬ ‫من‬ ‫أيا‬ ‫لتبدأ‬ ‫لك‬ ‫الكفاية‬ ‫فيه‬ ‫المر‬ ‫وهذا‬ . ‫تطبيقاتك‬
.‫بيثون‬ ‫من‬ ‫المزيد‬ ‫استكشاف‬ ‫كيفية‬ ‫نناقش‬ ‫سوف‬ ،‫المقبل‬ ‫الفصل‬ ‫في‬
‫للفهرس‬ ‫عودة‬‫الخلصة‬:|129
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫فصل‬16‫بعد؟‬ ‫وماذا‬ .
‫المحتويات‬ ‫قائمة‬
‫الرسومية‬ ‫البرمجيات‬
‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬
‫المزيد‬ ‫استكشف‬
‫الخلصة‬
‫أنك‬ ‫فلبد‬ ،‫البرامج‬ ‫من‬ ‫العديد‬ ‫كتابة‬ ‫ومارست‬ ،‫اﻵن‬ ‫حتى‬ ‫بعناية‬ ‫الكتاب‬ ‫هذا‬ ‫قرأت‬ ‫قد‬ ‫كنت‬ ‫إذا‬
‫عض‬‫ب‬ ‫شاف‬‫لستك‬ ‫مج‬‫البرا‬ ‫عض‬‫ب‬ ‫شأت‬‫أن‬ ‫كون‬‫ت‬ ‫ما‬‫ورب‬ .‫ﻵن‬‫ا‬ ‫ثون‬‫بي‬ ‫مع‬ ‫ستريحا‬‫وم‬ ‫فا‬‫متآل‬ ‫صبحت‬‫أ‬
.‫تفعل‬ ‫أن‬ ‫فعليك‬ ،‫بالفعل‬ ‫بذلك‬ ‫تقم‬ ‫لم‬ ‫إذا‬ .‫بيثون‬ ‫في‬ ‫اكتسبتها‬ ‫التي‬ ‫المهارات‬ ‫وتطبيق‬ ‫الشياء‬
.'‫بعد؟‬ ‫'ماذا‬ ‫هو‬ ‫اﻵن‬ ‫والسؤال‬
‫برنامج‬ ‫لنفسك‬ ‫اصنع‬ :‫المشكلة‬ ‫هذه‬ ‫معالجة‬ ‫عليك‬ ‫اقترح‬ ‫أن‬ ‫وأود‬‫عناوين‬ ‫دفتر‬‫بسطر‬ ‫يعمل‬
‫الصدقاء‬ ‫مثل‬ ‫معارفك؛‬ ‫عن‬ ‫البحث‬ ‫أو‬ ،‫حذف‬ ‫أو‬ ‫تعديل‬ ‫أو‬ ‫إضافة‬ ‫يمكنك‬ ‫باستخدامه‬ - ‫الوامر‬
‫يجب‬ ‫التفاصيل‬ .‫الهاتف‬ ‫رقم‬ ‫و/أو‬ ‫اللكتروني‬ ‫البريد‬ ‫عنوان‬ ‫مثل‬ ‫ومعلوماتهم‬ ،‫والزملء‬ ‫والسرة‬
.‫لحق‬ ‫وقت‬ ‫في‬ ‫لسترجاعها‬ ‫تخزينها‬
‫كنت‬ ‫وإذا‬ .‫اﻵن‬ ‫حتى‬ ‫بها‬ ‫مررنا‬ ‫التي‬ ‫المختلفة‬ ‫العناصر‬ ‫تذكرت‬ ‫إذا‬ ،‫ما‬ ‫حد‬ ‫إلى‬ ‫سهل‬ ‫أمر‬ ‫هذا‬
.‫التلميحة‬ ‫هذه‬ ‫فإليك‬ ،‫قدما‬ ‫المضي‬ ‫كيفية‬ ‫بشأن‬ ‫توجيهات‬ ‫تريد‬
‫تلميحة‬)‫هذا‬ ‫تقرأ‬ ‫أن‬ ‫عليك‬ ‫يجب‬ ‫ل‬.(
.‫اسمه‬ ‫جعل‬ ‫مع‬ ‫الشخص‬ ‫كائنات‬ ‫لتخزين‬ ‫قاموسا‬ ‫استخدم‬ .‫الشخص‬ ‫معلومات‬ ‫لتمثيل‬ ‫فئة‬ ‫أنشئ‬
‫وحدة‬ ‫استخدم‬ .‫المفتاح‬cPickle‫الساليب‬ ‫استخدم‬ .‫الصلب‬ ‫القرص‬ ‫على‬ ‫الكائنات‬ ‫لحفظ‬
.‫الشخاص‬ ‫وتعديل‬ ‫وحذف‬ ‫لضافة‬ ‫القاموس‬ ‫في‬ ‫المدمجة‬
‫لي‬ ‫أرسل‬ ‫الفور‬ ‫وعلى‬ ،‫واﻵن‬ .‫بيثون‬ ‫مبرمج‬ ‫أنك‬ ‫تدعي‬ ‫أن‬ ‫يمكنك‬ ،‫هذا‬ ‫فعل‬ ‫تستطيع‬ ‫عندما‬
.‫بها‬ ‫أوصيك‬ ‫ولكني‬ ‫اختيارية‬ ‫الخطوة‬ ‫هذه‬ .(-; ‫العظيم‬ ‫الكتاب‬ ‫لهذا‬ ‫شكر‬ ‫بريد‬
:‫بيثون‬ ‫مع‬ ‫رحلتك‬ ‫لمواصلة‬ ‫الطرق‬ ‫بعض‬ ‫إليك‬
‫الرسومية‬ ‫البرمجيات‬
‫مكتبات‬‫الرسومية‬ ‫الواجهة‬‫بيثون‬ ‫باستخدام‬-‫باستخدام‬ ‫الرسومية‬ ‫برامجك‬ ‫لعمل‬ ‫تحتاجها‬
‫بيثون‬.‫مثل‬ ‫برامج‬ ‫إنشاء‬ ‫يمكنك‬IrfanView‫أو‬Kuickshow‫ذلك‬ ‫مثل‬ ‫شيء‬ ‫أي‬ ‫أو‬
‫بها‬ ‫الخاصة‬ ‫الرتباطات‬ ‫مع‬ ‫بيثون‬ ‫في‬ ‫الرسومية‬ ‫الواجهة‬ ‫مكتبات‬ ‫باستعمال‬.‫ما‬ ‫هي‬ ‫الرتباطات‬
‫بلغة‬ ‫ذاتها‬ ‫حد‬ ‫في‬ ‫كتابتها‬ ‫تمت‬ ‫التي‬ ‫المكتبات‬ ‫استخدام‬ ‫مع‬ ‫ببايثون‬ ‫البرامج‬ ‫بكتابة‬ ‫لك‬ ‫يسمح‬C
‫للفهرس‬ ‫عودة‬‫الرسومية‬ ‫البرمجيات‬|130
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫أو‬C++‫اللغات‬ ‫من‬ ‫غيرها‬ ‫أو‬.
‫بيثون‬ ‫باستخدام‬ ‫الرسومية‬ ‫للواجهة‬ ‫الخيارات‬ ‫من‬ ‫الكثير‬ ‫هناك‬:
PyQt.‫الدوات‬ ‫بعُدة‬ ‫بيثون‬ ‫ارتباطات‬ ‫هذه‬Qt)‫كيدي‬ ‫عليه‬ ‫بنيت‬ ‫الذي‬ ‫الساس‬ ‫وهي‬.(Qt
‫لمصمم‬ ‫نظرا‬ ‫خصوصا‬ ‫جدا‬ ‫وقوية‬ ،‫للغاية‬ ‫الستعمال‬ ‫سهلة‬Qt‫المذهلة‬ ‫ووثائقها‬.‫يمكنك‬
‫حرة‬ ‫بصورة‬ ‫استخدامها‬/‫تريد‬ ‫كنت‬ ‫إذا‬ ‫ثمنها‬ ‫لدفع‬ ‫ستضطر‬ ‫ولكن‬ ،‫لينكس‬ ‫على‬ ‫مجانية‬
‫ويندوز‬ ‫على‬ ‫استخدامها‬.PyQt‫حرة‬/‫حرة‬ ‫برمجيات‬ ‫إنشاء‬ ‫أردت‬ ‫إذا‬ ‫مجانية‬)GPL(‫على‬
‫لينكس‬/‫مملوكة‬ ‫برمجيات‬ ‫إنشاء‬ ‫أردت‬ ‫إذا‬ ‫وبمقابل‬ ،‫يونكس‬.‫مصادر‬ ‫من‬PyQt‫الجيدة‬'GUI
Programming with Python: Qt Edition'‫طالع‬‫الرسمية‬ ‫الصفحة‬‫من‬ ‫لمزيد‬
‫التفاصيل‬.
PyGTK.‫جتهك‬ ‫الهدوات‬ ‫بعُهدة‬ ‫بيثهون‬ ‫ات‬‫ه‬‫ارتباط‬ ‫ههذه‬" +GTK) "+‫بنيهت‬ ‫الهذي‬ ‫اس‬‫ه‬‫الس‬ ‫وههي‬
‫نوم‬‫ج‬ ‫يه‬‫عل‬.(‫تك‬‫ج‬+‫سومية‬‫ر‬ ‫قات‬‫تطبي‬ ‫شاء‬‫إن‬ ‫سيمكنك‬ ‫ها‬‫تعتاد‬ ‫أن‬ ‫جرد‬‫بم‬ ‫لك‬‫و‬ ،‫ها‬‫غرابت‬ ‫ها‬‫ل‬
‫بسهرعة‬.‫هة‬‫الواج‬ ‫صمم‬‫بم‬ ‫مرور‬‫ال‬"‫جلد‬"‫نه‬‫ع‬ ‫نى‬‫غ‬ ‫ل‬ ‫مر‬‫أ‬.‫سين‬‫للتح‬ ‫جة‬‫بحا‬ ‫تهزال‬ ‫ما‬ ‫ثائق‬‫الو‬.
‫جتك‬ ‫تعمل‬+‫مكتمل‬ ‫غير‬ ‫ويندوز‬ ‫إلى‬ ‫نقلها‬ ‫ولكن‬ ‫لينكس‬ ‫على‬ ‫جيدا‬.‫برمجيات‬ ‫إنشاء‬ ‫يمكنك‬
‫جتك‬ ‫مستخدما‬ ‫مملوكة‬ ‫أو‬ ‫حرة‬.+‫طالع‬‫الرسمية‬ ‫الصفحة‬‫التفاصيل‬ ‫من‬ ‫للمزيد‬.
wxPython.‫الهدوات‬ ‫بعُهدة‬ ‫بيثهون‬ ‫ارتباطهات‬ ‫ههذه‬wxWidgets.‫ل‬wxPython‫منحنهى‬
‫وحتى‬ ،‫ماك‬ ‫و‬ ،‫ويندوز‬ ‫و‬ ،‫لينكس‬ ‫على‬ ‫وتعمل‬ ‫جدا‬ ‫محمولة‬ ‫فهي‬ ‫ذلك‬ ‫ورغم‬ ،‫بها‬ ‫مرتبط‬ ‫تعليمي‬
‫هة‬‫ه‬‫المدمج‬ ‫هات‬‫ه‬‫المنص‬ ‫هى‬‫ه‬‫عل‬)embedded platforms.(‫هوير‬‫ه‬‫تط‬ ‫بيئات‬ ‫مهن‬ ‫العديهد‬ ‫هد‬‫ه‬‫يوج‬
wxPython‫مثل‬ ‫رسومية‬ ‫واجهة‬ ‫مصممات‬ ‫تشمل‬ ‫التي‬SPE (Stani's Python Editor(
‫هات‬‫الواجهه‬ ‫همم‬‫مصه‬ ‫و‬wxGlade.‫هتخدما‬‫مسه‬ ‫هة‬‫مملوكه‬ ‫أو‬ ‫هرة‬‫حه‬ ‫هات‬‫برمجيه‬ ‫هاء‬‫إنشه‬ ‫هك‬‫يمكنه‬
wxPython.‫طالع‬‫الرسمية‬ ‫الصفحة‬‫التفاصيل‬ ‫من‬ ‫للمزيد‬.
TkInter.‫الموجودة‬ ‫الرسومية‬ ‫الواجهة‬ ‫أدوات‬ ‫عُدد‬ ‫أقدم‬ ‫من‬ ‫واحدو‬ ‫هذه‬.‫استخدمت‬ ‫و‬ ‫سبق‬ ‫إذا‬
IDLE‫برنامهههج‬ ‫رأيهههت‬ ‫فقهههد‬TkInter‫يعمهههل‬.‫وثهههائق‬TkInter‫موقهههع‬ ‫علهههى‬
PythonWare.org‫شهاملة‬.TkInter‫لينكهس‬ ‫مهن‬ ‫كهل‬ ‫علهى‬ ‫وتعمهل‬ ‫محمولهة‬/‫و‬ ‫يهونكس‬
‫سواء‬ ‫حد‬ ‫على‬ ‫وندوز‬.‫أن‬ ‫والهم‬TkInter‫القياسية‬ ‫بيثون‬ ‫توزيعة‬ ‫من‬ ‫جزء‬.
‫راجع‬ ،‫الخيارات‬ ‫من‬ ‫للمزيد‬‫في‬ ‫الرسومية‬ ‫البرمجة‬ ‫ويكي‬ ‫صفحة‬Python.org
‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬
‫بيثهون‬ ‫علهى‬ ‫سومية‬‫الر‬ ‫للبرمجهة‬ ‫حدة‬‫وا‬ ‫سية‬‫قيا‬ ‫أداة‬ ‫جد‬‫تو‬ ‫ل‬ ‫للسهف‬.‫مهن‬ ‫واحهدة‬ ‫ار‬‫ه‬‫تخت‬ ‫أن‬ ‫اقهترح‬
‫حالتك‬ ‫حسب‬ ،‫أعله‬ ‫المذكورة‬ ‫الدوات‬ ‫تلك‬.‫استعدادك‬ ‫هو‬ ‫اختيارك‬ ‫تحديد‬ ‫في‬ ‫الول‬ ‫العامل‬‫للدفع‬
‫ل‬ ‫أو‬ ‫الرسهومية‬ ‫الهدوات‬ ‫مهن‬ ‫أي‬ ‫اسهتخدام‬ ‫مقابهل‬.‫عليهها‬ ‫يعمهل‬ ‫أن‬ ‫تريهد‬ ‫الهتي‬ ‫المنصهة‬ ‫ههو‬ ‫الثهاني‬ ‫العامهل‬
‫كليهما‬ ‫أم‬ ‫ويندوز‬ ‫أم‬ ‫لينكس‬ ‫برنامجك؛‬.‫مستخدمي‬ ‫من‬ ‫كونك‬ ‫هو‬ ‫الثالث‬ ‫العامل‬‫كيدي‬ ‫أو‬ ‫جنوم‬.
‫للفهرس‬ ‫عودة‬‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬|131
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫المستقبلية‬ ‫الفصول‬
‫الرسومية‬ ‫الواجهات‬ ‫برمجة‬ ‫عن‬ ‫الكتاب‬ ‫لهذا‬ ‫فصلين‬ ‫أو‬ ‫فصل‬ ‫كتابة‬ ‫في‬ ‫فكرت‬ ‫لقد‬.‫سأختار‬ ‫غالبا‬
wxPython‫المختارة‬ ‫الدوات‬ ‫كعُدّة‬.‫الموضوع‬ ‫هذا‬ ‫حول‬ ‫نظرك‬ ‫وجهة‬ ‫تعرض‬ ‫أن‬ ‫أردت‬ ‫إذا‬
‫فهي‬ ‫اشهترك‬ ‫فضهلك‬ ‫فمهن‬‫قائمةه‬byte-of-python‫البريدية‬‫حهول‬ ‫معهي‬ ‫القهراء‬ ‫يتنهاقش‬ ‫حيهث‬
‫الكتاب‬ ‫لهذا‬ ‫المحتملة‬ ‫التحسينات‬.
‫المزيد‬ ‫استكشف‬
‫سية‬ ‫القيا‬ ‫ثون‬ ‫بي‬ ‫بة‬ ‫مكت‬.‫عنهه‬ ‫تبحهث‬ ‫ما‬ ‫المكتبهة‬ ‫ههذه‬ ‫فهي‬ ‫سهتجد‬ ،‫الهوقت‬ ‫أغلهب‬ .‫املة‬‫ه‬‫ش‬ ‫بة‬‫مكت‬
‫خلل‬ ‫تتجول‬ ‫بأن‬ ‫بشدة‬ ‫أوصى‬ ‫أنا‬ .‫بيثون‬ ‫في‬ '‫مضمّنة‬ ‫'البطاريات‬ ‫فلسفة‬ ‫بوصفه‬ ‫إليه‬ ‫يشار‬ ‫وهذا‬
‫لبايثون‬ ‫القياسية‬ ‫الوثائق‬.‫بيثون‬ ‫بلغة‬ ‫كبيرة‬ ‫برامج‬ ‫كتابة‬ ‫بدء‬ ‫في‬ ‫المتابعة‬ ‫قبل‬
Python.org‫؛‬‫ومفسر‬ ‫بيثون‬ ‫لغة‬ ‫من‬ ‫الصدارات‬ ‫أحدث‬ ‫ستجد‬ .‫بيثون‬ ‫البرمجة‬ ‫للغة‬ ‫الرسمي‬ ‫الموقع‬
‫جوانب‬ ‫مختلف‬ ‫حول‬ ‫النشطة‬ ‫المناقشات‬ ‫تجري‬ ‫حيث‬ ‫البريدية‬ ‫القوائم‬ ‫مختلف‬ ‫أيضا‬ ‫وهناك‬ .‫اللغة‬
.‫بيثون‬
comp.lang.python‫أخبهار‬ ‫مجموعهة‬ ‫ههي‬usenet‫ههذه‬ ‫حهول‬ ‫النقهاش‬ ‫يجهري‬ ‫حيهث‬
‫إلى‬ ‫الوصول‬ ‫يمكنك‬ .‫تلك‬ ‫الخبار‬ ‫مجموعة‬ ‫إلى‬ ‫واستفساراتك‬ ‫رسائلك‬ ‫إرسال‬ ‫يمكنك‬ .‫اللغة‬
‫باسهتخدام‬ ‫الهنترنت‬ ‫علهى‬ ‫المجموعهات‬ ‫ههذه‬‫جوجل‬ ‫مجموعات‬‫إلهى‬ ‫النضهمام‬ ‫أو‬‫البريديهة‬ ‫القائمهة‬
.‫الخبار‬ ‫لمجموعة‬ ‫مرآة‬ ‫سوى‬ ‫ليست‬ ‫والتي‬
‫بيثون‬ ‫طبخ‬ ‫كتاب‬‫كيفية‬ ‫حول‬ ‫النصائح‬ ‫أو‬ ‫الوصفات‬ ‫من‬ ‫مجموعة‬ ‫جمع‬ ‫حيث‬ ‫للغاية‬ ‫قيم‬ ‫كتاب‬
.‫بيثون‬ ‫مستخدم‬ ‫كل‬ ‫يقرأه‬ ‫أن‬ ‫بد‬ ‫ل‬ ‫الكتاب‬ ‫هذا‬ .‫بيثون‬ ‫باستخدام‬ ‫المشاكل‬ ‫من‬ ‫معينة‬ ‫أنواع‬ ‫حل‬
‫الساحرة‬ ‫بيثون‬.‫مرتز‬ ‫يد‬ ‫دا‬ ‫بقلم‬ ‫بيثون‬ ‫حول‬ ‫الرائعة‬ ‫المقالت‬ ‫من‬ ‫سلسلة‬ ‫هي‬‫ڤ‬
‫بيثون‬ ‫في‬ ‫غص‬‫الحالي‬ ‫الكتاب‬ ‫تماما‬ ‫قرأت‬ ‫إذا‬ .‫بيثون‬ ‫مبرمجي‬ ‫من‬ ‫الخبرة‬ ‫لذوي‬ ‫جدا‬ ‫جيد‬ ‫كتاب‬
‫المواضيع‬ ‫من‬ ‫مجموعة‬ ‫يغطي‬ .‫ذلك‬ ‫بعد‬ '‫بيثون‬ ‫في‬ ‫'غص‬ ‫تقرأ‬ ‫أن‬ ‫بشدة‬ ‫فأرجح‬ ،‫اﻵن‬ ‫تقرأه‬ ‫الذي‬
‫معالجة‬ ‫ذلك‬ ‫في‬ ‫بما‬XML.‫والوظيفية‬ ‫والبرمجة‬ ،‫الوحداتية‬ ‫والختبارات‬ ،
Jython‫بلغهة‬ ‫مج‬‫برا‬ ‫كتابهة‬ ‫بإمكانهك‬ ‫أن‬ ‫يعنهي‬ ‫وههذا‬ .‫ا‬‫ه‬‫جاف‬ ‫لغهة‬ ‫فهي‬ ‫بيثهون‬ ‫لمفسهر‬ ‫تطهبيق‬ ‫ههو‬
!‫كهذلك‬ ‫ا‬‫ه‬‫جاف‬ ‫ات‬‫ه‬‫مكتب‬ ‫واسهتخدام‬ ‫بيثهون‬ ‫بيثهون‬Jython‫كنهت‬ ‫إذا‬ .‫وناضهجة‬ ‫مسهتقرة‬ ‫برمجيهة‬
‫تجرب‬ ‫بأن‬ ‫بشدة‬ ‫فأنصحك‬ ،‫جافا‬ ‫مبرمج‬Jython.
IronPython/ ‫نهت‬ ‫منصهة‬ ‫علهى‬ ‫يعمهل‬ ‫أن‬ ‫ويمكهن‬ #‫سهي‬ ‫لغهة‬ ‫فهي‬ ‫بيثهون‬ ‫لمفسهر‬ ‫تطهبيق‬ ‫ههو‬
‫ات‬‫ه‬‫مكتب‬ .‫واسهتخدام‬ ‫بيثهون‬ ‫بلغهة‬ ‫برامهج‬ ‫كتابهة‬ ‫بإمكانهك‬ ‫أن‬ ‫يعنهي‬ ‫ههذا‬ .‫دوتجنهو‬ / ‫مونهو‬NET
.‫كذلك‬ ‫الثلث‬ ‫المنصات‬ ‫هذه‬ ‫توفرها‬ ‫التي‬ ‫الخرى‬ ‫والمكتبات‬Iron python‫برمجية‬ ‫تزال‬ ‫ما‬
‫تب‬‫ك‬ ‫لذي‬‫ا‬ ،‫جونن‬‫هو‬ ‫ِم‬‫ج‬ .‫يا‬‫حال‬ ‫يب‬‫للتجر‬ ‫سوى‬ ‫صلح‬‫ت‬ ‫ول‬ "‫فا‬‫أل‬ ‫بل‬‫"ق‬IronPython‫ضم‬‫ان‬
‫من‬ ‫كاملة‬ ‫إصدارة‬ ‫على‬ ‫وسيعمل‬ ،‫ميكروسوفت‬ ‫شركة‬ ‫إلى‬IronPython.‫المستقبل‬ ‫في‬
‫للفهرس‬ ‫عودة‬‫المزيد‬ ‫استكشف‬|132
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Lython) ‫المشهتركة‬ ‫ليسهب‬ ‫تشهبه‬ ‫وههي‬ .‫بيثهون‬ ‫للغهة‬ ‫ليسهب‬ ‫واجههة‬ ‫ههو‬Common Lisp(
‫لى‬‫إ‬ ‫شرة‬‫مبا‬ ‫وتترجم‬bytecode‫بيثون‬ ‫كود‬ ‫مع‬ ‫عل‬‫تتفا‬ ‫سوف‬ ‫ها‬‫أن‬ ‫ني‬‫يع‬ ‫لذي‬‫ا‬ ‫لمر‬‫ا‬ ،‫ثون‬‫بي‬
.‫المعتاد‬
‫منهها‬ ‫المهمهة‬ .‫بيثهون‬ ‫عهن‬ ‫المهوارد‬ ‫مهن‬ ‫والكهثير‬ ‫الكهثير‬ ‫هنهاك‬Daily Python-URL!‫الهذي‬
،‫الحهداث‬ ‫بهآخر‬ ‫دائم‬ ‫اطلع‬ ‫علهى‬ ‫يجعلهك‬Vaults of Parnassus‫و‬ ،ONLamp. com
Python DevCenter‫و‬ ،dirtSimple.org‫و‬ ،Python Notes.‫الكثير‬ ‫وغيرها‬
‫الخلصــة‬
‫يقولون‬ ‫كما‬ ،‫ولكن‬ ‫الكتاب‬ ‫هذا‬ ‫نهاية‬ ‫إلى‬ ‫وصلنا‬ ‫لقد‬‫النهاية‬ ‫بداية‬ ‫هذه‬‫مستخدما‬ ‫تعتبر‬ ‫اﻵن‬ ‫أنت‬ .
‫البدء‬ ‫يمكنك‬ .‫بيثون‬ ‫باستخدام‬ ‫المشاكل‬ ‫من‬ ‫العديد‬ ‫لحل‬ ‫مستعد‬ ‫شك‬ ‫بل‬ ‫وأنت‬ ،‫لبيثون‬ ‫نهِما‬
‫بة‬‫كتا‬ ‫أو‬ ،‫ها‬‫تخيل‬ ‫كن‬‫يم‬ ‫ل‬ ‫مورا‬‫أ‬ ‫ضي‬‫الما‬ ‫في‬ ‫كانت‬ ‫لتي‬‫ا‬ ‫شياء‬‫ال‬ ‫كل‬‫ب‬ ‫يام‬‫للق‬ ‫هازك‬‫ج‬ ‫تة‬‫أتم‬ ‫في‬
.‫ابدأ‬ ‫ولذا‬ .‫الكثير‬ ‫والكثير‬ ‫الخاصة‬ ‫ألعابك‬
‫للفهرس‬ ‫عودة‬‫الخلصــة‬|133
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫م‬‫لحق‬A‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ .
) ‫المصهدر‬ ‫مفتوحهة‬ ‫الحهرة‬ ‫البرمجيهات‬Free/Libré and Open Source Software،
FLOSS‫وخاصهة‬ ‫المشهاركة‬ ‫مبهدأ‬ ‫علهى‬ ‫مبنيهة‬ ‫بهدورها‬ ‫وههي‬ ،‫الجماعهة‬ ‫مبهدأ‬ ‫علهى‬ ‫مبنيهة‬ (
.‫والتوزيع‬ ‫والتعديل‬ ،‫الستخدام‬ ‫حرة‬ ‫الحرة‬ ‫البرمجيات‬ .‫المعرفة‬ ‫في‬ ‫المشاركة‬
‫كنت‬ ‫أنك‬ ‫بما‬ ‫الحرة‬ ‫بالبرمجيات‬ ‫معرفة‬ ‫على‬ ‫فأنت‬ ،‫بالفعل‬ ‫الكتاب‬ ‫هذا‬ ‫قرأت‬ ‫قد‬ ‫كنت‬ ‫إذا‬
‫تستخدم‬‫بيثون‬.‫الوقت‬ ‫طوال‬
‫كرت‬‫ذ‬ ‫قد‬‫ل‬ .‫ية‬‫التال‬ ‫مة‬‫القائ‬ ‫شاف‬‫استك‬ ‫نك‬‫فيمك‬ ،‫حرة‬‫ال‬ ‫يات‬‫البرمج‬ ‫عن‬ ‫يد‬‫المز‬ ‫فة‬‫معر‬ ‫أردت‬ ‫إذا‬
‫و‬ ‫كس‬‫لين‬ ‫لى‬‫ع‬ ‫مل‬‫تع‬ ‫)أي‬ ‫صات‬‫المن‬ ‫عددة‬‫مت‬ ‫حرة‬ ‫يات‬‫برمج‬ ‫مع‬ ‫كبيرة‬‫ال‬ ‫حرة‬‫ال‬ ‫يات‬‫البرمج‬ ‫عض‬‫ب‬
‫لينكهس‬ ‫إلهى‬ ‫للنتقهال‬ ‫الحاجهة‬ ‫دون‬ ‫البرمجيهات‬ ‫ههذه‬ ‫اسهتخدام‬ ‫تجربهة‬ ‫ليمكنهك‬ ( .‫إلهخ‬ ‫وينهدوز‬
‫مباشرة‬(-; ‫آجل‬ ‫أم‬ ‫عاجل‬ ‫ستفعل‬ ‫كنت‬ ‫وإن‬
‫كس‬‫لين‬‫لينوس‬ ‫بدأه‬ ‫قد‬ ‫كان‬ ، ‫ببطء‬ ‫العالم‬ ‫كل‬ ‫يحتضنه‬ ‫المصدر‬ ‫ومفتوح‬ ‫حر‬ ‫تشغيل‬ ‫نظام‬ ‫.هو‬
‫نواة‬ ‫آخر‬ ‫وتعد‬ .‫ويندوز‬ ‫مايكروسوفت‬ ‫لنظام‬ ‫منافس‬ ‫هو‬ ‫فإنه‬ ، ‫واﻵن‬ .‫كطالب‬ ‫تورفالدز‬2.6
] .‫للتطوير‬ ‫,قابلة‬ ‫والستقرار‬ ‫بالسرعة‬ ‫تتمتع‬ ‫رئيسية‬ ‫إصدارة‬Linux Kernel[
‫نوبكس‬‫قرص‬‫ال‬ ‫لى‬‫ع‬ ‫ثبيت‬‫الت‬ ‫لب‬‫تتط‬ ‫ول‬ ‫مج‬‫المد‬ ‫قرص‬‫ال‬ ‫خلل‬ ‫من‬ ‫مل‬‫تع‬ ‫كس‬‫لين‬ ‫عة‬‫توزي‬ ‫هذه‬.
‫باستخدام‬ ‫والبدء‬ ‫المشغل‬ ‫في‬ ‫السطوانة‬ ‫وضع‬ ‫ثم‬ ‫حاسبك‬ ‫تشغيل‬ ‫إعادة‬ ‫فقط‬ ‫يمكنك‬ -- ‫الصلب‬
‫مع‬ ‫تأتي‬ ‫التي‬ ‫المصدر‬ ‫مفتوحة‬ ‫البرامج‬ ‫جميع‬ ‫استخدام‬ ‫ويمكنك‬ !‫لينكس‬ ‫توزيعة‬ ‫مميزات‬ ‫جميع‬
)‫تصريف‬ ‫وعمل‬ ، ‫بيثون‬ ‫برامج‬ ‫تشغيل‬ ‫مثل‬ ‫القياسية‬ ‫لينكس‬ ‫توزيعة‬compiling‫سي‬ ‫لبرامج‬ (
‫السطوانة‬ ‫وإخراج‬ ‫حاسبك‬ ‫تشغيل‬ ‫إعادة‬ ‫يمكنك‬ ‫ذلك‬ ‫وبعد‬ ، ‫ذلك‬ ‫وغير‬ ، ‫الفلم‬ ‫ومشاهدة‬ ،
].‫يحدث‬ ‫لم‬ ‫وكأنشيئا‬ ، ‫بك‬ ‫الخاص‬ ‫الحالي‬ ‫التشغيل‬ ‫نظام‬ ‫لستخدام‬ ‫والعودة‬Knoppix[
‫يدورا‬ ‫ف‬.‫أكهثر‬ ‫مهن‬ ‫وههي‬ ‫ههات‬ ‫رد‬ ‫قبهل‬ ‫مهن‬ ‫ورعايتهها‬ ‫توجيههها‬ ‫يتهم‬ ‫ومجتمهع‬ ‫توزيعهة‬ ‫تلهك‬
‫وجنوم‬ ، ‫كيدي‬ ‫مكتب‬ ‫،وأسطح‬ ‫لينكس‬ ‫نواة‬ ‫على‬ ‫تحتوي‬ ‫وهي‬ ‫شعبية‬ .‫لينكس‬ ‫توزيعات‬XFCE
‫وسهلة‬ ‫الستعمال‬ ‫سهلة‬ ‫صورة‬ ‫في‬ ‫هذا‬ ‫وكل‬ ‫المتاحة‬ ‫المصدر‬ ‫مفتوحة‬ ‫البرامج‬ ‫من‬ ‫كبير‬ ‫وعدد‬
‫لينكس‬ ‫استخدام‬ ‫تجرب‬ ‫بأن‬ ‫بشدة‬ ‫أوصيك‬ ‫فإني‬ ‫لينكس‬ ‫استخدام‬ ‫في‬ ‫مبتدئا‬ ‫كنت‬ ‫التركيب.وإذا‬
‫مانهدريك‬ ‫منهها‬ ‫إصهدارة‬ ‫وأحهدث‬ ‫مانهدريك‬10٫1] ‫رائعهة‬ ‫توزيعهة‬ ‫وههي‬Fedora Linux,
Mandrake Linux[
‫بن‬ ‫أو‬‫يس‬ ‫أوف‬.‫برنامهج‬ ‫علهى‬ ‫ائم‬‫ه‬‫ق‬ ‫از‬‫ه‬‫ممت‬ ‫مكتهبي‬ ‫برنامهج‬ ‫ههذا‬StarOffice‫صهن‬ ‫شهركة‬ ‫مهن‬
‫ويمكنه‬ . ‫أخرى‬ ‫وأمور‬ ‫والشرائح‬ ‫والجداول‬ ‫والرسم‬ ‫للكتابة‬ ‫برامج‬ ‫على‬ ‫ويحتوي‬ ‫ميكروسيستمز‬
‫كهل‬ ‫علهى‬ ‫تعمهل‬ ‫وههي‬ ‫بسههولة‬ ‫بهوينت‬ ‫وبهاور‬ ‫وورد‬ ‫ميكروسهوفت‬ ‫ملفهات‬ ‫وتحريهر‬ ‫فتهح‬ ‫أيضها‬
]‫هة‬‫ه‬‫الجذري‬ ‫هينات‬‫ه‬‫التحس‬ ‫هض‬‫ه‬‫بع‬ ‫هى‬‫ه‬‫عل‬ ‫هوي‬‫ه‬‫يحت‬ ‫هس‬‫ه‬‫أوفي‬ ‫هن‬‫ه‬‫أوب‬ ‫هن‬‫ه‬‫م‬ ‫هادم‬‫ه‬‫الق‬ ‫هدار‬‫ه‬‫والص‬ ‫هات‬‫ه‬‫المنص‬
‫للفهرس‬ ‫عودة‬‫ملحق‬A.‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬
‫المصدر‬|134
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
OpenOffice[
‫فايرفوكس‬‫موزيل‬.‫إنترنت‬ ‫على‬ ‫تغلبه‬ ‫يتوقع‬ ‫الذي‬ ‫الويب‬ ‫متصفح‬ ‫من‬ ‫القادم‬ ‫الجيل‬ ‫هو‬ ‫هذا‬
‫السرعة‬ ‫غاية‬ ‫في‬ ‫ومن‬ .‫قليلة‬ ‫سنوات‬ ‫غضون‬ ‫في‬ (-‫؛‬ ‫فقط‬ ‫السوقية‬ ‫الحصة‬ ‫حيث‬ ‫)من‬ ‫اكسبلورر‬
‫نوع‬ ‫بأي‬ ‫يسمح‬ ‫مفهوم‬ ‫تمديد‬ .‫للعجاب‬ ‫والمثيرة‬ ‫المعتبرة‬ ‫لخصائصه‬ ‫النقاد‬ ‫من‬ ‫الشادة‬ ‫نال‬ ‫وقد‬
‫اليها‬ ‫تضاف‬ ‫ان‬ ‫يمكن‬ ‫التي‬ ‫الوظائف‬ ‫من‬‫أي‬ ‫بإضافة‬ ‫تسمح‬ ‫الضافات‬ ‫من‬ ‫العديد‬ ‫إليه‬ ‫أضيفت‬ ‫وقد‬
‫يجعهل‬ ‫ممتهاز‬ ‫إلكهتروني‬ ‫بريهد‬ ‫عميهل‬ (‫)ثنهدربيرد‬ ‫لهه‬ ‫المصهاحب‬ ‫إليهه.والمنتهج‬ ‫الوظهائف‬ ‫مهن‬ ‫نهوع‬
] . ‫السرعة‬ ‫في‬ ‫غاية‬ ‫أمرا‬ ‫البريد‬ ‫قراءة‬Mozilla Firefox, Mozilla Thunderbird[
‫نو‬ ‫مو‬.‫إنشاء‬ ‫تتيح‬ ‫وهي‬ . ‫نت‬ .‫مايكروسوفت‬ ‫منصة‬ ‫برامج‬ ‫لتشغيل‬ ‫المصدر‬ ‫مفتوح‬ ‫تطبيق‬ ‫هذا‬
، ‫وينهدوز‬ ، ‫لينكهس‬ ‫بيئة‬ ‫فهي‬ ‫للعمهل‬ ‫نهت‬ ‫دوت‬ ‫تطبيقهات‬ ‫وتشهغيل‬FreeBSD‫مهاكنتوش‬ ‫و‬ ،
‫معايير‬ ‫لتنفذ‬ .‫ضا‬‫أي‬ ‫الخرى‬ ‫المنصات‬ ‫من‬ ‫وغيرها‬ECMA‫الوامر‬ ‫سطر‬ ‫هة‬‫لواج‬CLI‫ولغة‬
‫مفتوحة‬ ‫اﻵن‬ ‫وأصبحت‬ ‫موحدة‬ ‫كمعايير‬ ‫بي‬ ‫وإتش‬ ، ‫وإنتل‬ ، ‫مايكروسوفت‬ ‫اعتمدتها‬ ‫التي‬ #‫سي‬
‫معايير‬ ‫توحيد‬ ‫اتجاه‬ ‫في‬ ‫خطوة‬ ‫وهذه‬ .‫المعايير‬ISO.‫نفسه‬ ‫الوقت‬ ‫في‬
‫برمجيهات‬ ‫يوجهد‬ ‫وحاليها‬C# mcs‫نفسهها(،ومهزودات‬ #‫سهي‬ ‫بلغهة‬ ‫)كتبهت‬ASP.NET‫و‬
ADO.NET‫تطويرها‬ ‫يتم‬ ‫التي‬ ‫المزايا‬ ‫من‬ ‫والعديد‬ ‫والعديد‬ ‫البيانات‬ ‫لقواعد‬ ،‫الخصائص‬ ‫كاملة‬
].‫يوم‬ ‫كل‬ ‫وإضافتها‬Mono, ECMA, Microsoft .NET[
‫شي‬‫أبات‬ ‫لويب‬‫ا‬ ‫خادم‬.‫أشهر‬ ‫هو‬ ‫الواقع‬ ‫وفي‬ ‫شعبية‬ ‫المصدر‬ ‫مفتوحة‬ ‫الويب‬ ‫خوادم‬ ‫أكثر‬ ‫هو‬
‫من‬ ‫قريب‬ ‫عليه‬ ‫يعمل‬ ‫إنه‬ ‫حيث‬ !‫العالم‬ ‫في‬ ‫ويب‬ ‫خادم‬60‫هذه‬ ‫نعم‬ . ‫اللكترونية‬ ‫المواقع‬ ‫من‬ %
‫ادم‬‫ه‬‫خ‬ ‫فيههم‬ ‫ا‬‫ه‬‫بم‬ ‫المنافسهين‬ ‫مهن‬ ‫بكهثير‬ ‫أكهثر‬ ‫إلكترونيهة‬ ‫مواقهع‬ ‫مهع‬ ‫أباتشهي‬ ‫يتعامهل‬ ‫حيهث‬ ‫حقيقهة‬
] .‫ميكروسوفت‬Apache[
MySQL.‫في‬ ‫غاية‬ ‫وهو‬ ، ‫المصدر‬ ‫مفتوح‬ ‫البيانات‬ ‫قواعد‬ ‫خوادم‬ ‫أشهر‬ ‫من‬ ‫واحد‬ ‫هو‬
] .‫إصداراته‬ ‫أحدث‬ ‫إلى‬ ‫المزايا‬ ‫من‬ ‫العديد‬ ‫إضافة‬ ‫تم‬ ‫السرعةوقد‬MySQL[
‫بلير‬ ‫إم‬‫ب‬ ‫بدءا‬ ‫شيء‬ ‫أي‬ ‫تشغيل‬ ‫يمكنه‬ ‫فيديو‬ ‫مشغل‬ ‫هو‬DivX‫و‬MP3‫و‬Ogg‫و‬VCD
‫وحتى‬DVDs] (‫الفكاهة؟‬ ‫بروح‬ ‫تتمتع‬ ‫ل‬ ‫المفتوحة‬ ‫المصادر‬ ‫إن‬ ‫يقول‬ ‫ذا‬ ‫)من‬MPlayer[
Movix‫المدمهج‬ ‫القهرص‬ ‫خلل‬ ‫مهن‬ ‫وتعمهل‬ ‫كنهوبكس‬ ‫توزيعهة‬ ‫علهى‬ ‫تقهوم‬ ‫لينكهس‬ ‫توزيعهة‬ ‫ههي‬ .
،‫موفيكس‬ ‫إسطوانات‬ ‫عمل‬ ‫ويمكنك‬ . ‫القلع‬ ‫ذاتية‬ ‫الفلم‬ ‫إسطوانات‬ ‫لتشغيل‬ ‫تصميمها‬ ‫تم‬ ‫ولكن‬
‫القهرص‬ ‫وتضهع‬ ‫الحاسهب‬ ‫تشهغيل‬ ‫بإعهادة‬ ‫تقهوم‬ ‫فعنهدما‬ ‫التشهغيل‬ ‫ذاتيهة‬ ‫أفلم‬ ‫إسهطوانات‬ ‫إل‬ ‫ههي‬ ‫ا‬‫ه‬‫وم‬
‫صلب‬ ‫قرص‬‫ل‬ ‫حتى‬ ‫تاج‬‫تح‬ ‫ل‬ ‫نت‬‫وأ‬ ،‫يا‬‫ذات‬ ‫لم‬‫الفي‬ ‫شغل‬‫ت‬ ‫بدأ‬‫ي‬ ‫عدها‬‫وب‬ ‫لقراص‬‫ا‬ ‫شغل‬‫م‬ ‫في‬ ‫مج‬‫المد‬
] .‫موفيكس‬ ‫باستخدام‬ ‫الفيلم‬ ‫لمشاهدة‬Movix[
‫المفتوحهة‬ ‫البرمهج‬ ‫مهن‬ ‫العديهد‬ ‫وهنهاك‬ ،‫مهوجزة‬ ‫فكهرة‬ ‫إعطهائك‬ ‫إلهى‬ ‫فقهط‬ ‫تههدف‬ ‫القائمهة‬ ‫ههذه‬
‫للمواقع‬ ‫المحتوي‬ ‫إدارة‬ ‫نظام‬ ‫و‬ ،‫بي‬ ‫إتش‬ ‫بي‬ ‫ولغة‬ ،‫بيرل‬ ‫لغة‬ ‫مثل‬ ،‫ذلك‬ ‫غير‬ ‫الممتازة‬ ‫المصدر‬
‫للفهرس‬ ‫عودة‬‫ملحق‬A.‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬
‫المصدر‬|135
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
Drupal‫هات‬‫ه‬‫بيان‬ ‫هد‬‫ه‬‫قواع‬ ‫هادم‬‫ه‬‫وخ‬ ،PostgreSQL‫هيارات‬‫ه‬‫الس‬ ‫هباق‬‫ه‬‫س‬ ‫هة‬‫ه‬‫،ولعب‬TORCS‫وبيئة‬ ،
‫المتكاملة‬ ‫التطوير‬Kdevelop‫،و‬Anjuta‫الفلم‬ ‫ومشغل‬ ،Xine‫النصوص‬ ‫ومحرر‬ ،VIM‫و‬
Quanta‫الصوتيات‬ ‫ومشغل‬ ،+XMMS‫قدما‬ ‫المضي‬ ‫ويمكننا‬ ،‫جيمب‬ ‫الصور‬ ‫تحرير‬ ‫وبرنامج‬ ،
‫نهاية‬ ‫ل‬ ‫ما‬ ‫إلى‬
:‫الحرة‬ ‫البرمجيات‬ ‫عن‬ ‫المعلومات‬ ‫من‬ ‫لمزيد‬ ‫المواقع‬ ‫هذه‬ ‫زر‬
‫فورج‬ ‫سورس‬
FreshMeat
‫كدي‬
‫جنوم‬
:‫المواقع‬ ‫هذه‬ ‫طالع‬ ،‫الحرة‬ ‫البرمجيات‬ ‫عالم‬ ‫أخبار‬ ‫آخر‬ ‫لتعرف‬
OSNews
LinuxToday
NewsForge
.‫ه‬ .‫س‬ ‫سوارو‬ ‫مدونة‬‫پ‬
.‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫للبرمجيات‬ ‫الواسع‬ ‫العالم‬ ‫واستكشف‬ ‫اذهب‬ ،‫واﻵن‬
‫للفهرس‬ ‫عودة‬‫ملحق‬A.‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬
‫المصدر‬|136
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫ملحق‬B.ْ‫عن‬
‫المحتويات‬ ‫قائمة‬
‫الطبع‬ ‫بيانات‬
‫المؤلف‬ ‫عن‬
‫الطبع‬ ‫بيانات‬
‫المصدر‬ ‫ومفتوحة‬ ‫حرة‬ ‫الكتاب‬ ‫هذا‬ ‫لبناء‬ ‫استخدمتها‬ ‫التي‬ ‫البرمجيات‬ ‫كل‬ ‫تقريبا‬.‫مسودة‬ ‫أول‬ ‫في‬
‫لينكس‬ ‫ردهات‬ ‫استخدمت‬ ‫الكتاب‬ ‫من‬9.0‫السادسة‬ ‫المسودة‬ ‫هذه‬ ‫في‬ ‫واﻵن‬ ،‫العمل‬ ‫لبيئة‬ ‫كقاعدة‬
‫كور‬ ‫فيدورا‬ ‫لينكس‬ ‫أستخدم‬3‫كأساس‬.
‫استخدم‬ ‫البداية‬ ‫في‬KWord‫الكتاب‬ ‫لكتابة‬)‫في‬ ‫وضحت‬ ‫كما‬‫التاريخ‬ ‫درس‬‫التمهيد‬ ‫في‬.(‫لحقا‬
‫إلى‬ ‫تحولت‬DocBook XML‫مستخدما‬Kate‫إلى‬ ‫انتقلت‬ ‫لذا‬ ،‫كبيرة‬ ‫مشقة‬ ‫وجدتها‬ ‫لكن‬
‫ملفات‬ ‫وتوليد‬ ‫للتنسيق‬ ‫يوفره‬ ‫الذي‬ ‫التحكم‬ ‫مستوى‬ ‫بفضل‬ ‫رائعا‬ ‫كان‬ ‫والذي‬ ‫أوفيس‬ ‫أوبن‬PDF،
‫أنتج‬ ‫لكنه‬HTML‫المستند‬ ‫من‬ ‫جدا‬ ‫سيء‬.‫اكتشفت‬ ‫النهاية‬ ‫في‬XEmacs‫كتابة‬ ‫وأعدت‬
‫مستخدما‬ ‫الصفر‬ ‫من‬ ‫الكتاب‬DocBook XML)‫الثانية‬ ‫للمرة‬(‫التنسيق‬ ‫هذا‬ ‫أن‬ ‫قررت‬ ‫أن‬ ‫بعد‬
‫المدى‬ ‫بعيد‬ ‫حل‬ ‫هو‬.‫استخدام‬ ‫قررت‬ ‫الجديدة‬ ‫السادسة‬ ‫المسودة‬ ‫هذه‬ ‫في‬Quanta+‫بكل‬ ‫للقيام‬
‫التحرير‬.
‫كور‬ ‫فيدورا‬ ‫مع‬ ‫تأتي‬ ‫التي‬ ‫القياسية‬ ‫الطرز‬ ‫صفحات‬ ‫تستخدم‬3.‫الخطوط‬ ‫تستخدم‬ ‫كما‬
‫أيضا‬ ‫القياسية‬.‫مستند‬ ‫كتبت‬ ‫فقد‬ ،‫هذا‬ ‫مع‬CSS‫صفحات‬ ‫وتنسيق‬ ‫لتلوين‬HTML.‫كما‬
‫بدائي‬ ‫نحوي‬ ‫محلل‬ ‫كتبت‬-‫طبعا‬ ‫بيثون‬ ‫بلغة‬-‫البرامج‬ ‫نماذج‬ ‫كل‬ ‫في‬ ‫آليا‬ ‫التراكيب‬ ‫لبراز‬.
‫المؤلف‬ ‫عن‬
‫اهتماماته‬ .‫الهند‬ ‫في‬ ‫بنجالور‬ ‫بمكتب‬ !‫ياهو‬ ‫في‬ ‫برمجيات‬ ‫كمطور‬ ‫عمله‬ .‫ه‬ .‫س‬ ‫سوارو‬ ‫يحب‬‫پ‬
‫و‬ ‫دوتجنو‬ ،‫لينكس‬ ‫مثل‬ ‫الحرة‬ ‫البرمجيات‬ ‫تشمل‬ ‫التقني‬ ‫المجال‬ ‫في‬Qt‫و‬MySQL‫واللغات‬ ،
‫في‬ ‫إنشائها‬ ‫يستطيع‬ ‫برمجية‬ ‫وأي‬ ‫الكتاب‬ ‫هذا‬ ‫مثل‬ ‫أشياء‬ ‫وكتابة‬ ،#‫سي‬ ‫و‬ ‫بيثون‬ ‫مثل‬ ‫الرائعة‬
،‫لودلم‬ ‫روبرت‬ ‫روايات‬ ‫وقرائة‬ ،‫القهوة‬ ‫تشمل‬ ‫الخرى‬ ‫اهتماماه‬ .‫مدونته‬ ‫في‬ ‫والكتابة‬ ،‫فراغه‬ ‫وقت‬
.‫والسياسة‬ ‫والرحلت‬
‫مدونته‬ ‫في‬ ‫فانظر‬ ،‫الرجل‬ ‫هذا‬ ‫عن‬ ‫المزيد‬ ‫بمعرفة‬ ‫تهتم‬ ‫كنت‬ ‫إذا‬www.swaroopch.info.
‫للفهرس‬ ‫عودة‬‫المؤلف‬ ‫عن‬|137
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
‫ملحق‬C.‫المراجعة‬ ‫تأريخ‬
‫المحتويات‬ ‫قائمة‬
‫الزمني‬ ‫الختم‬
‫الزمني‬ ‫الختم‬
‫في‬ ‫المستند‬ ‫هذا‬ ‫وُلِّد‬13‫يناير‬2005‫الساعة‬04:43
‫المراجعة‬ ‫تاريخ‬
‫مراجعة‬1.2013/01/2005
‫باستخدام‬ ‫شاملة‬ ‫كتابة‬ ‫إعادة‬Quanta‫فيدورا‬ ‫على‬ +3‫التصحيحات‬ ‫من‬ ‫الكثير‬ ‫إلى‬ ‫بالضافة‬
‫بيئة‬ ‫كتابة‬ ‫إعادة‬ .‫الجديدة‬ ‫المثلة‬ ‫من‬ ‫الكثير‬ .‫والتحديثات‬DocBook.‫البداية‬ ‫من‬ ‫الخاصة‬
‫مراجعة‬1.1528/03/2004
‫طفيفة‬ ‫مراجعات‬
‫مراجعة‬1.1216/03/2004
‫وتصحيحات‬ ‫إضافات‬
‫مراجعة‬1.1009/03/2004
.‫والمخلصين‬ ‫المتحمسين‬ ‫القراء‬ ‫من‬ ‫الكثير‬ ‫بفضل‬ ،‫الملئية‬ ‫الخطاء‬ ‫تصحيح‬ ‫من‬ ‫المزيد‬
‫مراجعة‬1.0008/03/2004
‫تصحيح‬ ‫مع‬ ‫المحتوى‬ ‫على‬ ‫كبيرة‬ ‫بمراجعات‬ ‫قمت‬ ،‫القراء‬ ‫من‬ ‫الكثيرة‬ ‫والقتراحات‬ ‫للمردود‬ ‫كنتيجة‬
.‫الملئية‬ ‫للخطاء‬
‫مراجعة‬0.9922/02/2004
.‫للدوال‬ ‫المتغير‬ ‫المعاملت‬ ‫عدد‬ ‫عن‬ ‫تفاصيل‬ ‫إضافة‬ .‫الوحدات‬ ‫عن‬ ‫جديد‬ ‫فصل‬ ‫إضافة‬
‫مراجعة‬0.9816/02/2004
‫طرز‬ ‫صفحات‬ ‫و‬ ‫بيثون‬ ‫مخطوط‬ ‫كتبت‬CSS‫ناتج‬ ‫لتحسين‬XHTML‫بدائي‬ ‫نحوي‬ ‫محلل‬ ‫شامل‬ ،
‫طريقة‬ ‫على‬ ‫البرامج‬ ‫نماذج‬ ‫في‬ ‫للتراكيب‬ ‫بإبراز‬ ‫للقيام‬ -‫يعمل‬ ‫-لكن‬VIM.
‫مراجعة‬0.9713/02/2004
‫بتنسيق‬ ،‫بالكامل‬ ‫كتابتها‬ ‫معاد‬ ‫جديدة‬ ‫مسودة‬DocBook XML‫أصبح‬ ،‫كثيرا‬ ‫الكتاب‬ ‫تحسن‬ .(‫)ثانيا‬
.‫ومقروئية‬ ‫تناسقا‬ ‫أكثر‬
‫مراجعة‬0.9325/01/2004
‫عن‬ ‫الحديث‬ ‫إضافة‬IDLE‫بويندوز‬ ‫الخاصة‬ ‫المسائل‬ ‫من‬ ‫المزيد‬ ‫مع‬
‫مراجعة‬0.9205/01/2004
‫للفهرس‬ ‫عودة‬‫ملحق‬C.‫المراجعة‬ ‫تأريخ‬|138
‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬
.‫المثلة‬ ‫بعض‬ ‫على‬ ‫تعديلت‬
‫مراجعة‬0.9130/12/2003
.‫مرتجلة‬ ‫عديدة‬ ‫مواضيع‬ .‫الملئية‬ ‫الخطاء‬ ‫بعض‬ ‫تصحيح‬
‫مراجعة‬0.9018/12/2003
.‫مراجعات‬ ‫مع‬ ‫أوفيس‬ ‫أوبن‬ ‫تنسيق‬ .‫جديدين‬ ‫فصلين‬ ‫إضافة‬
‫مراجعة‬0.6021/11/2003
.‫توسع‬ ‫مع‬ ‫بالكامل‬ ‫كتابة‬ ‫إعادة‬
‫مراجعة‬0.2020/11/2003
.‫الملئية‬ ‫الخطاء‬ ‫بعض‬ ‫تصحيح‬
‫مراجعة‬0.1520/11/2003
‫إلى‬ ‫التحويل‬DocBook XML.
‫مراجعة‬0.1014/11/2003
‫باستخدام‬ ‫الولى‬ ‫المسودة‬KWord.
‫الصالحات‬ ‫تتم‬ ‫بنعمته‬ ‫الذي‬ ‫ل‬ ‫الحمد‬
‫الحد‬ ‫يوم‬ ‫ضحى‬ ‫في‬ ‫الكتاب‬ ‫هذا‬ ‫مراجعة‬ ‫من‬ ‫النتهاء‬ ‫تم‬21‫الخرة‬ ‫جمادى‬ ‫من‬
1430‫الموافق‬ ‫ه‬14‫يونيو‬ ‫من‬2009‫م‬
‫خلف‬ ‫علي‬ ‫أشرف‬ : ‫ترجمه‬
‫مصر‬ – ‫السكندرية‬
ashrafkhalaf@gmail.com
sharaf969@yahoo.com
‫للفهرس‬ ‫عودة‬‫ملحق‬C.‫المراجعة‬ ‫تأريخ‬|139

Byt of ByteofPython arabic

  • 1.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫بيثون‬ ‫طريق‬ ‫على‬ ‫خطوة‬ ‫خلف‬ ‫علي‬ ‫أشرف‬ : ‫ترجمــه‬ ‫حسني‬ ‫خالد‬ : ‫راجعه‬ Byte of Python Swaroop C H ‫للفهرس‬ ‫عودة‬|
  • 2.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الصدارة‬1.20 © ‫النشر‬ ‫حقوق‬2003-2005.‫ه‬ .‫س‬ ‫سوارو‬‫پ‬ ‫التجارية‬ ‫غير‬ ‫العامة‬ ‫البداع‬ ‫رخصة‬ ‫بموجب‬ ‫الكتاب‬ ‫هذا‬ ‫يصدر‬ ‫بالمثل‬ ‫المشاركة‬2.0. ‫ملخص‬ ‫كنت‬ ‫سواء‬ ،‫بيثون‬ ‫البرمجة‬ ‫لغة‬ ‫تعلم‬ ‫على‬ ‫الكتاب‬ ‫هذا‬ ‫سيساعدك‬ .‫متمرسا‬ ‫مبرمجا‬ ‫أو‬ ‫الحواسيب‬ ‫على‬ ‫جديدا‬ ‫للفهرس‬ ‫عودة‬|1
  • 3.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫المحتويات‬ ‫قائمة‬ ‫تمهيد‬ .............................................................................. ‫الكتاب؟‬ ‫هذا‬ ‫لمن‬09 ................................................................................ ‫الكتاب‬ ‫تاريخ‬10 ‫حالة‬.................................................................................. ‫الكتاب‬10 .............................................................................. ‫الرسمي‬ ‫الموقع‬10 ‫الترخيص‬ ‫بنود‬.................. ...........................................................11 ....................................................................................‫القتراحات‬11 ‫فيه‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬‫ا‬....................................................................11 1‫مقدمــة‬ . ‫مقدمة‬.....................................................................................12 ............................................................................. ‫بيثون‬ ‫مميزات‬12 ‫الخلصة‬......................................................................................15 .......................................................................... ‫بيرل؟‬ ‫ليس‬ ‫لماذا‬15 ..................................................................... ‫المبرمجون‬ ‫يقول‬ ‫ماذا‬16 2‫بايثون‬ ‫ثبيت‬ . .............................................................. ‫لينكس/بيإسدي‬ ‫لمستخدمي‬17 ‫لمستخدمي‬.........................................................................‫ويندوز‬18 ..................................................................................... ‫الخلصة‬18 3‫الولى‬ ‫الخطوات‬ . ...................................................................................... ‫مقدمة‬19 ........................................................................... ‫المحث‬ ‫استخدام‬20 ............................................................................ ‫محرر‬ ‫اختيار‬21 .................................................................... ‫مصدري‬ ‫ملف‬ ‫استخدام‬21 ..................................................................................... ‫الخرْج‬21 ............................................................................... ‫يعمل‬ ‫كيف‬22 .................................................................... ‫تنفيذية‬ ‫بيثون‬ ‫برامج‬22 ................................................................. ‫المساعدة‬ ‫على‬ ‫الحصول‬24 ................................................................................. ‫الخلصة‬24 4‫الساسيات‬ . .......................................................................... ‫الحرفية‬ ‫الثوابت‬25 ‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|2
  • 4.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ...................................................................................... ‫العداد‬26 .................................................................................... ‫السلسل‬28 .................................................................................. ‫المتغيرات‬28 ............................................................................. ‫المعرف‬ ‫تسمية‬29 .............................................................................. ‫البيانات‬ ‫أنواع‬29 .................................................................................... ‫الكائنات‬29 ................................................................................... ‫الخرْج‬30 ................................................................................ ‫يعمل‬ ‫كيف‬30 ............................................................... ‫والمنطقية‬ ‫المادية‬ ‫السطور‬31 .................................................................................... ‫الزاحة‬33 .................................................................................... ‫الخلصة‬33 5‫والتعبيرات‬ ‫العوامل‬ . ‫مقدمة‬.......................................................................................34 ..................................................................................... ‫العوامل‬34 ............................................................................. ‫العوامل‬ ‫أسبقية‬36 ............................................................................ ‫الحساب‬ ‫ترتيب‬38 ................................................................................. ‫الرتباطية‬38 .................................................................................. ‫التعبيرات‬38 ........................................................................ ‫التعبيرات‬ ‫استخدام‬38 ................................................................................... ‫الخلصة‬39 6‫التدفق‬ ‫في‬ ‫التحكم‬ . ..................................................................................... ‫مقدمة‬40 43 ...........................................................................if ‫إفادة‬ ‫استخدام‬ ................................................................................ ‫يعمل‬ ‫كيف‬42 43 ............................................................................while ‫إفادة‬ 43..................................................................... while ‫إفادة‬ ‫استخدام‬ 45 ............................................................................... for ‫الحلقة‬ 45 ............................................................................ for ‫استخدام‬ 47 ........................................................................... break ‫الفادة‬ 47 ........................................................................ break ‫استخدام‬ 48 ........................................................................continue ‫الفادة‬ 48 .............................................................continue ‫الفادة‬ ‫استخدام‬ .................................................................................. ‫الخلصة‬49 ‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|3
  • 5.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ 7‫الدوال‬ . ..................................................................................... ‫مقدمة‬50 ............................................................................... ‫دالة‬ ‫تعريف‬50 ........................................................................... ‫الدالة‬ ‫معاملت‬51 .................................................................. ‫الدالة‬ ‫معاملت‬ ‫استخدام‬50 ........................................................................ ‫المحلية‬ ‫المتغيرات‬52 .............................................................. ‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬52 53 ................................................................. global ‫اللادة‬ ‫استخدام‬ ................................................................. ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬54 ....................................................... ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬55 ............................................................... ‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬56 ‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬56 57........................................................................... return ‫الفادة‬ 57 ................................................................. return ‫إفادة‬ ‫استخدام‬ .............................................................................. ‫التوثيق‬ ‫جمل‬58 .................................................................... ‫التوثيق‬ ‫جمل‬ ‫استخدام‬58 ................................................................................... ‫الخلصة‬59 8‫الوحدات‬ . ..................................................................................... ‫مقدمة‬59 60 .................................................................... sys ‫الوحدة‬ ‫استخدام‬ 62 ............................................................ pyc ‫المصرفة‬ ‫البيتات‬ ‫ملفات‬ 63 ...................................................... ........from .. import ‫الفادة‬ __ ‫خاصية‬name........................................................... ‫للوحدة‬ __63 __ ‫استخدام‬name.......................................................... ‫الوحدة‬ __63 .................................................................. ‫الخاصة‬ ‫وحداتك‬ ‫عمل‬64 ................................................................. ‫الخاصة‬ ‫وحداتك‬ ‫إنشاء‬64 65 ............................................................................... dir() ‫الدالة‬ 65 ................................ .................................. dir() ‫الدالة‬ ‫استخدام‬ ................................................................................ ‫الخلصة‬66 9‫البيانات‬ ‫هياكل‬ . ................................................................................... ‫مقدمة‬67 ................................................................................... ‫القائمة‬68 ..................................................... ‫والفئات‬ ‫الكائنات‬ ‫إلى‬ ‫سريعه‬ ‫مقدمة‬68 ......................................................................... ‫القوائم‬ ‫استخدام‬68 ‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|4
  • 6.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ................................................................................... ‫الصف‬70 ...................................................................... ‫الصفوف‬ ‫استخدام‬70 72......................................... ....................... print ‫وإفادة‬ ‫الصفوف‬ ................................................................................. ‫القاموس‬73 ...................................................................... ‫القاموس‬ ‫استخدام‬73 ............................................................................. ‫المتسلسلت‬76 .................................................................... ‫المتسلسلت‬ ‫استخدام‬76 ................................................................................. ‫الشارات‬78 ...................................................................... ‫والشارات‬ ‫الكائنات‬79 ............................................................ ‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬80 .................................................................. ‫النصية‬ ‫السلسل‬ ‫طرق‬80 ................................................................................. ‫الخلصة‬82 10‫بيثون‬ ‫سكربت‬ ‫كتابة‬ - ‫المشاكل‬ ‫حل‬ . ................................................................................. ‫المشكلة‬83 .................................................................................... ‫الحل‬84 .......................................................................... ‫الول‬ ‫الصدار‬84 ........................................................................ ‫الثاني‬ ‫الصدار‬87 .......................................................................... ‫الثالث‬ ‫الصدار‬89 .......................................................................... ‫الرابع‬ ‫الصدار‬91 .................................................................. ‫التحسينات‬ ‫من‬ ‫المزيد‬93 ‫تط‬ ‫عملية‬................................................................ ‫ويرالبرمجيات‬94 ................................................................................ ‫الخلصة‬95 11‫الموجهة‬ ‫الكائنية‬ ‫البرمجة‬ . ‫مقدمة‬.................................................................................96 ................................................................................... ‫الذات‬97 ................................................................................. ‫الفئات‬98 ‫إنشاء‬‫الفئة‬..........................................................................99 ‫طرق‬........................................................................ ‫الكائنات‬99 ‫استخدام‬‫طرق‬.............................................................. ‫الكائنات‬100 100 ......................................................................... init ‫طريقة‬ 100............................................................... init ‫طريقة‬ ‫استخدام‬ ‫والكائن‬ ‫الفئة‬ ‫متغيرات‬...............................................................101 ‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|5
  • 7.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫استخدام‬‫متغيرات‬‫الفئة‬.................................................... ‫والكائن‬101 .................................................................................. ‫التوارث‬106 ‫استخدام‬‫التوارث‬........................................................................106 ‫الخلصة‬.................................................................................108 12‫الدخل/الخرج‬ . ‫ال‬‫ملفات‬.................................................................................109 ‫الملف‬ ‫استخدام‬......................................................................109 110 ............................................................................... Pickle 110 ........................................................ Pickling ‫و‬ Unpickling ............. ‫الخلصة‬.................................................................112 13‫الستثناءات‬ . ‫الخطاء‬..............................................................................113 114....................................................................... Try..Except .................................................................... ‫الستثناءات‬ ‫معالجة‬114 ‫الستثناءات‬ ‫رفع‬..........................................................................115 ‫الستثناءات‬ ‫رفع‬ ‫كيفية‬..................................................................115 117 ..................................................................... Try ..Finally 117 ............................................................................ Finally ‫الخلصة‬...............................................................................118 14‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ . ................................................................................. ‫مقدمة‬119 119 .......................................................................... sys ‫الوحدة‬ ................................................................ ‫الوامر‬ ‫سطر‬ ‫معطيات‬119 122 .................................................................... sys ‫عن‬ ‫المزيد‬ 122 ............................................................................ os ‫الوحدة‬ .............................................................................. ‫الخلصة‬123 15‫بيثون‬ ‫من‬ ‫مزيد‬ . ........................................................................ ‫الخاصة‬ ‫الطرق‬124 ............................................................... ‫المفردة‬ ‫الفادات‬ ‫لبنات‬125 ............................................................ ‫المضمنة‬ ‫القوائم‬ ‫استخدام‬126 ‫استقبال‬‫الصفوف‬‫والقوائم‬‫في‬‫الدالة‬................................................126 ........................................................................ ‫لمبدا‬ ‫نماذج‬127 ‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|6
  • 8.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ................................................................. ‫لمدا‬ ‫نماذج‬ ‫استخدام‬127 128 ............................................................... exec ‫و‬ eval ‫إفادات‬ 128 .........................................................................assert ‫إفادة‬ 128............................................................................ repr ‫دالة‬ .............................................................................. ‫الخلصة‬129 16‫بعد؟‬ ‫وماذا‬ . ‫الرسومية‬ ‫البرمجيات‬.................................................................130 ‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬........................................................131 ‫المزيد‬ ‫استكشف‬.......................................................................132 ‫الخلصة‬................................................................................133 A‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ ......................................................134 Bْ‫عن‬ .........................................................................................137 ‫الطبع‬ ‫بيانات‬...................................................................................137 ‫المؤلف‬ ‫عن‬....................................................................................137 C‫المراجعة‬ ‫تأريخ‬ . ‫الزمني‬ ‫الختم‬.........................................................................137 ‫الجداول‬ ‫قائمة‬ 5.1............................................... ‫واستخداماتها‬ ‫الرياضية‬ ‫العوامل‬ .35 5.2‫العوامل‬ ‫أسبقية‬ ...................................................................37 15.1‫الخاصة‬ ‫الساليب‬ ‫بعض‬ .......................................................124 ‫المثلة‬ ‫قائمة‬ 3.1‫بيثون‬ ‫مفسر‬ ‫محث‬ ‫استعمال‬ . 3.2‫مصدري‬ ‫ملف‬ ‫استخدام‬ . 4.1‫الحرفية‬ ‫والثوابت‬ ‫المتغيرات‬ ‫استخدام‬ . 5.1‫التعبيرات‬ ‫استخدام‬ . 6.2‫إفادة‬ ‫استخدام‬ .while 6.3‫إفادة‬ ‫استخدام‬ .for 6.4‫الفادة‬ ‫استخدام‬ .break 6.5‫الفادة‬ ‫استخدام‬ .continue 7.1‫دالة‬ ‫تعريف‬ . 7.2‫الدالة‬ ‫معاملت‬ ‫استخدام‬ . 7.3‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬ . 7.4‫الفادة‬ ‫استخدام‬ .global 7.5‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬ . ‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|7
  • 9.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ 7.6‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬ . 7.7‫الفادة‬ ‫استخدام‬ .return 7.8‫التوثيق‬ ‫جمل‬ ‫استخدام‬ . 8.1‫الوحدة‬ ‫استخدام‬ .sys 8.2__ ‫الوحدة‬ ‫استخدام‬ .name__ 8.3‫الخاصة‬ ‫وحداتك‬ ‫تنشئ‬ ‫كيف‬ . 8.4‫الدالة‬ ‫استخدام‬ .dir 9.1‫القوائم‬ ‫استخدام‬ . 9.2‫الصفوف‬ ‫استخدام‬ 9.3‫الصفوف‬ ‫استخدام‬ ‫خرج‬ . 9.4‫القواميس‬ ‫استخدام‬ . 9.5‫المتسلسلت‬ ‫استخدام‬ . 9.6‫والمرجعيات‬ ‫الكائنات‬ . 9.7‫النصية‬ ‫السلسل‬ ‫طرق‬ . 10.1‫الول‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ . 10.2‫الثاني‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ . 10.3(‫يغمل‬ ‫)ل‬ ‫الثالث‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫برنامج‬ . 10.4‫الرابع‬ ‫الصدار‬ - ‫الحتياطي‬ ‫النسخ‬ ‫برنامج‬ . 11.1‫فئة‬ ‫.إنشاء‬ 11.2‫الكائنات‬ ‫طرق‬ ‫استخدام‬ . 11.3‫طريقة‬ ‫استخدام‬ . 11.4‫والفئة‬ ‫الكائن‬ ‫قيم‬ ‫استخدام‬ . 11.5‫التوارث‬ ‫استخدام‬ . 12.1‫الملفات‬ ‫استخدام‬ . 12.2.Pickling and Unpickling 13.1‫الستثناءات‬ ‫معالجة‬ . 13.2‫الستثناءات‬ ‫رفع‬ ‫كيفية‬ . 13.3‫استخدام‬ .Finally 14.1‫استخدام‬ .sys.argv 15.1‫المضمنة‬ ‫القوائم‬ ‫استخدام‬ . 15.2‫لمدا‬ ‫نماذج‬ ‫استخدام‬ . ‫للفهرس‬ ‫عودة‬‫المحتويات‬ ‫قائمة‬|8
  • 10.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫تمهيــــد‬ ‫المحتويات‬ ‫قائمة‬ ‫الكتاب؟‬ ‫هذا‬ ‫لمن‬ ‫الكتاب‬ ‫تاريخ‬ ‫الكتاب‬ ‫حالة‬ ‫الرسمي‬ ‫الموقع‬ ‫الترخيص‬ ‫بنود‬ ‫القتراحات‬ ‫فيها‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬ ‫لغة‬ ‫إنها‬ .‫والقوة‬ ‫البساطة‬ ‫بين‬ ‫تجمع‬ ‫أنها‬ ‫الدعاء‬ ‫يمكننا‬ ‫التي‬ ‫القليلة‬ ‫اللغات‬ ‫تلك‬ ‫من‬ ‫واحدة‬ ‫هي‬ ‫بيثون‬ ‫إلى‬ ‫الكتاب‬ ‫يهدف‬ .‫بها‬ ‫البرمجة‬ ‫في‬ ‫المتعة‬ ‫الهم‬ ‫والمر‬ ،‫سواء‬ ‫حد‬ ‫على‬ ‫وللمحترفين‬ ‫للمبتدئين‬ ‫جيدة‬ ‫هو‬ ‫الواقع‬ ‫وفى‬ – ‫وسهولة‬ ‫بسرعة‬ ‫المور‬ ‫إنجاز‬ ‫كيفية‬ ‫ويريك‬ ‫الرائعه‬ ‫اللغة‬ ‫هذه‬ ‫تعلم‬ ‫في‬ ‫مساعدتك‬ .'‫البرمجية‬ ‫لمشاكلك‬ ‫المثالي‬ ‫'الترياق‬ ‫الكتاب؟‬ ‫هذا‬ ‫لمن‬ ‫بيثون‬ ‫البرمجة‬ ‫للغة‬ ‫تعليمي‬ ‫دليل‬ ‫بمثابة‬ ‫الكتاب‬ ‫هذا‬.‫المبتدئين‬ ‫أساسا‬ ‫تستهدف‬ ‫وهي‬.‫مفيدة‬ ‫وهي‬ ‫كذلك‬ ‫الخبرة‬ ‫ذوي‬ ‫للمبرمجين‬. ‫النصية‬ ‫الملفات‬ ‫حفظ‬ ‫كيفية‬ ‫هو‬ ‫الحواسيب‬ ‫عن‬ ‫تعرفه‬ ‫ما‬ ‫كل‬ ‫كان‬ ‫إذا‬ ‫عموما‬ ‫ذلك‬ ‫من‬ ‫والهدف‬ ‫الكتاب‬ ‫هذا‬ ‫من‬ ‫بيثون‬ ‫تتعلم‬ ‫أن‬ ‫إذن‬ ‫فيمكنك‬.‫أيضا‬ ‫فيمكنك‬ ‫البرمجة‬ ‫عن‬ ‫مسبقة‬ ‫خبرة‬ ‫لديك‬ ‫كان‬ ‫وإذا‬ ‫الكتاب‬ ‫هذا‬ ‫من‬ ‫بيثون‬ ‫تتعلم‬ ‫أن‬. ‫برمجتك‬ ‫ولغة‬ ‫بيثون‬ ‫بين‬ ‫الختلف‬ ‫بأوجه‬ ‫مهتما‬ ‫فستكون‬ ،‫بالبرمجة‬ ‫مسبقة‬ ‫خبرة‬ ‫لك‬ ‫كان‬ ‫إذا‬ ‫المفضلة‬-‫الختلفات‬ ‫هذه‬ ‫من‬ ‫الكثير‬ ‫على‬ ‫الضوء‬ ‫ألقيت‬ ‫لقد‬.،‫بسيط‬ ‫تنبيه‬ ‫فلي‬ ‫ذلك‬ ‫من‬ ‫الرغم‬ ‫على‬ ‫المفضلة‬ ‫برمجتك‬ ‫لغة‬ ‫تصبح‬ ‫سوف‬ ‫قريب‬ ‫عما‬ ‫بيثون‬. ‫للفهرس‬ ‫عودة‬‫الكتاب؟‬ ‫هذا‬ ‫لمن‬|9
  • 11.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الكتـاب‬ ‫تاريخ‬ ‫يتي‬‫لبرمج‬ ‫تثبيت‬ ‫برنامج‬ ‫إلى‬ ‫احتجت‬ ‫عندما‬ ‫بيثون‬ ‫مع‬ ‫بدأت‬ ‫المر‬ ‫أول‬ ‫في‬Diamond‫حتى‬ ، ‫مكتبة‬ ‫مع‬ ‫بيرل‬ ‫و‬ ‫بيثون‬ ‫ارتباطات‬ ‫بين‬ ‫الختيار‬ ‫علي‬ ‫وكان‬ .‫سهل‬ ‫التثبيت‬ ‫أجعل‬QT‫في‬ ‫وبحثت‬ - ‫والمشهور‬ ‫المبجل‬ ‫الهاكر‬ ‫ذلك‬ - ‫رايموند‬ .‫إس‬ ‫لِريك‬ ‫مقالة‬ ‫على‬ ‫عثرت‬ ‫حتى‬ ‫النترنت‬ ‫شبكة‬ ‫ارتباطات‬ ‫أن‬ ‫اكتشفت‬ ‫وكذلك‬ .‫المفضلة‬ ‫برمجته‬ ‫لغة‬ ‫هي‬ ‫بيثون‬ ‫أصبحت‬ ‫كيف‬ ‫عن‬ ‫فيها‬ ‫يتكلم‬ PyQt‫مع‬ ‫بالمقارنة‬ ‫جدا‬ ‫جيدة‬Perl-Qt.‫لغتي‬ ‫هي‬ ‫بيثون‬ ‫أن‬ ‫قررت‬ ‫لذلك‬ . ‫بعض‬ ‫وجدت‬ ‫وقد‬ ،!!‫منها‬ ‫أيا‬ ‫أجد‬ ‫لم‬ ‫ولكني‬ .‫بيثون‬ ‫لغة‬ ‫في‬ ‫جيد‬ ‫كتاب‬ ‫عن‬ ‫البحث‬ ‫بدأت‬ ‫بعدها‬ ‫كتب‬O'Reilly‫إلى‬ ‫منها‬ ‫المرجعي‬ ‫الكتيب‬ ‫إلى‬ ‫أقرب‬ ‫أو‬ ،‫للغاية‬ ‫الثمن‬ ‫باهظة‬ ‫إما‬ ‫كانت‬ ‫ولكنها‬ ،‫وصغيرة‬ ‫جدا‬ ‫مختصرة‬ ‫كانت‬ ‫لكنها‬ ،‫بيثون‬ ‫مع‬ ‫جاءت‬ ‫التي‬ ‫الوثائق‬ ‫إلى‬ ‫هت‬‫اتج‬ ‫وبالتالي‬ .‫دليل‬ ‫كان‬ ‫حيث‬ ‫معها‬ ‫التعامل‬ ‫أمكنني‬ ‫وقد‬ .‫مكتملة‬ ‫تكن‬ ‫لم‬ ‫ولكنها‬ ،‫بيثون‬ ‫عن‬ ‫جيدة‬ ‫فكرة‬ ‫أعطتني‬ ‫وقد‬ .‫للمبتدئين‬ ‫ملئمة‬ ‫غير‬ ‫ولكنها‬ ،‫بالبرمجة‬ ‫مسبقة‬ ‫خبرة‬ ‫لدي‬ ‫ات‬‫ه‬‫رده‬ ‫من‬ (‫ا‬‫ه‬‫وقته‬ ‫)فهي‬ ‫توزيعهة‬ ‫آخهر‬ ‫بتثهبيت‬ ‫قمهت‬ ‫بيثهون‬ ‫مهع‬ ‫لهي‬ ‫اء‬‫ه‬‫لق‬ ‫أول‬ ‫مهن‬ ‫شهر‬‫أ‬ ‫سهتة‬ ‫بعهد‬ Red Hat 9‫ببرنامهج‬ ‫ألعهب‬ ‫وبهدأت‬ ،KWord‫فكهرة‬ ‫لهي‬ ‫خطهرت‬ ‫وفجهأة‬ ‫إثهارة‬ ‫أزداد‬ ‫وكنهت‬ ، ‫ين‬‫ثلث‬ ‫صبحت‬‫أ‬ ‫سريعا‬ ‫ها‬‫ولكن‬ ،‫صفحات‬‫ال‬ ‫من‬ ‫يل‬‫بقل‬ ‫بة‬‫الكتا‬ ‫بدأت‬ ‫قد‬‫و‬ .‫ثون‬‫بي‬ ‫عن‬ ‫مادة‬ ‫بة‬‫كتا‬ ‫وبعد‬ .‫كتاب‬ ‫شكل‬ ‫على‬ ‫فائدة‬ ‫أكثر‬ ‫جعلها‬ ‫في‬ ‫جادا‬ ‫صبحت‬ ‫بعدها‬ ،‫طويلة‬ ‫صفحة‬‫الكثير‬‫إعادة‬ ‫من‬ ‫الكتهاب‬ ‫ههذا‬ ‫أعتهبر‬ ‫وأنها‬ ،‫بيثهون‬ ‫لغهة‬ ‫تعلهم‬ ‫فهي‬ ‫مفيهدا‬ ‫مرجعها‬ ‫كهونه‬ ‫مرحلهة‬ ‫فهي‬ ‫أصهبح‬ ،‫الكتابهة‬ .‫المفتوحة‬ ‫المصادر‬ ‫لمجتمع‬ ‫وتحيتي‬ ‫مساهمتي‬ ‫أني‬ ‫من‬ ‫بالرغم‬ ،‫النظرة‬ ‫نفس‬ ‫إليه‬ ‫أنظر‬ ‫زلت‬ ‫وما‬ ‫بيثون‬ ‫عن‬ ‫شخصية‬ ‫كملحظات‬ ‫الكتاب‬ ‫هذا‬ ‫بدأ‬ (: ‫اﻵخرين‬ ‫عند‬ ‫قبول‬ ‫أكثر‬ ‫ليكون‬ ‫الجهد‬ ‫من‬ ‫الكثير‬ ‫فيه‬ ‫بذلت‬ ،‫البناءة‬ ‫القتراحات‬ ‫من‬ ‫الكثير‬ ‫تلقيت‬ ،‫المفتوحة‬ ‫المصادر‬ ‫لمجتمع‬ ‫الحقيقية‬ ‫الروح‬ ‫خلل‬ ‫ومن‬ ‫و‬ ‫والنتقادات‬‫فعل‬ ‫ردود‬.‫الكتاب‬ ‫هذا‬ ‫تحسين‬ ‫على‬ ‫كثيرا‬ ‫ساعدني‬ ‫مما‬ ‫القراء‬ ‫من‬ ‫متحمسة‬ ‫الكتـاب‬ ‫حالة‬ ‫الكتاب‬ ‫هذا‬ ‫يزال‬ ‫ما‬‫العمل‬ ‫قيد‬‫ذلك‬ ‫ومع‬ ،‫وتتحسن‬ ‫باستمرار‬ ‫تتغير‬ ‫الفصول‬ ‫من‬ ‫الكثير‬ ‫حيث‬ . ‫فضلك‬ ‫من‬ .‫الكتاب‬ ‫هذا‬ ‫من‬ ‫بسهولة‬ ‫بيثون‬ ‫لتعلم‬ ‫مستعدا‬ ‫وستكون‬ ،‫كثيرا‬ ‫نضج‬ ‫قد‬ ‫فالكتاب‬ .‫مفهوم‬ ‫غير‬ ‫أو‬ ‫صحيح‬ ‫غير‬ ‫الكتاب‬ ‫هذا‬ ‫في‬ ‫جزء‬ ‫أي‬ ‫وجدت‬ ‫إن‬ ‫أخبرني‬ ‫عن‬ ‫فصل‬ ‫مثل‬ ،‫المستقبل‬ ‫في‬ ‫الفصول‬ ‫من‬ ‫لمزيد‬ ‫خطط‬ ‫هناك‬wxPython Twisted‫وربما‬ ‫حتى‬Boa Constructor. ‫الرسمي‬ ‫الموقع‬ ‫هو‬ ‫الكتاب‬ ‫لهذا‬ ‫الرسمي‬ ‫الموقع‬http://www.byteofpython.info‫يمكنك‬ ‫الموقع‬ ‫خلل‬ ‫ومن‬ ‫للفهرس‬ ‫عودة‬‫الرسمي‬ ‫الموقع‬|10
  • 12.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الملحظات‬ ‫إرسال‬ ‫وكذلك‬ ،‫الكتاب‬ ‫من‬ ‫إصدار‬ ‫آخر‬ ‫تنزيل‬ ‫أو‬ ‫مباشر‬ ‫بشكل‬ ‫كامل‬ ‫الكتاب‬ ‫قراءة‬ ‫لي‬. ‫الترخيص‬ ‫بنود‬ ‫بموجب‬ ‫مرخص‬ ‫الكتاب‬ ‫هذا‬‫بالمثل‬ ‫المشاركة‬ ‫التجارية‬ ‫غير‬ ‫العامة‬ ‫البداع‬ ‫رخصة‬2.0. )Creative Commons Attribution-NonCommercial-ShareAlike License (2.0 ‫هي‬ ‫القيود‬ .‫لي‬ ‫الفضل‬ ‫تنسب‬ ‫أنك‬ ‫طالما‬ ،‫الكتاب‬ ‫وعرض‬ ،‫وتوزيع‬ ‫نسخ‬ ‫في‬ ‫الحرية‬ ‫لك‬ ‫؛‬ ‫أساسا‬ ‫والبناء‬ ‫التعديل‬ ‫في‬ ‫الحرية‬ ‫لك‬ .‫مني‬ ‫إذن‬ ‫بدون‬ ‫تجارية‬ ‫لغراض‬ ‫الكتاب‬ ‫استخدام‬ ‫يمكنك‬ ‫ل‬ ‫أنه‬ ‫المعدل‬ ‫العمل‬ ‫وإصدار‬ ‫التغييرات‬ ‫لكل‬ ‫واضحة‬ ‫علمات‬ ‫بوضع‬ ‫تقوم‬ ‫أن‬ ‫شريطة‬ ،‫العمل‬ ‫هذا‬ ‫على‬ .‫الكتاب‬ ‫هذا‬ ‫كما‬ ‫الرخصة‬ ‫نفس‬ ‫تحت‬ ‫بزيارة‬ ‫قم‬ ‫فضلك‬ ‫من‬‫الرخصة‬ ‫موقع‬‫يوجد‬ ‫إذ‬ ،‫الفهم‬ ‫سهلة‬ ‫لصدارة‬ ‫أو‬ ،‫كامل‬ ‫نصها‬ ‫لقراءة‬ .‫الرخصة‬ ‫لشرح‬ ‫مصورة‬ ‫قصة‬ ‫بالموقع‬ ‫حتى‬ ‫القتراحات‬ ‫وجدت‬ ‫إذا‬ ،‫ولكن‬ .‫المكان‬ ‫قدر‬ ‫على‬ ‫ومحكما‬ ‫مفيدا‬ ‫الكتاب‬ ‫هذا‬ ‫لجعل‬ ‫الجهد‬ ‫من‬ ‫الكثير‬ ‫بذلت‬ ‫لقد‬ ‫بحيث‬ ،‫أبلغني‬ ‫رجاء‬ ،‫تحسين‬ ‫إلى‬ ‫بحاجة‬ ‫ببساطة‬ ‫أو‬ ،‫صحيحة‬ ‫غير‬ ‫أو‬ ‫متسقة‬ ‫غير‬ ‫المواد‬ ‫بعض‬ ‫عبر‬ َّ‫إلي‬ ‫الوصول‬ ‫يمكنك‬ .‫المناسبة‬ ‫الصلحات‬ ‫عمل‬ ‫من‬ ‫أتمكن‬> swaroop@byteofpython.info<. ‫فيها‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬ ‫وإما‬ ،‫قصور‬ ‫بل‬ ‫أنها‬ ‫بوضوح‬ ‫يظهر‬ ‫بحيث‬ ‫جدا‬ ‫بسيطة‬ ‫جعلها‬ ‫هو‬ ‫أحدها‬ ‫برمجية‬ ‫لتصميم‬ ‫طريقتان‬ ‫هناك‬ .‫القصور‬ ‫أوجه‬ ‫بها‬ ‫يظهر‬ ‫ل‬ ‫بحيث‬ ‫معقدة‬ ‫جعلها‬ --C. A. R. Hoare .‫ومثابرة‬ ‫تركيز‬ ‫هو‬ ‫ما‬ ‫بقدر‬ ‫وموهبة‬ ‫ذكاء‬ ‫مسألة‬ ‫ليس‬ ‫الحياة‬ ‫في‬ ‫النجاح‬ --C. W. Wendte ‫للفهرس‬ ‫عودة‬‫فيها‬ ‫التفكير‬ ‫يجب‬ ‫مسائل‬|11
  • 13.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬1‫.مقدمـــة‬ ‫المحتويات‬ ‫قائمة‬ ‫مقدمة‬ ‫بيثون‬ ‫مميزات‬ ‫الخلصة‬ ‫بيرل؟‬ ‫ليس‬ ‫لماذا‬ ‫المبرمجون‬ ‫يقول‬ ‫ماذا‬ ‫مقدمــة‬ ‫أنها‬ ‫الدعاء‬ ‫يمكن‬ ‫التي‬ ‫القليلة‬ ‫اللغات‬ ‫تلك‬ ‫من‬ ‫واحدة‬ ‫هي‬ ‫بيثون‬‫بسيطة‬‫و‬‫قوية‬‫سواء‬ ‫حد‬ ‫على‬. ‫التي‬ ‫البرمجة‬ ‫لغة‬ ‫وأساسيات‬ ‫تراكيب‬ ‫وليس‬ ‫المشكلة‬ ‫حل‬ ‫على‬ ‫وتركز‬ ‫سهلة‬ ‫هي‬ ‫كم‬ ‫ستتفاجأ‬ ‫بها‬ ‫تبرمج‬. ‫المقدم‬‫هي‬ ‫لبايثون‬ ‫الرسمية‬ ‫ة‬ ‫قوية‬ ،‫التعلم‬ ‫سهلة‬ ‫برمجة‬ ‫لغة‬ ‫هي‬ ‫بيثون‬.‫وتوجه‬ ،‫كفؤة‬ ‫المستوى‬ ‫عالية‬ ‫بيانات‬ ‫هيكلة‬ ‫لها‬ ‫الكائنية‬ ‫البرمجية‬ ‫نحو‬ ‫فعال‬ ‫لكن‬ ‫بسيط‬.‫جنبا‬ ،‫النواع‬ ‫تحديد‬ ‫ودينامية‬ ‫بيثون‬ ‫قواعد‬ ‫حذاقة‬ ‫وتطوير‬ ‫السكربتات‬ ‫لبرمجة‬ ‫مثالية‬ ‫لغة‬ ‫بيثون‬ ‫من‬ ‫تجعل‬ ،‫التفسيرية‬ ‫طبيعتها‬ ‫مع‬ ‫جنب‬ ‫إلى‬ ‫المنصات‬ ‫معظم‬ ‫على‬ ‫المجالت‬ ‫من‬ ‫العديد‬ ‫في‬ ‫السريع‬ ‫التطبيقات‬. ‫التالي‬ ‫الباب‬ ‫في‬ ‫التفصيل‬ ‫من‬ ‫بمزيد‬ ‫الميزات‬ ‫هذه‬ ‫معظم‬ ‫سأناقش‬. ‫ملحظة‬ ‫روسام‬ ‫ان‬ ‫جويدو‬ ‫أطلق‬‫ڤ‬)Guido van Rossum- (‫بيثون‬ ‫لغة‬ ‫مؤلف‬-‫هذا‬ ‫عليها‬ ‫البريطانية‬ ‫الذاعة‬ ‫هيئة‬ ‫عرض‬ ‫اسم‬ ‫على‬ ‫السم‬"‫الطائرة‬ ‫للثعابين‬ ‫مونتي‬ ‫سيرك‬ )"Monty Python's Flying Circus.(‫تقتل‬ ‫التي‬ ‫بالثعابين‬ ‫معجبا‬ ‫ليس‬ ‫فهو‬ ‫سحقها‬ ‫ثم‬ ‫حولها‬ ‫باللتفاف‬ ‫جسدها‬ ‫تصفية‬ ‫طريق‬ ‫عن‬ ‫عليها‬ ‫لتتغذى‬ ‫الحيوانات‬. ‫بيثون‬ ‫مميزات‬ ‫بسيطة‬ ‫على‬ ‫النكليزية‬ ‫اللغة‬ ‫قراءة‬ ‫يشبه‬ ‫يكاد‬ ‫جيد‬ ‫بيثون‬ ‫برنامج‬ ‫قراءة‬ .‫الحدود‬ ‫لبعد‬ ‫بسيطة‬ ‫لغة‬ ‫بيثون‬ ) ‫رمزية‬ ‫الشبه‬ ‫الطبيعة‬ ‫صارمة!هذه‬ ‫إنجليزية‬ ‫أنها‬ ‫من‬ ‫الرغم‬pseudo-code‫أحد‬ ‫لبايثون‬ ( ‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫مميزات‬|12
  • 14.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫نفسها‬ ‫اللغة‬ ‫ل‬ ‫المشكلة‬ ‫حل‬ ‫على‬ ‫التركيز‬ ‫لك‬ ‫فتتيح‬ .‫قوتها‬ ‫أسرار‬ ‫أعظم‬ ‫التعلم‬ ‫سهلة‬ ‫بشكل‬ ‫سهلة‬ ‫تراكيب‬ ‫تحتوي‬ ‫بيثون‬ .‫البرمجة‬ ‫تعلم‬ ‫في‬ ‫بها‬ ‫لتبدأ‬ ‫للغاية‬ ‫سهلة‬ ‫بيثون‬ ،‫سترون‬ ‫كما‬ .‫ذكره‬ ‫سبق‬ ‫كما‬ ،‫معتاد‬ ‫غير‬ ‫المصدر‬ ‫ومفتوحة‬ ‫حرة‬ ‫توزيع‬ ‫بحرية‬ ‫يمكنك‬ ،‫بسيطة‬ ‫بعبارات‬ .‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ ‫على‬ ‫مثال‬ ‫هي‬ ‫بيثون‬ ‫أجزاء‬ ‫واستخدام‬ ‫عليها‬ ‫التغييرات‬ ‫ببعض‬ ‫القيام‬ ‫و‬ ،‫المصدر‬ ‫كود‬ ‫وقراءة‬ ،‫البرمجيات‬ ‫هذه‬ ‫من‬ ‫نسخ‬ ‫الحرية‬ ‫البرمجيات‬ .‫الشياء‬ ‫هذه‬ ‫تفعل‬ ‫أن‬ ‫يمكنك‬ ‫أنه‬ ‫تعرف‬ ‫وأنت‬ ،‫جديدة‬ ‫حرة‬ ‫برمجيات‬ ‫في‬ ‫منها‬ - ‫جدا‬ ‫جيدة‬ ‫بيثون‬ ‫كون‬ ‫أسباب‬ ‫من‬ ‫واحد‬ ‫هذا‬ .‫المعرفة‬ ‫في‬ ‫يتشارك‬ ‫الذي‬ ‫المجتمع‬ ‫مبدأ‬ ‫على‬ ‫تقوم‬ ‫بيثون‬ ‫يرى‬ ‫أن‬ ‫فقط‬ ‫يريد‬ ‫الذي‬ ‫المجتمع‬ ‫خلل‬ ‫من‬ ‫مستمر‬ ‫بشكل‬ ‫وتحسينها‬ ‫إنشاؤها‬ ‫تم‬ ‫قد‬ ‫لنه‬ .‫أفضل‬ ‫المستوى‬ ‫عالية‬ ‫برمجـة‬ ‫لغة‬ ‫الذاكرة‬ ‫إدارة‬ ‫مثل‬ ‫المستوى‬ ‫دقيقة‬ ‫بالتفاصيل‬ ‫للهتمام‬ ‫تحتاج‬ ‫ل‬ ،‫بيثون‬ ‫في‬ ‫البرامج‬ ‫تكتب‬ ‫عندما‬ .‫إلخ‬ ،‫برنامجك‬ ‫يستخدمها‬ ‫التي‬ ‫محمولة‬ ‫العديد‬ (‫على‬ ‫تعمل‬ ‫جعلها‬ ‫تم‬ ‫)أي‬ ‫إلى‬ ‫بيثون‬ ‫نقل‬ ‫تم‬ ،‫المصدر‬ ‫مفتوحة‬ ‫كبرمجية‬ ‫لطبيعتها‬ ‫نظرا‬ ‫أن‬ ‫دون‬ ‫المنصات‬ ‫هذه‬ ‫من‬ ‫أي‬ ‫على‬ ‫يعمل‬ ‫أن‬ ‫يمكن‬ ‫بيثون‬ ‫برامج‬ ‫من‬ ‫تكتبه‬ ‫ما‬ ‫كل‬ .‫المنصات‬ ‫من‬ ‫تعتمد‬ ‫خصائص‬ ‫أي‬ ‫لتجنب‬ ‫الكفاية‬ ‫فيه‬ ‫بما‬ ‫دقيقا‬ ‫كنت‬ ‫إذا‬ ‫الطلق‬ ‫على‬ ‫تغييرات‬ ‫أي‬ ‫ذلك‬ ‫يتطلب‬ .‫بعينه‬ ‫نظام‬ ‫على‬ ،‫سولريس‬ ،‫ماكينتوش‬ ،‫بيإسدي‬ ‫فري‬ ،‫ويندوز‬ ،‫لينكس‬ ‫على‬ ‫بيثون‬ ‫استخدام‬ ‫يمكنك‬OS/2، Amiga، AROS، AS/400، BeOS، OS/390، z/OS، Palm OS، QNX، VMS، Psion، Acorn RISC OS، VxWorks، PlayStation، Sharp Zaurus، Windows CE.‫الكفي‬ ‫الحاسوب‬ ‫وحتى‬ ‫مفسَّرة‬ .‫الشرح‬ ‫من‬ ‫شيئا‬ ‫يتطلب‬ ‫هذا‬ ‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫مميزات‬|13
  • 15.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ) ‫مصرّفة‬ ‫بلغة‬ ‫المكتوب‬ ‫البرنامج‬compiled‫اللغة‬ ‫من‬ ‫تحويله‬ ‫يتم‬ ++‫سي‬ ‫أو‬ ‫سي‬ ‫مثل‬ ( (‫وآحاد‬ ‫أصفار‬ ‫من‬ ‫ثنائي‬ ‫)كود‬ ‫حاسوبك‬ ‫يتكلمها‬ ‫التي‬ ‫اللغة‬ ‫إلى‬ (++‫سي‬ ‫أو‬ ‫)سي‬ ‫المصدر‬ ‫يقوم‬ ،‫البرنامج‬ ‫تشغيلك‬ ‫عند‬ .‫والتعليمات‬ ‫الخيارات‬ ‫مختلف‬ ‫مع‬ ‫المصرّف‬ ‫باستخدام‬ ) ‫الرابط/المحمّل‬linker/loader‫في‬ ‫ويبدأ‬ ‫الذاكرة‬ ‫إلى‬ ‫الصلب‬ ‫القرص‬ ‫من‬ ‫البرنامج‬ ‫بنسخ‬ ( .‫تشغيله‬ ‫فقط‬ .‫ثنائي‬ ‫كود‬ ‫إلى‬ ‫التصريف‬ ‫تحتاج‬ ‫ل‬ -‫أخرى‬ ‫ناحية‬ ‫-من‬ ‫بيثون‬‫شغل‬‫من‬ ‫مباشرة‬ ‫البرنامج‬ ‫يسمى‬ ‫وسيط‬ ‫شكل‬ ‫إلى‬ ‫المصدر‬ ‫كود‬ ‫يحول‬ ‫بيثون‬ ‫فإن‬ ،‫داخليا‬ .‫المصدر‬ ‫الكود‬bytecode‫ثم‬ ‫استخدام‬ ‫بكثير‬ ‫السهل‬ ‫من‬ ‫يجعل‬ ‫هذا‬ ‫كل‬ .‫يشغله‬ ‫ثم‬ ،‫لجهازك‬ ‫الصلية‬ ‫اللغة‬ ‫إلى‬ ‫هذا‬ ‫يترجم‬ ‫الربط‬ ‫مكتبات‬ ‫صحة‬ ‫من‬ ‫التأكد‬ ‫أو‬ ،‫البرنامج‬ ‫بتصريف‬ ‫للهتمام‬ ‫بحاجة‬ ‫لست‬ ‫حيث‬ ‫بيثون‬ ‫يمكنك‬ ‫بحيث‬ ،‫محمولية‬ ‫أكثر‬ ‫بك‬ ‫الخاصة‬ ‫بيثون‬ ‫برامج‬ ‫يجعل‬ ‫أيضا‬ ‫وهذا‬ .‫الخ‬ ،‫الخ‬ ،‫وتحميلها‬ !‫يعمل‬ ‫وبعدها‬ ،‫آخر‬ ‫حاسوب‬ ‫إلى‬ ‫بك‬ ‫الخاص‬ ‫بيثون‬ ‫برنامج‬ ‫نسخ‬ ‫مجرد‬ ‫التوجـه‬ ‫كائنيـة‬ ) ‫الجرائية‬ ‫البرمجة‬ ‫بيثون‬ ‫تدعم‬procedure-oriented‫الكائنية‬ ‫البرمجة‬ ‫وكذلك‬ ( )object-oriented‫اللغات‬ ‫في‬ .(‫التوجه‬ ‫إجرائية‬‫الدوال‬ ‫أو‬ ‫الجراءات‬ ‫حول‬ ‫البرنامج‬ ‫يتمحور‬ ، ‫اللغات‬ ‫وفي‬ .‫استخدامها‬ ‫إعادة‬ ‫يمكن‬ ‫البرامج‬ ‫من‬ ‫قطع‬ ‫سوى‬ ‫ليست‬ ‫التي‬‫التوجه‬ ‫كائنية‬‫يتمحور‬ ، ) ‫الكائنات‬ ‫حول‬ ‫البرنامج‬objects‫قوية‬ ‫طريقة‬ ‫ولبايثون‬ .‫والوظائف‬ ‫البيانات‬ ‫بين‬ ‫تجمع‬ ‫التي‬ ( ‫أو‬ ++‫سي‬ ‫مثل‬ ‫الكبيرة‬ ‫باللغات‬ ‫مقارنتها‬ ‫عند‬ ‫خاصة‬ ‫الكائنية‬ ‫البرمجة‬ ‫لعمل‬ ‫تبسيطية‬ ‫ولكن‬ ‫جدا‬ .‫جافا‬ ‫للمتداد‬ ‫قابلة‬ ،‫الخوازميات‬ ‫بعض‬ ‫إخفاء‬ ‫تريد‬ ‫أو‬ ‫جدا‬ ‫سريعا‬ ‫يعمل‬ ‫الكود‬ ‫من‬ ‫حيوي‬ ‫جزء‬ ‫لجعل‬ ‫حاجة‬ ‫في‬ ‫كنت‬ ‫إذا‬ ‫برنامج‬ ‫من‬ ‫تستخدمه‬ ‫وبعدها‬ ++‫سي‬ ‫أو‬ ‫سي‬ ‫بلغة‬ ‫برنامجك‬ ‫من‬ ‫الجزء‬ ‫هذا‬ ‫كتابة‬ ‫فيمكنك‬ .‫بك‬ ‫الخاص‬ ‫بيثون‬ ‫للتضمين‬ ‫قابلة‬ '‫ال‬ ‫قدرات‬ ‫لعطاء‬ ++‫سي/سي‬ ‫برامج‬ ‫في‬ ‫بيثون‬ ‫تضمين‬ ‫يمكنك‬scripting‫لمستخدمي‬ ' .‫برنامجك‬ ‫شاملة‬ ‫مكتبات‬ ‫فيهها‬ ‫بمها‬ ‫العاديهة‬ ‫الشهياء‬ ‫مختلهف‬ ‫عمهل‬ ‫علهى‬ ‫تسهاعدك‬ .‫حقها‬ ‫ضهخمة‬ ‫مكتبهة‬ ‫القياسهية‬ ‫بيثهون‬ ‫مكتبهة‬ ‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫مميزات‬|14
  • 16.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ) ‫النمطيهة‬ ‫التعهابير‬regular expressions‫الخيهوط‬ ،‫الوحهدات‬ ‫اختبهار‬ ،‫التوثيهق‬ ‫توليهد‬ ،( )threading،‫وب‬ ‫متصهفحات‬ ،‫البيانهات‬ ‫قواعهد‬ ،(CGI، ftp،‫إلكهتروني‬ ‫بريهد‬ ،XML، XML- RPC، HTML‫ملفات‬ ،WAV‫على‬ ‫تعتمد‬ ‫التي‬ ‫الشياء‬ ‫من‬ ‫وغيرها‬ ‫الرسومية‬ ‫الواجهات‬ ،‫التعمية‬ ، '‫مضمنة‬ ‫'البطاريات‬ ‫فلسفة‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫بيثون‬ ‫يثبت‬ ‫أينما‬ ‫دائما‬ ‫متاح‬ ‫هذا‬ ‫كل‬ ،‫تذكر‬ .‫النظام‬ .‫بيثون‬ ‫في‬ ‫مثل‬ ‫الجودة‬ ‫عالية‬ ‫الخرى‬ ‫المتنوعة‬ ‫المكتبات‬ ‫من‬ ‫العديد‬ ‫توجد‬ ‫القياسية‬ ‫المكتبات‬ ‫بجانب‬ wxPython‫و‬ ،Twisted‫و‬ ،Python Imaging Library.‫الكثير‬ ‫وغيرها‬ ‫ا‬‫لخلصـة‬ ‫قا‬‫ح‬ ‫ية‬‫وقو‬ ‫مثيرة‬ ‫غة‬‫ل‬ ‫ثون‬‫بي‬.‫مج‬‫برا‬ ‫بة‬‫كتا‬ ‫عل‬‫تج‬ ‫لتي‬‫ا‬ ‫يزات‬‫والم‬ ‫لداء‬‫ا‬ ‫سن‬‫ح‬ ‫من‬ ‫يج‬‫مز‬ ‫هي‬‫ف‬ ‫والمتعة‬ ‫السهولة‬ ‫من‬ ‫خليطا‬ ‫بيثون‬. ‫بيرل؟‬ ‫ليس‬ ‫لماذا‬ ‫شعبية‬ ‫صدر‬‫الم‬ ‫حة‬‫مفتو‬ ‫سرة‬‫مف‬ ‫جة‬‫برم‬ ‫غة‬‫ل‬ ‫لخرى‬‫ا‬ ‫هي‬ ‫تبر‬‫تع‬ ‫فبيرل‬ ،‫عد‬‫ب‬ ‫عرف‬‫ت‬ ‫ل‬ ‫نت‬‫ك‬ ‫إذا‬ .‫للغاية‬ ‫السهؤال‬ ‫ههذا‬ ‫عهن‬ ‫أجبهت‬ ‫قهد‬ ‫كنهت‬ ‫ربمها‬ ،‫بيهرل‬ ‫فهي‬ ‫كهبير‬ ‫برنامهج‬ ‫كتابهة‬ ‫وحهاولت‬ ‫لهك‬ ‫سهبق‬ ‫إذا‬ ‫البرامهج‬ ‫فهي‬ ‫يهبرع‬ ‫وههو‬ ،‫صهغيرة‬ ‫تكهون‬ ‫عنهدما‬ ‫سههلة‬ ‫بيهرل‬ ‫برامهج‬ ‫فهإن‬ ،‫أخهرى‬ ‫بعبهارة‬ !‫بنفسهك‬ ‫المراس‬ ‫صعية‬ ‫البرامج‬ ‫هذه‬ ‫تصبح‬ ‫ما‬ ‫سرعان‬ ‫لكن‬ .‫العمل‬ ‫لنجاز‬ ‫والهاكات‬ ‫والسكربتات‬ ‫الصغيرة‬ ‫بلغة‬ ‫كبيرة‬ ‫برامج‬ ‫كتابة‬ ‫تجربة‬ ‫واقع‬ ‫من‬ ‫أتحدث‬ ‫وأنا‬ ،‫أكبر‬ ‫برامج‬ ‫كتابة‬ ‫في‬ ‫البدء‬ ‫بمجرد‬ !‫ياهو‬ ‫في‬ ‫بيرل‬ ‫الكتابة‬ ‫في‬ ‫وأسهل‬ ،‫وأوضح‬ ،‫أبسط‬ ‫بالتأكيد‬ ‫هي‬ ‫بيثون‬ ‫على‬ ‫البرامج‬ ‫فإن‬ ،‫بيرل‬ ‫مع‬ ‫وبالمقارنة‬ ‫سي‬‫أسا‬ ‫شكل‬‫ب‬ ‫ستخدامها‬‫با‬ ‫قوم‬‫وأ‬ ‫يرل‬‫ب‬ ‫غة‬‫بل‬ ‫جب‬‫مع‬ ‫نا‬‫أ‬ .‫صيانة‬‫ولل‬ ‫هم‬‫للف‬ ‫ية‬‫قابل‬ ‫كثر‬‫أ‬ ‫تالي‬‫وبال‬ ‫أصبحت‬ ‫ها‬‫إن‬ ‫يث‬‫ح‬ ‫بيثون؛‬ ‫في‬ ‫ير‬‫التفك‬ ‫أبدأ‬ ،‫برنامجا‬ ‫كتبت‬ ‫ما‬‫كل‬ ‫ني‬‫ولك‬ ،‫عة‬‫متنو‬ ‫لمور‬ ‫يا‬‫يوم‬ ‫ها‬‫أن‬ ‫شعر‬‫وت‬ ،‫كات‬‫والها‬ ‫يرات‬‫التغي‬ ‫من‬ ‫كبير‬ ‫عدد‬‫ل‬ ‫يرل‬‫ب‬ ‫غة‬‫ل‬ ‫ضعت‬‫خ‬ .‫لهي‬ ‫سبة‬‫بالن‬ ‫جدا‬ ‫ية‬‫طبيع‬ ‫بيرل‬ ‫إصدارة‬ ‫أن‬ ‫المحزن‬ ‫ومن‬ .‫كبير‬ ‫كهاك‬ ‫تبدو‬6‫تحسينات‬ ‫بأي‬ ‫قامت‬ ‫أنها‬ ‫يبدو‬ ‫ل‬ ‫المقبلة‬ .‫بهذا‬ ‫تتعلق‬ ‫الضخمة‬ ‫المكتبة‬ ‫هي‬ ‫بيرل‬ ‫في‬ ‫بها‬ ‫أشعر‬ ‫والتي‬ ‫جدا‬ ‫الهامة‬ ‫الوحيد‬ ‫الميزة‬‫بيرل‬ ‫أرشيف‬ ‫شبكة‬ ‫الشاملة‬)CPAN, the Comprehensive Perl Archive Network‫يوحي‬ ‫(وكما‬ ) ‫وحدات‬ ‫من‬ ‫مزيج‬ ‫جمع‬ ‫هذا‬ ،‫السم‬modules‫للحجم‬ ‫نظرا‬ ‫للعقل‬ ‫مذهل‬ ‫ببساطة‬ ‫وهو‬ ‫بيرل‬ ( .‫الوحدات‬ ‫هذه‬ ‫باستخدام‬ ‫الحاسوب‬ ‫مع‬ ‫به‬ ‫القيام‬ ‫يمكنك‬ ‫شيء‬ ‫بأي‬ ‫القيام‬ ‫عمليا‬ ‫يمكنك‬ ‫والعمق؛‬ ‫ولعلي‬ .‫بكثير‬ ‫بيثون‬ ‫من‬ ‫أقدم‬ ‫كونها‬ ‫بيثون‬ ‫من‬ ‫أكثر‬ ‫بيرل‬ ‫مكتبات‬ ‫تجعل‬ ‫التي‬ ‫السباب‬ ‫أحد‬ ‫للفهرس‬ ‫عودة‬‫بيرل؟‬ ‫ليس‬ ‫لماذا‬|15
  • 17.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫في‬ ‫بيثون‬ ‫إلى‬ ‫بيرل‬ ‫وحدات‬ ‫لنقل‬ ‫هاك‬ ‫ورشة‬ ‫أقترح‬comp.lang.python(: ‫كهذلك؛‬‫الجديدةه‬ ‫ة‬‫الفتراضي‬ ‫ة‬‫اﻵل‬Parrot‫بيهرل‬ ‫لغهة‬ ‫مهن‬ ‫كهل‬ ‫لتشهغيل‬ ‫مصهممة‬6‫المعهاد‬ ‫مثهل‬ ‫الهخرى‬ ‫المفسهرة‬ ‫واللغهات‬ ‫لبهايثون‬ ‫بالضهافة‬ ‫تمامها‬ ‫تصهميمها‬Ruby‫و‬PHP‫و‬Tcl‫مها‬ . ‫أنك‬ ‫لك‬ ‫بالنسبة‬ ‫هذا‬ ‫يعنيه‬‫ربما‬‫بيثون‬ ‫داخل‬ ‫من‬ ‫بيرل‬ ‫وحدات‬ ‫جميع‬ ‫استخدام‬ ‫على‬ ‫قادرا‬ ‫تكون‬ ‫العهالم‬ ‫فهي‬ ‫مكتبهة‬ ‫أقهوى‬ ‫مهن‬ ‫كهل‬ ‫فهي‬ ‫الفضهل‬ ‫ذلهك‬ ‫سهيمنحك‬ ‫ولهذا‬ ،‫المسهتقبل‬ ‫فهي‬CPAN .‫سيحدث‬ ‫ما‬ ‫ونرى‬ ‫ننتظر‬ ‫أن‬ ‫فقط‬ ‫علينا‬ ‫حال؛‬ ‫أية‬ ‫على‬ .‫القوية‬ ‫بيثون‬ ‫لغة‬ ‫مع‬ ‫بالشتراك‬ ‫المبرمجون‬ ‫يقول‬ ‫ماذا‬ .‫رايموند‬ .‫س‬ ‫إِريك‬ ‫أمثال‬ ‫من‬ ‫الهاكر‬ ‫عظماء‬ ‫يقوله‬ ‫ما‬ ‫تقرأ‬ ‫أن‬ ‫المهم‬ ‫من‬ ‫ربما‬ ‫ند‬ ‫رايمو‬ .‫س‬ ‫يك‬ ‫إِر‬) '‫والسهوق‬ ‫'الكاتدرائيهة‬ ‫اب‬‫ه‬‫كت‬ ‫مؤلهف‬The Cathedral and the Bazaar‫يقهول‬ .'‫حة‬‫المفتو‬ ‫صادر‬‫'الم‬ ‫صطلح‬‫م‬ ‫واضهع‬ ‫ضا‬‫أي‬ ‫هو‬‫و‬ (‫لغة‬ ‫هي‬ ‫بيثون‬ ‫أصبحت‬ ‫لقد‬ ‫المفضلة‬ ‫برمجته‬.‫بيثون‬ ‫مع‬ ‫خطواتي‬ ‫أولى‬ ‫في‬ ‫لي‬ ‫الحقيقي‬ ‫الملهم‬ ‫هي‬ ‫المقالة‬ ‫هذه‬ ‫وتعتبر‬ . ‫ِل‬ ‫إيك‬ ‫بروس‬‫أن‬ ‫يقهول‬ '++‫سهي‬ ‫بلغهة‬ ‫'التفكيهر‬ ‫و‬ '‫جافها‬ ‫بلغهة‬ ‫'التفكيهر‬ ‫الشههيرة‬ ‫الكتهب‬ ‫مؤلهف‬ ‫الوحيدة‬ ‫اللغة‬ ‫تكون‬ ‫ربما‬ ‫بيثون‬ ‫أن‬ ‫ويقول‬ .‫بيثون‬ ‫من‬ ‫إنتاجية‬ ‫أكثر‬ ‫جعلته‬ ‫قد‬ ‫لغة‬ ‫هناك‬ ‫ليس‬ ‫اقرأ‬ .‫للمبرمج‬ ‫بالنسبة‬ ‫أسهل‬ ‫المور‬ ‫جعل‬ ‫على‬ ‫تركز‬ ‫التي‬‫الكاملة‬ ‫المقابلة‬.‫التفاصيل‬ ‫من‬ ‫لمزيد‬ ‫فج‬ ‫نور‬ ‫يتر‬ ‫ب‬‫سام‬‫رو‬ ‫ان‬ ‫يدو‬‫لجو‬ ‫شكرا‬) ‫جل‬‫جو‬ ‫في‬ ‫حث‬‫الب‬ ‫جودة‬ ‫مدير‬‫و‬ ‫شهير‬ ‫سب‬‫لي‬ ‫لف‬‫مؤ‬‫ڤڤ‬ ‫هذا‬ ‫من‬ ‫التحقق‬ ‫يمكنك‬ .‫جوجل‬ ‫من‬ ‫أصيل‬ ‫جزءا‬ ‫دائما‬ ‫كانت‬ ‫بيثون‬ ‫أن‬ ‫يقول‬ (‫ذلك‬ ‫إلى‬ ‫لشارته‬ ‫صفحة‬ ‫فهي‬ ‫ظر‬‫الن‬ ‫خلل‬ ‫من‬ ‫الواقهع‬ ‫في‬ ‫التصهريح‬‫جوجل‬ ‫وظائف‬‫فهي‬ ‫ثون‬‫بي‬ ‫غة‬‫ل‬ ‫وضهعت‬ ‫والهتي‬ . .‫البرمجيات‬ ‫مهندسي‬ ‫من‬ ‫المطلوبة‬ ‫المعارف‬ ‫قائمة‬ ‫هز‬‫يرينه‬ ‫بروس‬‫پ‬‫مؤسسههي‬ ‫أحههد‬OpenSource.org‫ومشههروع‬UserLinux‫يهههدف‬ . Userlinux‫ضهربت‬ ‫وقهد‬ .‫متعهددين‬ ‫منتجيهن‬ ‫مهن‬ ‫مدعومهة‬ ‫لينكهس‬ ‫مهن‬ ‫قياسهية‬ ‫توزيعهة‬ ‫لعمهل‬ ‫قبل‬ ‫من‬ ‫مدعومة‬ ‫ستكون‬ ‫التي‬ ‫الرئيسية‬ ‫البرمجة‬ ‫لغة‬ ‫لتصبح‬ ‫وروبي‬ ‫بيرل‬ ‫مثل‬ ‫المتنافسين‬ ‫بيثون‬ Userlinux. ‫للفهرس‬ ‫عودة‬‫المبرمجون‬ ‫يقول‬ ‫ماذا‬|16
  • 18.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬2‫بيثون‬ ‫تثبيت‬ . ‫المحتويات‬ ‫قائمة‬ ‫لينكس/بيإسدي‬ ‫لمستخدمي‬ ‫ويندوز‬ ‫لمستخدمي‬ ‫الخلصة‬ ‫لينكس‬ ‫لمستخدمي‬/‫بيإسدي‬ ‫إ‬‫أَو‬ ‫ماندريك‬ ‫أَو‬ ‫فيدورا‬ ‫مثل‬ ‫لينكس‬ ‫توزيعة‬ ُ‫تَستعمل‬ ‫كنت‬ ‫ذا‬}‫هنا‬ َ‫اختيارَك‬ ‫ضع‬{‫نظام‬ ‫أَو‬ ، ‫نظامك‬ ‫على‬ ‫مثبتة‬ ‫بيثون‬ ‫فغالبا‬ ،‫بيإسدي‬ ‫فري‬ ‫مثل‬ ‫بيإسدي‬. ‫طرفية‬ ‫برنامج‬ ‫افتح‬ ،َ‫لينكس‬ ‫توزيعة‬ ‫على‬ ‫عندك‬ ‫بالفعل‬ ‫موجودة‬ ‫بيثون‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫لختِبار‬ )‫مثل‬konsole‫أَو‬gnome-terminal(‫المر‬ ‫وأدخل‬python -V‫بأسفل‬ ‫موضح‬ ‫كما‬. $ python -V Python 2. 3. 4 ‫ملحظــة‬ $‫إعهدادات‬ ‫علهى‬ ‫اعتمهادا‬ ‫لهك‬ ‫بالنسهبة‬ ‫تختلهف‬ ‫قهد‬ ‫وذلهك‬ ‫النظهام‬ ‫صهدفة‬ ‫فهي‬ ‫المحهث‬ ‫علمهة‬ ‫ههي‬ ‫نظامك‬.‫فقط‬ ‫الرمز‬ ‫بهذا‬ ‫المحث‬ ‫إلى‬ ‫أشير‬ ‫سوف‬ ‫لذا‬$. ‫بالفعل‬ ‫مثبتة‬ ‫فبايثون‬ ،‫أعله‬ ‫المعروض‬ ‫مثل‬ ‫الصدارة‬ ‫عن‬ ‫المعلومات‬ ‫بعض‬ ‫رأيت‬ ‫إذا‬. ‫هذه‬ ‫مثل‬ ‫رسالة‬ ‫على‬ ‫حصلت‬ ‫إذا‬ ‫ولكن‬: $ python -V bash: python: command not found ‫عندك‬ ‫مثبتة‬ ‫ليست‬ ‫فبايثون‬.‫ممكن‬ ‫لكنه‬ ‫جدًا‬ ‫المستبعد‬ ‫من‬ ‫هذا‬. : ‫نظامِك‬ ‫على‬ ‫بيثون‬ ‫لتثبيت‬ ‫طريقتان‬ ‫هناك‬ ،‫الحالة‬ ‫هذه‬ ‫في‬ ‫مثل‬ ،‫النظام‬ ‫مع‬ ُ‫تَجيء‬ ‫التي‬ ‫الحزم‬ ِ‫إدارة‬ َ‫برامج‬ ‫باستخدام‬ ‫ثنائية‬ ‫حزم‬ ‫تثبيت‬yum‫لينكس‬ ‫في‬ ‫و‬ ،‫فيدورا‬urpmi‫و‬ ،‫ماندراك‬ ‫لينكس‬ ‫في‬apt-get‫و‬ ،‫دبيان‬ ‫لينكس‬ ‫في‬pkg_add‫نظام‬ ‫في‬ FreeBSD‫إلخ‬ ،.‫مُلحظة‬:‫الطريقة‬ ‫هذه‬ ‫لستعمال‬ ‫بالنترنت‬ ‫اتصالًا‬ ‫ستحتاج‬. ‫إلى‬ ‫انسخها‬ ‫ذلك‬ ‫وبعد‬ ‫آخر‬ ‫مكان‬ ْ‫مِن‬ ‫الثنائية‬ ‫الحزم‬ َ‫تُحمّل‬ ْ‫أَن‬ ‫يُمْكِنُك‬ ،‫ذلك‬ ‫عن‬ ‫أوبديلًا‬ ‫بتثبيتها‬ ‫وقم‬ ‫جهازك‬. ‫من‬ ‫بيثون‬ ‫تصرّف‬ ْ‫أَن‬ ُ‫يُمْكِن‬‫المصدري‬ ‫الكود‬‫وتثبتها‬.‫موقع‬ ‫في‬ ‫موجودة‬ ‫التصريف‬ ‫تعليمات‬ ‫بيثون‬. ‫للفهرس‬ ‫عودة‬‫فصل‬2.‫بيثون‬ ‫تثبيت‬|17
  • 19.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫ويندوز‬ ‫لمستخدمي‬ ‫إلهى‬ ‫اذههب‬Python.org/download‫يبلهغ‬ .‫الموقهع‬ ‫ههذا‬ ْ‫ه‬‫مِن‬ ‫بيثهون‬ ‫إصهدارة‬ ‫آخهر‬ ‫ونهزّل‬ ‫حجمها‬9.4‫و‬ .‫الخرى‬ ‫البرمجة‬ ‫لغات‬ ‫أكثر‬ ‫مع‬ ‫بالمقارنة‬ ‫جدًا‬ ُ‫مضغوطة‬ ‫وهي‬ ‫فقط‬ ‫بايت‬ .‫م‬ .‫ويندوز‬ ‫بيئة‬ ‫على‬ ‫برامج‬ ّ‫أي‬ ‫مثل‬ ‫التثبيت‬ ‫تحذيـر‬ ‫مكوّنات‬ ّ‫أي‬ ‫تثبيت‬ ‫بعدم‬ ‫خيارًا‬ ‫تَعطي‬ ‫عندما‬‫اختيارية‬‫ستكون‬ ‫أيها‬ ‫عن‬ ‫العلمة‬ ‫ترفع‬ ‫ل‬ ، ‫خصوصًا‬ ،‫لَك‬ ‫مفيدا‬ ِ‫المكوّنات‬ ‫هذه‬ ‫بعض‬IDLE. ‫حهوالي‬ ّ‫أنه‬ ‫المهثيرة‬ ‫الحقيقهة‬70.‫وينهدوز‬ ‫مسهتعملي‬ ‫مِهن‬ ‫بيثهون‬ ِ‫برامجه‬ ‫بتحميهل‬ ‫قهام‬ ‫ممهن‬ % ْ‫عِنْدَهُم‬ ُ‫سَيكون‬ ‫تقريبا‬ ‫لينكس‬ ‫مستعملي‬ ّ‫كُل‬ ‫أن‬ ‫حيث‬ َ‫كاملة‬ َ‫صورة‬ ‫تَعطي‬ ‫ل‬ ‫هذه‬ ،‫بالطبع‬ .‫مبدئي‬ ‫بشكل‬ ‫أنظمتِهم‬ ‫على‬ ‫مثبتا‬ ‫بيثون‬ ‫ويندوز‬ ‫أوامر‬ ‫سطر‬ ‫في‬ ‫بيثون‬ ‫استخدام‬ ُ‫تَحتاج‬ ‫فإنك‬ ،‫ويندوز‬ ‫أوامر‬ ‫سطر‬ ْ‫مِن‬ ‫بيثون‬ ‫اسْتِعْمال‬ ‫على‬ ‫قادرا‬ َ‫تَكُون‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫المتغير‬ ‫لضبط‬PATH.‫صحيح‬ ‫بشكل‬ ‫هدوز‬‫لوينه‬ ‫هبة‬‫بالنسه‬2000K‫و‬XP‫و‬2003‫هى‬‫عله‬ ‫هر‬‫انقه‬ ،Control Panel -> System -> Advanced -> Environment Variables‫هى‬‫ه‬‫عل‬ ‫هغط‬‫ه‬‫اض‬ . ‫المسمّى‬ ِ‫المتغيّر‬PATH' ‫قسم‬ ‫في‬System Variables‫اختر‬ ‫ثم‬ ،'Edit‫وأضف‬ ;C:Python23‫بالطبع‬ .‫هناك‬ ‫مكتوب‬ ‫هو‬ ‫ما‬ ‫ية‬‫نها‬ ‫في‬ (‫التنصيص‬ ‫مات‬‫عل‬ ‫)بدون‬ .‫المناسب‬ ‫المجلد‬ ‫اسم‬ ‫استخدم‬ ' ‫السطر‬ ‫أضف‬ ،‫ويندوز‬ ‫نظام‬ ْ‫مِن‬ ِ‫القدم‬ ‫الصدارات‬ ‫في‬PATH=%PATH%;C: Python23‫الملف‬ ‫في‬ 'C:AUTOEXEC.BAT.(‫التنصيص‬ ‫علمات‬ ‫)بدون‬ ‫لويندوز‬ ‫بالنسبة‬NT‫الملف‬ ‫استخدم‬ ،AUTOEXEC.NT. ‫الخلصة‬ ‫تُثبتهها‬ ْ‫ه‬‫أَن‬ ‫فيُمْكِنُهك‬ ‫وإل‬ .َ‫نظهامِك‬ ‫علهى‬ ‫مثبّتهة‬ ‫بيثهون‬ ‫غالبها‬ ‫لينكهس‬ ‫لنظهام‬ ‫بالنسهبة‬ ‫تم‬‫ي‬ ،‫ندوز‬‫وي‬ ‫ام‬‫ه‬‫لنظ‬ ‫بالنسهبة‬ .‫تك‬‫توزيع‬ ‫مهع‬ ُ‫تَجيء‬ ‫الهتي‬ ‫الحهزم‬ ِ‫إدارة‬ َ‫ه‬‫برامج‬ ‫ستخدام‬‫با‬ ‫ومن‬ .‫عليه‬ ‫مرتين‬ ‫وبالنقر‬ ‫البرنامج‬ ‫ملف‬ ‫تَحميل‬ ‫خلل‬ ‫من‬ ‫كذلك‬ ‫بسهولة‬ ‫بيثون‬ ‫تثبيت‬ .‫نظامك‬ ‫على‬ ‫مثبتة‬ ‫بيثون‬ ّ‫أن‬ ‫سنفترض‬ ،‫فصاعدًَا‬ ‫اﻵن‬ .‫بيثون‬ ‫على‬ ‫الول‬ ‫برنامجَنا‬ ُ‫سَنَكْتب‬ ،‫القادم‬ ‫الفصل‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|18
  • 20.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬3‫الولى‬ ‫الخطوات‬ . ‫المحتويات‬ ‫قائمة‬ ‫المحث‬ ‫استخدام‬ ‫محرر‬ ‫اختيار‬ ‫مصدري‬ ‫ملف‬ ‫استخدام‬ ‫الخرْج‬ ‫يعمل‬ ‫كيف‬ ‫تنفيذية‬ ‫بيثون‬ ‫برامج‬ ‫المساعدة‬ ‫على‬ ‫الحصول‬ ‫الخلصة‬‫مقدمة‬ ‫مقدمـــة‬ َ‫ه‬‫كَيف‬ ‫اﻵهن‬ ‫َنَرى‬‫ه‬‫س‬‫التقليهدي‬ ‫البرنامهج‬ ‫نشهغل‬'Hello World'‫بيثهون‬ ‫فهي‬.‫ههذا‬ ‫َيُعلّمُك‬‫ه‬‫س‬ ‫بيثون‬ َ‫برامج‬ ‫وتشغّل‬ ،‫وتحفظ‬ ،ُ‫تَكْتب‬ َ‫كَيف‬. ‫التفاعلي‬ ‫المفسر‬ ‫محث‬ ‫استخدام‬ ‫برنامجِكَ؛‬ ‫لتشغيل‬ ‫بيثون‬ ‫لستخدام‬ ‫طريقتين‬ ‫هناك‬)‫خلل‬ ‫من‬ ‫طرفية‬ ‫أي‬(‫مصدري‬ ‫ملف‬ ‫استخدام‬ ‫أو‬.‫الطريقتين‬ ‫كلتا‬ ُ‫نَستعمل‬ َ‫كَيف‬ ‫اﻵن‬ ‫وسَنَرى‬. ‫المحـث‬ ‫استخدام‬ ‫كلمهة‬ ‫بكتابهة‬ ‫الهوامر‬ ‫سهطر‬ ‫فهي‬ ‫المفسهر‬ ‫ابهدأ‬python‫اكتهب‬ ‫واﻵهن‬ .‫الصهَّدَفة‬ ‫محهث‬ ‫فهي‬ print 'Hello World'‫بزر‬ ‫عة‬‫متبو‬Enter‫مات‬‫الكل‬ ‫ترى‬ ‫أن‬ ‫فترض‬‫ي‬ .Hello World .‫كناتج‬ ‫المتغيّهر‬ ‫دليهل‬ ‫ضهبطت‬ ‫إذا‬ ‫الهوامر‬ ‫سهطر‬ ‫مهن‬ ‫المفسهر‬ ‫تشهغل‬ ‫أن‬ ‫يُمْكنهك‬ ،‫وينهدوز‬ ‫لمسهتخدمي‬ PATHَ‫برنهامج‬ َ‫تَسهتعمل‬ ْ‫ه‬‫أَن‬ ‫يُمْكِنُهك‬ ،‫ذلهك‬ ‫عهن‬ ‫بهديلًا‬ ‫أو‬ .‫ملئم‬ ‫بشهكل‬IDLE. IDLE ‫على‬ ‫انقر‬ .‫متكاملة‬ ‫تطوير‬ ِ‫بيئة‬ ‫عن‬ ‫عبارة‬Start -> Programs -> Python 2. 3 -> IDLE (Python GUI‫يستعملوا‬ ‫أن‬ ‫يمكنهم‬ ِ‫لينكس‬ ‫مستخدمي‬ .(IDLE.‫أيضًا‬ .‫بيثون‬ ‫إفادات‬ ‫إدخال‬ ‫محث‬ ‫هي‬ >>> ‫العلمة‬ ‫هذه‬ ‫أن‬ ‫لحظ‬ ‫مثال‬3.1‫بيثون‬ ‫مفسر‬ ‫محث‬ ‫.استعمال‬ $ python Python 2.3.4 (#1, Oct 26 2004, 16:42:40) ‫للفهرس‬ ‫عودة‬‫المحـث‬ ‫استخدام‬|19
  • 21.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> print 'hello world' hello world >>> ‫هو‬ ‫أدخلته‬ ‫ما‬ .‫فورًا‬ ‫السطر‬ َ‫ناتج‬ ‫تعطيك‬ ‫بيثون‬ ّ‫أن‬ ْ‫لحظ‬‫إفادة‬‫نستخدم‬ .‫واحدة‬ ‫بيثون‬print َّ‫النَص‬ ‫أعطيناها‬ ،‫هنا‬ .‫لها‬ ‫نعطيها‬ ‫قيمة‬ ‫أيّة‬ ‫لطبع‬ -‫مفاجئة‬ ‫-ليست‬Hello World‫طُبِع‬ ‫وقد‬ .‫الشاشة‬ ‫على‬ ‫فورًا‬ ‫بيثون‬ ‫محث‬ ‫من‬ ‫الخروج‬ ‫كيفية‬ ‫ل‬‫مفتهاحي‬ ‫علهى‬ ‫اضهغط‬ ‫البرنامهج‬ ‫محهث‬ ‫مهن‬ ‫لخُهرُوج‬Ctrl+dُ‫تَسهتعمل‬ ‫كنهت‬ ‫إذا‬IDLE‫أَو‬ ‫مفتهاح‬ ‫اضهغط‬ ،‫وينهدوز‬ ‫أوامهر‬ ‫سهطر‬ ‫حالهة‬ ‫فهي‬ .‫لينكهس/بيإسهدي‬ ‫صهددَفَة‬ ‫تسهتخدم‬Ctrl+z ‫بمفتاح‬ ‫متبوعة‬Enter. ‫محــرر‬ ‫اختيـار‬ ِ‫الملفات‬ ‫لكِتابَة‬ ‫محرّرًا‬ ُ‫نَحتاج‬ ،ِ‫المصدرية‬ ِ‫الملفات‬ ‫في‬ ‫بيثون‬ ِ‫برامج‬ ‫لكِتابة‬ ‫نَنتقل‬ ْ‫أَن‬ َ‫قَبْل‬ ُ‫تار‬‫تَخ‬ ‫ما‬‫ك‬ َ‫حرر‬‫الم‬ َ‫تار‬‫تخ‬ ْ‫ن‬َ‫أ‬ ُ‫ب‬ِ‫يَج‬ .‫ية‬‫الهم‬ ‫ية‬‫غا‬ ‫في‬ ‫مر‬‫أ‬ ِ‫حرّر‬ُ‫الم‬ ‫يار‬‫اخت‬ .ِ‫صدرية‬‫الم‬ ‫رحلتَك‬ ُ‫ويَجْعل‬ ،‫بسهولة‬ ‫بيثون‬ ‫برامج‬ ‫كتابة‬ ‫على‬ ‫يُساعدُك‬ ‫الجيد‬ ‫المحرّر‬ .‫تَشتريها‬ ‫سيارة‬ .‫أمانًا‬ ‫وأكثر‬ ‫بكثير‬ ‫أسرع‬ ‫بطريقة‬ َ‫غايتِك‬ ‫إلى‬ َ‫لتَصِل‬ ‫ويُساعدُك‬ َ‫أكثر‬ ً‫مريحة‬ ‫ههي‬ ‫جهدًا‬ ِ‫الساسهية‬ ِ‫المتطلبهات‬ ‫إحهدى‬‫الهتركيب‬ ‫إبراز‬)syntax highlighting‫حيهث‬ ( ‫أن‬ ‫لك‬ ‫يتسنى‬ ‫حتى‬ ‫المختلفة‬ ‫بيثون‬ ِ‫برنامج‬ ‫أجزاء‬ ‫تلون‬‫تَرى‬‫كيفية‬ ُ‫وتَتصوّر‬ َ‫نامجَك‬‫بر‬ .‫عمله‬ ‫استعمال‬ ‫عليك‬ ُ‫أَقترح‬ ،‫ويندوز‬ ُ‫تَستعمل‬ ‫كنت‬ ‫إذا‬IDLE‫إن‬ ‫حيث‬ .IDLE‫بإبراز‬ ‫بعمل‬ ‫يقوم‬ ‫داخهل‬ َ‫برامجِكه‬ ‫تشهغيل‬ ‫مهن‬ ‫تمكينهك‬ ‫مثهل‬ ‫وأكهثر‬ ‫الهتركيب‬IDLE.‫أخهرى‬ ِ‫أشهياء‬ ‫ضهمن‬ :‫خاصّة‬ ‫مُلحظة‬ْ‫ستعمل‬ ‫ت‬ ‫ل‬Notepad‫التركيب‬ ‫بإبراز‬ ‫تقوم‬ ‫ل‬ ‫لنها‬ ‫سيئ‬ ‫اختيار‬ ‫فهي‬ ، ) ِّ‫ه‬‫النَص‬ ‫إزاحهة‬ ُ‫تَهدْعم‬ ‫ل‬ ‫أنهه‬ ‫ذلهك‬ ‫مهن‬ ‫والههم‬indentation(‫البهادءة‬ ‫المسهافات‬ ‫تنظيهم‬ ‫أي‬ ، ‫مثل‬ ‫الجيدة‬ ‫المحرّرات‬ .‫لحقًا‬ ‫سَنَرى‬ ‫كما‬ ‫حالتِنا‬ ‫في‬ ‫جدًا‬ ُ‫مهم‬ ‫وهو‬IDLE‫)وأيضًا‬VIM( .‫ذلك‬ ‫عمَل‬ ‫على‬ ‫آليًا‬ ‫ستساعدك‬ ‫كنهت‬ ‫وإذا‬ .‫منهها‬ ‫لتختهار‬ ‫المحهرّرِات‬ ْ‫ه‬‫مِن‬ ‫الكهثير‬ ‫فلهديك‬ ‫لينكهس/بيإسهدي‬ ُ‫تَسهتعمل‬ ‫كنهت‬ ‫إذا‬ ‫تستعمل‬ ‫أنك‬ ‫المؤكد‬ ‫فمن‬ ،‫خبيرا‬ ‫مبرمجا‬VIM‫أو‬Emacs‫اثنان‬ ‫بأنهما‬ ‫للقول‬ ‫حاجة‬ ‫ول‬ . ُ‫أَستعمل‬ ‫شخصيًا‬ ‫أنا‬ .‫بيثون‬ ِ‫برامج‬ ‫لكِتابَة‬ ‫استعمالهما‬ ‫من‬ ُ‫سَتَستفيد‬ ‫و‬ ‫القوى‬ ‫المحرّرات‬ ْ‫مِن‬ ‫للفهرس‬ ‫عودة‬‫محــرر‬ ‫اختيـار‬|20
  • 22.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ VIMَ‫تَستعمل‬ ْ‫أَن‬ ‫يُمْكِنُك‬ ‫حينئذ‬ ،‫مبتدئا‬ ‫مبرمجِا‬ ‫كنت‬ ‫إذا‬ .‫برامجِي‬ ‫لغلب‬Kate‫وهي‬ ، ‫لتَعَلّم‬ ‫وقت‬ ‫قضاء‬ ‫في‬ ‫راغبا‬ ‫كنت‬ ‫إذا‬ ‫ما‬ ‫حالة‬ ‫في‬ .ِ‫المفضّلة‬ ‫أدواتي‬ ‫إحدى‬VIM‫أَو‬Emacs، ‫في‬ ‫َك‬‫ل‬ ‫جدًا‬ ‫يدا‬‫مف‬ ‫لك‬‫ذ‬ ُ‫سَيَكُون‬ ‫يث‬‫ح‬ ‫ما‬‫منه‬ ‫أي‬ ‫سْتِعْمال‬‫ا‬ ‫ّم‬‫تَتعل‬ ‫أن‬ ‫شدة‬‫ب‬ ‫صيك‬‫أَو‬ ‫فإني‬ .‫البعيد‬ ‫المدى‬ ‫انظهر‬ ،‫المحهررات‬ ‫مهن‬ ‫الهخرى‬ ‫الخيهارات‬ ‫اسْتِكْشهاف‬ ُ‫تُريهد‬ ‫تهزال‬ ‫مها‬ ‫كنهت‬ ‫إذا‬َ‫الشاملة‬ َ‫القائمة‬ ‫بيثون‬ ‫لمحرّرات‬‫طالع‬ ،‫لبايثون‬ ِ‫متكاملة‬ ‫تطوير‬ ‫بيئة‬ ‫أيضًا‬ َ‫تَختار‬ ْ‫أَن‬ ‫يُمْكِنُك‬ .‫خيارك‬ ‫وحدد‬ ‫التطوير‬ ‫لبيئات‬ َ‫الشاملة‬ َ‫القائمة‬.‫التفاصيل‬ ‫من‬ ‫للمزيد‬ ‫بيثون‬ ِ‫تدعم‬ ‫التي‬ ‫مرحَا‬ َ‫أكثر‬ ‫بيثون‬ ‫برامج‬ ‫كتابة‬ َ‫يَجْعل‬ ‫فهو‬ ،‫جيدا‬ ‫محرّرا‬ ْ‫اختر‬ ً‫رجاء‬ ،‫أخرى‬ ً‫مرة‬ ُ‫أُكرّر‬ .‫وسهولة‬ ‫مصدري‬ ‫ملف‬ ‫استخدام‬ ‫و‬‫تكتبه‬ ‫مج‬‫برنا‬ ‫أول‬ ،‫يدة‬‫جد‬ ‫جة‬‫برم‬ ‫لغة‬ ‫مت‬‫تعل‬ ‫ما‬‫كل‬ ‫أنه‬ ‫يد‬‫تقل‬ ‫ناك‬‫ه‬ .‫البرمجة‬ ‫لى‬‫إ‬ ‫عد‬‫لن‬ ‫اﻵن‬ ' ‫برنامهج‬ ‫ههو‬ ‫وتشهغله‬Hello World' ‫يقهول‬ ‫أن‬ ‫ههو‬ ‫يفعلهه‬ ‫مها‬ ‫كهل‬ ‫'؛‬Hello World‫عنهد‬ ' .‫تشغيله‬ ‫باسم‬ ‫واحفظه‬ ‫التالي‬ ‫البرنامج‬ ‫أدخل‬ ،‫المفضل‬ ‫محررك‬ ‫شغل‬helloworld.py ‫مثال‬3.2‫مصدري‬ ‫ملف‬ ‫استخدام‬ . #!/usr/bin/python # Filename : helloworld.py print 'Hello World' :‫المصدر‬ ‫)الملف‬code/helloworld.py( ‫الهمر‬ ‫كتابهة‬ ‫ثهم‬ (‫دوس‬ ‫محهث‬ ‫أو‬ ‫لينكهس‬ ‫)طرفيهة‬ ‫الصهدفة‬ ‫فتهح‬ ‫طريهق‬ ‫عهن‬ ‫البرنامهج‬ ‫ههذا‬ ‫شهغل‬ python helloworld.py‫تسهتخدم‬ ‫كنهت‬ ‫إذا‬ .IDLE‫قائمهة‬ ‫فاسهتخدم‬Edit -> Run Script‫المفاتيح‬ ‫لوحة‬ ‫اختصار‬ ‫أو‬Ctrl+F5.‫أدناه‬ ‫مبين‬ ‫الخرْج‬ . ‫الخرْج‬ $ python helloworld.py Hello World ‫للفهرس‬ ‫عودة‬‫مصدري‬ ‫ملف‬ ‫استخدام‬|21
  • 23.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫لك‬ ‫برنامج‬ ‫أول‬ ‫تشغيل‬ ‫في‬ ‫نجحت‬ ‫لقد‬ ،‫لك‬ ‫فتهانينا‬ ،‫أعله‬ ‫مبين‬ ‫هو‬ ‫كما‬ ‫الناتج‬ ‫على‬ ‫حصلت‬ ‫إذا‬ .‫بيثون‬ ‫في‬ ‫المذكور‬ ‫البرنامج‬ ‫كتابة‬ ‫يرجى‬ ،‫ما‬ ‫خطأ‬ ‫على‬ ‫حصلت‬ ‫حال‬ ‫وفي‬‫بالضبط‬‫أعله‬ ‫مبين‬ ‫هو‬ ‫كما‬ ‫الهحرف‬ ‫بيهن‬ ‫)التفريهق‬ ‫الهحرف‬ ‫لحالهة‬ ‫حساسهة‬ ‫بيثهون‬ ‫أن‬ ‫لحهظ‬ .‫أخهرى‬ ‫مهرة‬ ‫البرنامهج‬ ‫وتشهغيل‬ ‫كلمة‬ ‫مثل‬ (‫والصغيرة‬ ‫الكبيرة‬ ‫اللتينية‬print‫تساوي‬ ‫ل‬Print‫الصغير‬ ‫الحرف‬ ‫-لحظ‬p‫في‬ ‫الكبير‬ ‫الحرف‬ ‫و‬ ‫الولى‬ ‫الكلمة‬P‫الحرف‬ ‫قبل‬ ‫مسافات‬ ‫وجود‬ ‫عدم‬ ‫من‬ ‫تأكد‬ ،‫أيضا‬ -‫الخيرة‬ ‫في‬ .-‫لحق‬ ‫وقت‬ ‫في‬ ‫مهم‬ ‫أمر‬ ‫هذا‬ ‫لماذا‬ ‫-سنرى‬ ‫سطر‬ ‫كل‬ ‫في‬ ‫الول‬ ‫يعمل‬ ‫كيف‬ ‫البرنامهج‬ ‫مهن‬ ‫سهطرين‬ ‫أول‬ ‫فهي‬ ‫ننظهر‬ ‫دعونها‬.‫ههذه‬ ‫تسهمى‬‫تعليقهات‬)comments(‫شهيء‬ ‫أي‬ ، ‫الرمز‬ ‫يمين‬ ‫على‬ ‫مكتوب‬#‫البرنامج‬ ‫هذا‬ ‫لقارئ‬ ‫مفيد‬ ‫أمر‬ ‫الساس‬ ‫في‬ ‫هو‬ ‫و‬ ‫تعليق‬ ‫هو‬. ‫خاصهة‬ ‫حالهة‬ ‫وههو‬ ‫هنها‬ ‫الهول‬ ‫السهطر‬ ‫باسهتثناء‬ ‫التعليقهات‬ ‫تسهتخدم‬ ‫ل‬ ‫بيثهون‬.‫تسهمى‬ ‫وههي‬‫سهطر‬ ‫شهابانغ‬)shebang(‫عهن‬ ‫عبهارة‬ ‫المصهدري‬ ‫الملهف‬ ‫مهن‬ ‫حرفيهن‬ ‫أول‬ ‫يكهون‬ ‫عنهدما‬!#‫متبوعها‬ ‫لينكهس‬ ‫يخهبر‬ ‫ههذا‬ ‫إن‬‫ه‬‫ف‬ ‫مج‬‫برنا‬ ‫ار‬‫ه‬‫بمس‬/‫المفسهر‬ ‫ههذا‬ ‫مهع‬ ‫يعمهل‬ ‫أن‬ ‫يجهب‬ ‫مج‬‫البرنا‬ ‫ههذا‬ ‫أن‬ ‫يهونكس‬ )interpreter(‫عنهد‬‫تنفيهذه‬.‫فهي‬ ‫بالتفصهيل‬ ‫ههذا‬ ‫يُشهرح‬ ‫وسهوف‬‫التالي‬‫ه‬‫الفصله‬.‫بهأنه‬ ‫علمها‬ ‫الوامر‬ ‫سطر‬ ‫على‬ ‫مباشرة‬ ‫المفسر‬ ‫تحديد‬ ‫خلل‬ ‫من‬ ‫منصة‬ ‫أي‬ ‫على‬ ‫البرنامج‬ ‫تشغيل‬ ‫دائما‬ ‫يمكنك‬ ‫المر‬ ‫مثل‬python helloworld.py. ‫ههام‬ ‫أمر‬ ‫وهذا‬ ،‫البرنامج‬ ‫في‬ ‫المهمة‬ ‫التفاصيل‬ ‫بعض‬ ‫لشرح‬ ‫برنامجك‬ ‫في‬ ‫بحنكة‬ ‫التعليقات‬ ‫استخدم‬ ‫البرنامج‬ ‫به‬ ‫يقوم‬ ‫ما‬ ‫فهم‬ ‫بسهولة‬ ‫يمكن‬ ‫بحيث‬ ‫برنامجك‬ ‫لقارئ‬ ‫مفيد‬.‫الشخص‬ ‫هذا‬ ‫إن‬ ،‫تذكر‬ ‫أشهر‬ ‫ستة‬ ‫بعد‬ ‫نفسك‬ ‫أنت‬ ‫يكون‬ ‫أن‬ ‫يمكن‬! ‫متبوعة‬ ‫التعليقات‬‫بإفادة‬‫النص‬ ‫بطباعة‬ ‫فقط‬ ‫تقوم‬ ،‫بيثون‬'Hello World'.‫كلمة‬print‫هي‬ ‫عامل‬ ‫الحقيقة‬ ‫في‬)operator(‫و‬'Hello World'‫سلسلة‬ ‫باعتبارها‬ ‫إليها‬ ‫يشار‬)string(، ‫لحقا‬ ‫بالتفصيل‬ ‫المصطلحات‬ ‫هذه‬ ‫أمر‬ ‫سنبحث‬ ،‫تقلق‬ ‫ل‬. ‫تنفيذية‬ ‫بيثون‬ ‫برامج‬ ‫بعض‬ ‫لديهم‬ ‫ويندوز‬ ‫مستخدمو‬ ‫يكون‬ ‫قد‬ ‫ولكن‬ ‫لينكس/يونكس‬ ‫مستخدمي‬ ‫على‬ ‫إل‬ ‫هذا‬ ‫ينطبق‬ ‫ل‬ ‫باستخدام‬ ‫يذ‬‫التنف‬ ‫صلحية‬ ‫مج‬‫البرنا‬ ‫طاء‬‫إع‬ ‫نا‬‫علي‬ ،‫أول‬ .‫البرنامج‬ ‫من‬ ‫الول‬ ‫السطر‬ ‫عن‬ ‫ضول‬‫الف‬ ‫المر‬chmod‫ثم‬‫تشغيل‬.‫المصدري‬ ‫البرنامج‬ $ chmod a+x helloworld.py ‫للفهرس‬ ‫عودة‬‫تنفيذية‬ ‫بيثون‬ ‫برامج‬|22
  • 24.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ $ ./helloworld.py Hello World ‫أمر‬chmod‫الصلحية‬ ‫باعطاء‬ ‫للتنفيذ‬ ‫قابل‬ ‫لجعله‬ ‫الملف‬ ‫تصاريح‬ ‫حالة‬ ‫لتغيير‬ ‫هنا‬ ‫يستخدم‬ ‫لف‬‫الم‬ ‫قع‬‫مو‬ ‫يد‬‫تحد‬ ‫يق‬‫طر‬ ‫عن‬ ‫شرة‬‫مبا‬ ‫مج‬‫البرنا‬ ‫فذ‬‫نن‬ ‫نا‬‫فإن‬ ‫عدها‬‫وب‬ .‫ظام‬‫الن‬ ‫ستخدمي‬‫م‬ ‫يع‬‫لجم‬ ‫نستخدم‬ .‫المصدري‬/ ..‫الحالي‬ ‫الدليل‬ ‫في‬ ‫يقع‬ ‫البرنامج‬ ‫هذا‬ ‫أن‬ ‫إلى‬ ‫لتشير‬ ‫إلى‬ ‫لف‬‫الم‬ ‫تسمية‬ ‫إعادة‬ ‫فقط‬ ‫يمكنك‬ ،‫متعة‬ ‫كثر‬‫أ‬ ‫المور‬ ‫لجعل‬helloworld‫على‬ ‫وتشغيله‬ ‫النحهو‬/ .helloworld‫باسهتخدام‬ ‫البرنامهج‬ ‫تشهغيل‬ ‫عليهه‬ ‫أن‬ ‫يعهرف‬ ‫النظهام‬ ‫لهن‬ ‫وسهيعمل‬ .‫المصدر‬ ‫الملف‬ ‫من‬ ‫الول‬ ‫السطر‬ ‫في‬ ‫المحدد‬ ‫المفسر‬ ‫كنت‬ ‫لو‬ ‫ماذا‬ ‫ولكن‬ ،‫البرنامج‬ ‫مسار‬ ‫بالضبط‬ ‫تعرف‬ ‫دمت‬ ‫ما‬ ‫البرنامج‬ ‫تشغيل‬ ‫على‬ ‫قادر‬ ‫اﻵن‬ ‫أنت‬ ‫تخزيهن‬ ‫خلل‬ ‫مهن‬ ‫ذلهك‬ ‫تفعهل‬ ‫أن‬ ‫يمكنهك‬ ‫مكهان؟‬ ‫أي‬ ‫مهن‬ ‫البرنامهج‬ ‫تشهغيل‬ ‫علهى‬ ‫القهدرة‬ ‫تريهد‬ ‫لبيئة‬‫ا‬ ‫ير‬‫متغ‬ ‫سار‬‫م‬ ‫في‬ ‫الواردة‬ ‫الدله‬ ‫من‬ ‫واحدة‬ ‫في‬ ‫مج‬‫البرنا‬PATH‫أي‬ ‫شغيل‬‫بت‬ ‫مت‬‫ق‬ ‫ما‬‫كل‬ . ‫البيئة‬ ‫متغير‬ ‫مسار‬ ‫في‬ ‫الواردة‬ ‫الدلة‬ ‫من‬ ‫كل‬ ‫في‬ ‫البرنامج‬ ‫هذا‬ ‫عن‬ ‫يبحث‬ ‫النظام‬ ‫فإن‬ ،‫برنامج‬ PATH‫وبكل‬ ‫مكان‬ ‫كل‬ ‫في‬ ‫متاحا‬ ‫البرنامج‬ ‫هذا‬ ‫نجعل‬ ‫أن‬ ‫يمكننا‬ .‫البرنامج‬ ‫هذا‬ ‫يشغل‬ ‫ثم‬ ‫ومن‬ ‫المسار‬ ‫في‬ ‫الواردة‬ ‫الدله‬ ‫من‬ ‫واحد‬ ‫إلى‬ ‫المصدر‬ ‫الملف‬ ‫هذا‬ ‫نسخ‬ ‫بساطة‬PATH. $ echo $PATH / opt/mono/bin:/usr/local/bin:/usr/bin:/bin:/usr/X11R6/bin:/home/sw aroop/bin $ cp helloworld.py /home/swaroop/bin/helloworld $ helloworld Hello World ‫ير‬‫المتغ‬ ‫عرض‬ ‫نك‬‫يمك‬PATH‫لمر‬‫ا‬ ‫ستخدام‬‫با‬echo‫ضافة‬‫وإ‬$‫بار‬‫لخ‬ ‫ير‬‫المتغ‬ ‫سم‬‫ا‬ ‫بل‬‫ق‬ ‫أن‬ ‫نرى‬ ‫ونحن‬ .‫المتغير‬ ‫هذا‬ ‫قيمة‬ ‫نريد‬ ‫أننا‬ ‫الصدفة‬/home/swaroop/bin‫الدلة‬ ‫أحد‬ ‫هو‬ ‫المسار‬ ‫في‬PATH‫يث‬‫ح‬swaroop‫سيكون‬ .‫ظامي‬‫ن‬ ‫لى‬‫ع‬ ‫أستخدمه‬ ‫الذي‬ ‫المستخدم‬ ‫اسم‬ ‫هو‬ ‫أن‬ ‫يمكنك‬ ،‫لذلك‬ ‫كبديل‬ ‫أو‬ .‫جهازك‬ ‫على‬ ‫بك‬ ‫الخاص‬ ‫المستخدم‬ ‫لسم‬ ‫مماثل‬ ‫دليل‬ ‫عادة‬ ‫هناك‬ ‫للمتغير‬ ‫اختيارك‬ ‫من‬ ‫دليل‬ ‫تضيف‬PATH‫المر‬ ‫كتابة‬ ‫طريق‬ ‫عن‬ ‫ذلك‬ ‫يتم‬ ‫أن‬ ‫ويمكن‬ ، PATH=$PATH:/home/swaroop/mydir ‫حيث‬/'home/swaroop/mydir'‫المتغير‬ ‫إلى‬ ‫إضافته‬ ‫أريد‬ ‫الذي‬ ‫الدليل‬ ‫هو‬PATH. ‫في‬ ‫البرنامج‬ ‫تشغيل‬ ‫وتريد‬ ‫مفيدة‬ ‫سكربتات‬ ‫تكتب‬ ‫أن‬ ‫تريد‬ ‫كنت‬ ‫إذا‬ ‫جدا‬ ‫مفيدة‬ ‫الطريقة‬ ‫وهذه‬ ‫المر‬ ‫مثل‬ ‫مثلها‬ ‫الخاصة‬ ‫أوامرك‬ ‫عمل‬ ‫يشبه‬ ‫إنه‬ .‫مكان‬ ‫أي‬ ‫وفي‬ ‫وقت‬ ‫أي‬cd‫الوامر‬ ‫من‬ ‫أوغيره‬ ‫للفهرس‬ ‫عودة‬‫تنفيذية‬ ‫بيثون‬ ‫برامج‬|23
  • 25.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫دوس‬ ‫أو‬ ‫لينكس‬ ‫طرفية‬ ‫في‬ ‫تستخدمها‬ ‫التي‬ ‫تحـذيــر‬ .‫الشيء‬ ‫نفس‬ ‫تعني‬ ‫جميعها‬ ‫تطبيق‬ ‫أو‬ ‫سكريبت‬ ‫أو‬ ‫برنامج‬ ‫بيثون‬ ‫في‬ ‫المساعدة‬ ‫على‬ ‫الحصول‬ ) ‫إفهادة‬ ‫أو‬ ‫دالهة‬ ‫أي‬ ‫عهن‬ ‫سهريع‬ ‫بشهكل‬ ‫معلومهات‬ ‫إلهى‬ ‫بحاجهة‬ ‫كنهت‬ ‫إذا‬statement،‫بيثهون‬ ‫فهي‬ ( ‫استخدام‬ ‫عند‬ ‫وخصوصا‬ ‫جدا‬ ‫مفيد‬ ‫هذا‬ .‫البرنامج‬ ‫في‬ ‫المدمجة‬ ‫المساعدة‬ ‫وظيفة‬ ‫استخدام‬ ‫يمكنك‬ ‫شهغل‬ ‫المثهال‬ ‫سهبيل‬ ‫فعلهى‬ .‫المفسهر‬ ‫محهث‬help(str(‫الصهنف‬ ‫عهن‬ ‫مسهاعدة‬ ‫ههذا‬ ‫وسهيعرض‬str ‫بالتفصيل‬ ‫الطبقات‬ ‫ستشرح‬ .‫برنامجك‬ ‫في‬ ‫تستخدمه‬ (‫)سلسلة‬ ‫نص‬ ‫كل‬ ‫لتخزين‬ ‫تستخدم‬ ‫والتي‬ .‫الكائنية‬ ‫بالبرمجة‬ ‫المتعلق‬ ‫الفصل‬ ‫في‬ ‫ملحظــة‬ ‫اضغط‬q.‫المساعدة‬ ‫من‬ ‫للخروج‬ ‫استخدم‬ .‫بيثون‬ ‫في‬ ‫تقريبا‬ ‫شيء‬ ‫أي‬ ‫عن‬ ‫معلومات‬ ‫على‬ ‫الحصول‬ ‫يمكنك‬ ،‫وبالمثل‬help()‫حول‬ ‫المزيد‬ ‫لمعرفة‬ .‫نفسها‬ ‫المساعدة‬ ‫استخدام‬ ‫مثل‬ ‫عامل‬ ‫عن‬ ‫مساعدة‬ ‫على‬ ‫الحصول‬ ‫إلى‬ ‫بحاجة‬ ‫كنت‬ ‫حال‬ ‫في‬print‫البيئة‬ ‫متغير‬ ‫تحديد‬ ‫إلى‬ ‫بحاجة‬ ‫فأنت‬ ، PYTHONDOCS‫المر‬ ‫باستخدام‬ ‫لينكس/يونكس‬ ‫على‬ ‫بسهولة‬ ‫ذلك‬ ‫يتم‬ ‫أن‬ ‫ويمكن‬ .‫مناسب‬ ‫بشكل‬env. $ env PYTHONDOCS=/usr/share/doc/python-docs-2.3.4/html/ python Python 2.3.4 (#1, Oct 26 2004, 16:42:40) [GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> help('print') ‫لتحديد‬ ‫القتباس‬ ‫علمة‬ ‫استخدمت‬ ‫أني‬ ‫ستلحظ‬'print'‫أريد‬ ‫أنني‬ ‫تفهم‬ ‫أن‬ ‫لبايثون‬ ‫يمكن‬ ‫حتى‬ ' ‫حهول‬ ‫مسهاعدة‬ ‫استحضهار‬print‫اسهتخدمت‬ ‫أننهي‬ ‫علمها‬ .‫شهيء‬ ‫أي‬ ‫طباعهة‬ ‫منهه‬ ‫أطلهب‬ ‫ل‬ ‫وأننهي‬ ' ‫فيدورا‬ ‫في‬ ‫المستخدم‬ ‫المكان‬3.‫الصدارة‬ ‫أو‬ ‫للتوزيعة‬ ‫طبقا‬ ‫مختلفة‬ ‫تكون‬ ‫وقد‬ ‫الخلصة‬ ‫أنهت‬ ‫اﻵهن‬ .‫سههولة‬ ‫بكهل‬ ‫بيثهون‬ ‫برامهج‬ ‫وتشهغيل‬ ،‫وحفهظ‬ ،‫كتابهة‬ ‫علهى‬ ‫قهادرا‬ ‫اﻵهن‬ ‫تكهون‬ ‫أن‬ ‫يجهب‬ .‫بيثون‬ ‫عن‬ ‫أكثر‬ ‫مفاهيم‬ ‫نتعلم‬ ‫اﻵن‬ ‫دعنا‬ ،‫بيثون‬ ‫مستخدم‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|24
  • 26.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬4‫الساسيات‬ . ‫المحتويات‬ ‫قائمة‬ ‫الحرفية‬ ‫الثوابت‬ ‫العداد‬ ‫السلسل‬ ‫المتغيرات‬ ‫المعرف‬ ‫تسمية‬ ‫البيانات‬ ‫أنواع‬ ‫الكائنات‬ ‫الخرْج‬ ‫يعمل‬ ‫كيف‬ ‫والمنطقية‬ ‫المادية‬ ‫السطور‬ ‫الزاحة‬ ‫الخلصة‬ ' ‫طباعهة‬ ‫مجهرد‬Hello World‫مهن‬ ‫أكهثر‬ ‫تفعهل‬ ‫أن‬ ‫تريهد‬ ‫ههل‬ ‫كهذلك؟‬ ‫أليهس‬ ،‫يكفهي‬ ‫ل‬ ‫فقهط‬ ' ‫في‬ ‫هذا‬ ‫نحقق‬ ‫أن‬ ‫يمكننا‬ .‫منها‬ ‫شيء‬ ‫على‬ ‫والحصول‬ ‫معالجتها‬ ‫و‬ ،‫المدخلت‬ ‫بعض‬ ‫أخذ‬ ‫تريد‬ ‫ذلك؛‬ .‫والمتغيرات‬ ‫الثوابت‬ ‫باستخدام‬ ‫بيثون‬ ‫الحرفية‬ ‫الثوابت‬ ‫العدد‬ ‫الحرفي‬ ‫الثابت‬ ‫على‬ ‫المثلة‬ ‫من‬5‫أو‬ ،1.23‫أو‬ ،9.25e-3‫مثل‬ ‫سلسلة‬ ‫أو‬ ،'‫سلسلة‬ ‫هذه‬' ‫أو‬"It's a string"!.‫حرفيهة‬ ‫تسهمى‬ ‫وههذه‬)literal(‫لنهها‬‫حرفيهة‬‫قيمتهها‬ ‫تسهتخدم‬ ‫وأنهت‬ ، ‫الحرفيهة‬.‫الرقهم‬2‫ابت‬‫ه‬‫ث‬ ‫هو‬‫ف‬ ‫خر؛‬‫آ‬ ‫شهيء‬ ‫ول‬ ‫ما‬‫دائ‬ ‫سه‬‫نف‬ ‫ثل‬‫يم‬)constant(‫لن‬ ‫تتغيهر‬ ‫أن‬ ‫يمكهن‬ ‫ل‬ ‫قيمتهه‬.‫حرفيهة‬ ‫ثهوابت‬ ‫بأنهها‬ ‫إليهها‬ ‫يشهار‬ ‫كلهها‬ ‫فههذه‬ ،‫لهذلك‬)lliteral constants.( ‫العـــداد‬ ‫ا‬) ‫هحيحة‬‫ه‬‫ص‬ ‫هداد‬‫ه‬‫أع‬ -:‫هواع‬‫ه‬‫أن‬ ‫هة‬‫ه‬‫أربع‬ ‫هون‬‫ه‬‫بيث‬ ‫هي‬‫ه‬‫ف‬ ‫هداد‬‫ه‬‫لع‬integers‫هة‬‫ه‬‫طويل‬ ‫هحيحة‬‫ه‬‫ص‬ ‫هداد‬‫ه‬‫أع‬ ،( )long integers) ‫عشهههرية‬ ‫وكسهههور‬ ،(floating point‫مركّبهههة‬ ‫وأعهههداد‬ ( )complex numbers.( ‫مثل‬ ‫الصحيحة‬ ‫العداد‬2.‫فقط‬ ‫صحيح‬ ‫عدد‬ ‫هي‬ ‫التي‬ ‫للفهرس‬ ‫عودة‬‫العـــداد‬|25
  • 27.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫أكبر‬ ‫ولكنها‬ ‫الصحيحة‬ ‫العداد‬ ‫مثل‬ ‫الطويلة‬ ‫الصحيحة‬ ‫العداد‬ ) ‫العشهرية‬ ‫الكسهور‬floating point‫أو‬ (‫العشهرية‬‫مثهل‬ ،‫اختصهارا‬3.23‫و‬52.3E-4. ‫الرمز‬E‫أس‬ ‫يعني‬10‫الحالة‬ ‫هذه‬ ‫في‬ .52.3E-4‫تساوي‬52.3*10-4 . ‫مثل‬ ‫المركّبة‬ ‫العداد‬-)5+4j(‫و‬)2.3-4.6j( ‫السـلسـل‬ ‫ا‬) ‫لسلسلة‬string‫هي‬ (‫تتابع‬‫من‬‫المحارف‬.‫الكلمات‬ ‫من‬ ‫مجموعة‬ ‫مجرد‬ ‫ببساطة‬ ‫السلسل‬ . ‫لهذلك‬ ،‫تكتبهها‬ ‫الهتي‬ ‫بيثهون‬ ‫برامهج‬ ‫كهل‬ ‫فهي‬ ‫تقريبها‬ ‫السلسهل‬ ‫ستسهتخدم‬ ‫أنهك‬ ‫لهك‬ ‫أضهمن‬ ‫اد‬‫ه‬‫أك‬ :‫بيثون‬ ‫في‬ ‫السلسل‬ ‫استخدام‬ ‫كيفية‬ ‫وإليك‬ .‫التالي‬ ‫الجزء‬ ‫إلى‬ ‫النتباه‬ ‫عليك‬ •) ‫المفردة‬ ‫التنصيص‬ ‫علمات‬ ‫استخدام‬'( ‫مثهل‬ ‫تنصهيص‬ ‫علمهتي‬ ‫بيهن‬ ‫بوضهعها‬ ‫سلسهلة‬ ‫تحديهد‬ ‫يمكنهك‬'‫جملهة‬ ‫'ههذه‬‫مثهل‬ ‫الفراغهات‬ ‫جميهع‬ .‫هي‬ ‫كما‬ ‫تبقى‬ ‫التبويب‬ ‫وعلمات‬ ‫المسافات‬ ) ‫المزدوجة‬ ‫التنصيص‬ ‫علمات‬ ‫استخدام‬"( ‫مثل‬ .‫المفردة‬ ‫التنصيص‬ ‫علمات‬ ‫في‬ ‫كما‬ ‫تماما‬ ‫تعمل‬ ‫المزدوجة‬ ‫التنصيص‬ ‫علمات‬ ‫ضمن‬ ‫الجمل‬ "What's your name"? •) ‫الثلثية‬ ‫التنصيص‬ ‫علمة‬ ‫استخدام‬'''‫أو‬"""( ‫استخدام‬ ‫ويمكنك‬ .‫الثلثية‬ ‫التنصيص‬ ‫علمات‬ ‫باستخدام‬ ‫السطر‬ ‫متعددة‬ ‫سلسل‬ ‫تحديد‬ ‫يمكنك‬ ‫مثل‬ .‫الثلثية‬ ‫التنصيص‬ ‫علمة‬ ‫ضمن‬ ‫بحرية‬ ‫والمزدوجة‬ ‫المفردة‬ ‫التنصيص‬ ‫علمة‬ '''This is a multi-line string. This is the first line. This is the second line. "What's your name?," I asked. He said "Bond, James Bond." ''' ) ‫الخلوص‬ ‫تتابعات‬Escape Sequences( ) ‫ية‬‫فرد‬ ‫صيص‬‫تن‬ ‫مة‬‫عل‬ ‫لى‬‫ع‬ ‫توي‬‫تح‬ ‫سلة‬‫سل‬ ‫يد‬‫تر‬ ‫نك‬‫أ‬ ‫فترض‬‫ا‬'‫سلة؟‬‫السل‬ ‫هذه‬ ‫حدد‬‫ت‬ ‫يف‬‫ك‬ ،( ‫مثل‬What's your name?‫اسهتخدام‬ ‫يمكنهك‬ ‫ل‬ .'What's your name'?‫ههذا‬ ‫لهن‬ ‫التنصهيص‬ ‫علمهة‬ ‫تجعهل‬ ‫أن‬ ‫عليهك‬ ‫سهيتعين‬ ‫لهذا‬ .‫ومنتهاهها‬ ‫الجملهة‬ ‫مبهدأ‬ ‫حهول‬ ‫بيثهون‬ ‫سهيربك‬ ‫القتباس‬ ‫علمة‬ ‫عند‬ ‫انتهت‬ ‫الجملة‬ ‫أن‬ ‫بيثون‬ ‫تعتقد‬ ‫)لئل‬ ‫النص‬ ‫نهاية‬ ‫إلى‬ ‫تشير‬ ‫ل‬ ‫هذه‬ ‫المفردة‬ ‫للفهرس‬ ‫عودة‬‫الخلوص‬ ‫تتابعات‬)Escape Sequences(|26
  • 28.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫يسمى‬ ‫ما‬ ‫بمساعدة‬ ‫ذلك‬ ‫إنجاز‬ ‫يمكن‬ .(‫الولى‬‫الخلوص‬ ‫تتابع‬)escape sequence‫اجعل‬ .( ‫هكذا‬ ‫المفردة‬ ‫القتباس‬ ‫علمة‬') ‫الخلفية‬ ‫الشرطة‬ ‫-لحظ‬backslash‫تحديد‬ ‫يمكنك‬ ،‫اﻵن‬ -( ‫هكذا‬ ‫مفردة‬ ‫اقتباس‬ ‫بعلمة‬ ‫النصية‬ ‫الجملة‬'What's your name'?. ‫باستخدام‬ ‫السلسلة‬ ‫هذه‬ ‫لتحديد‬ ‫أخرى‬ ‫طريقة‬ ‫هناك‬"What's your name"?‫باستخدام‬ ‫أي‬ ‫علمهة‬ ‫اسهتخدام‬ ‫أجهل‬ ‫مهن‬ ‫خلهوص‬ ‫تتهابع‬ ‫اسهتخدام‬ ‫عليهك‬ ،‫وبالمثهل‬ .‫مزدوجهة‬ ‫تنصهيص‬ ‫علمهة‬ ‫تحديهد‬ ‫عليهك‬ ،‫كهذلك‬ .‫مزدوجهة‬ ‫تنصهيص‬ ‫بعلمهة‬ ‫محاطهة‬ ‫جملهة‬ ‫داخهل‬ ‫المزدوجهة‬ ‫التنصهيص‬ ‫الخلوص‬ ‫تتابع‬ ‫باستخدام‬ ‫ذاتها‬ ‫الخلفية‬ ‫المائلة‬ ‫الشرطة‬. ‫ا‬‫ه‬‫كم‬ ‫ثلثيهة‬ ‫تنصهيص‬ ‫علمهة‬ ‫اسهتخدام‬ ‫إمها‬ ‫يمكنهك‬ ‫سهطرين؟‬ ‫مهن‬ ‫سلسهلة‬ ‫اسهتخدام‬ ‫أردت‬ ‫لهو‬ ‫اذا‬‫ه‬‫م‬ ‫بكتابة‬ ‫الجديد‬ ‫السطر‬ ‫لمحرف‬ ‫خلوص‬ ‫تتابع‬ ‫استخدام‬ ‫يمكنك‬ ‫أو‬ ‫سابقا‬ ‫ذُكر‬n‫بدء‬ ‫إلى‬ ‫لتشير‬ ‫ههذا‬ ‫علهى‬ ‫ال‬‫ه‬‫مث‬ .‫جديهد‬ ‫سهطر‬This is the first linenThis is the second line. ‫التبويب‬ ‫علمة‬ ‫آخر؛‬ ‫مفيد‬ ‫خلوص‬ ‫تتابع‬t‫هنا‬ ‫ذكرت‬ ‫ولكني‬ ‫الخلوص‬ ‫تتابعات‬ ‫من‬ ‫العديد‬ ‫هناك‬ . .‫فقط‬ ‫منفعة‬ ‫أكثرها‬ ‫أن‬ ‫لى‬‫إ‬ ‫تشير‬ ‫سطر‬‫ال‬ ‫ية‬‫نها‬ ‫في‬ ‫ية‬‫الخلف‬ ‫شرطة‬‫ال‬ ‫أن‬ ‫هو‬ ،‫السلسل‬ ‫في‬ ‫ته‬‫ملحظ‬ ‫نا‬‫علي‬ ‫آخر‬ ‫شيء‬ ،‫فمثل‬ .‫جديد‬ ‫سطر‬ ‫إضافة‬ ‫بدون‬ ‫ولكن‬ ،‫المقبل‬ ‫السطر‬ ‫في‬ ‫مستمرة‬ ‫السلسة‬ "This is the first sentence. This is the second sentence." ‫نفسه‬ ‫هو‬"This is the first sentence. This is the second sentence." ‫الغفل‬ ‫السلسل‬ ‫تتابعات‬ ‫مثل‬ ‫خاصة‬ ‫معالجة‬ ‫أي‬ ‫عليها‬ ‫يجري‬ ‫أن‬ ‫تريد‬ ‫ل‬ ‫سلسل‬ ‫تحديد‬ ‫إلى‬ ‫حاجة‬ ‫في‬ ‫كنت‬ ‫إذا‬ ‫سلسلة‬ ‫تحديد‬ ‫فعليك‬ ،‫الخلوص‬‫غفل‬)Raw String‫الحرف‬ ‫بتقديم‬ (r‫أو‬R‫السلسلة‬ ‫قبل‬ ‫مثل‬r"Newlines are indicated by n". ‫يونيكود‬ ‫سلسل‬ ‫القومية‬ ‫بلغتك‬ ‫نص‬ ‫كتابة‬ ‫أردت‬ ‫فإذا‬ .‫العالمية‬ ‫النصوص‬ ‫لكتابة‬ ‫معيارية‬ ‫طريقة‬ ‫هي‬ ‫يونيكود‬ ‫بيثون‬ ‫فإن‬ ،‫وبالمثل‬ .‫يونيكود‬ ‫يدعم‬ ‫نصوص‬ ‫محرر‬ ‫إلى‬ ‫فستحتاج‬ ،‫الهندية‬ ‫أو‬ ‫العربية‬ ‫اللغة‬ ‫مثل‬ ‫البادئة‬ ‫إضافة‬ ‫هو‬ ‫فعله‬ ‫عليك‬ ‫ما‬ ‫كل‬ ،‫يونيكود‬ ‫نصوص‬ ‫مع‬ ‫التعامل‬ ‫لك‬ ‫تتيح‬u‫أو‬U‫قبل‬ ،‫المثال‬ ‫سبيل‬ ‫على‬ .‫النص‬u"This is a Unicode string" .. ‫تحتوي‬ ‫التي‬ ‫تلك‬ ‫وخاصة‬ ،‫النصية‬ ‫الملفات‬ ‫مع‬ ‫التعامل‬ ‫تريد‬ ‫عندما‬ ‫يونيكود‬ ‫تستخدم‬ ‫أن‬ ‫تذكر‬ .‫النجليزية‬ ‫غير‬ ‫بلغة‬ ‫نصوصا‬ ‫للفهرس‬ ‫عودة‬‫الخلوص‬ ‫تتابعات‬)Escape Sequences(|27
  • 29.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫ثابتة‬ ‫السلسل‬ ‫أنه‬ ‫إل‬ ،‫سيئا‬ ‫أمرا‬ ‫يبدو‬ ‫قد‬ ‫هذا‬ ‫أن‬ ‫ورغم‬ .‫تغييرها‬ ‫يمكنك‬ ‫ل‬ ‫السلسلة‬ ‫إنشاء‬ ‫بعد‬ ‫أنه‬ ‫يعني‬ ‫وهذا‬ ‫وقت‬ ‫في‬ ‫سنراها‬ ‫التي‬ ‫البرامج‬ ‫مختلف‬ ‫في‬ ‫قيدا‬ ‫هذا‬ ‫ليس‬ ‫لم‬ ‫سنرى‬ .‫الحقيقة‬ ‫في‬ ‫كذلك‬ ‫ليس‬ .‫لحق‬ ‫السلسل‬ ‫نصوص‬ ‫تجميع‬ ،‫المثال‬ ‫سبيل‬ ‫على‬ .‫بجمعهما‬ ‫تلقائيا‬ ‫بيثون‬ ‫فستقوم‬ ،‫جنب‬ ‫إلى‬ ‫جنبا‬ ‫سلسلتين‬ ‫وضعت‬ ‫كنت‬ ‫إذا‬' What's' 'your name'?‫إلى‬ ‫تلقائيا‬ ‫تُحول‬"What's your name"?. ++‫سي/سي‬ ‫لمبرمجي‬ ‫ملحظة‬ ) ‫للمحارف‬ ‫منفصل‬ ‫بيانات‬ ‫نوع‬ ‫يوجد‬ ‫ل‬char‫لن‬ ‫أنكم‬ ‫وأعتقد‬ ،‫له‬ ‫حاجة‬ ‫ول‬ .‫بيثون‬ ‫في‬ ( .‫تفتقدوها‬ /‫بيرل‬ ‫لمبرمجي‬ ‫ملحظة‬PHP ‫واحد‬ ‫بمعنى‬ ‫الثلثية‬ ‫أو‬ ‫المزدوجة‬ ‫أو‬ ‫المفردة‬ ‫التنصيص‬ ‫علمات‬ ‫داخل‬ ‫السلسل‬ ‫أن‬ ‫تذكر‬ .‫شكل‬ ‫بأي‬ ‫تختلف‬ ‫ول‬ ‫النمطية‬ ‫التعبيرات‬ ‫لمستخدمي‬ ‫ملحظة‬ ‫من‬ ‫للكثير‬ ‫فستحتاج‬ ‫وإل‬ .‫النمطية‬ ‫التعابير‬ ‫مع‬ ‫التعامل‬ ‫عند‬ ‫الغفل‬ ‫السلسل‬ ‫استخدام‬ ‫دائما‬ ) ‫الخلفية‬ ‫الحالة‬ ،‫المثال‬ ‫سبيل‬ ‫فعلى‬ .‫الخلوص‬ ‫تتابعات‬backreference‫يمكن‬ ( ‫باستخدام‬ ‫إليها‬ ‫الشارة‬'1'‫أو‬r'1'. ‫المتغيرات‬ ‫لتخزين‬ ‫ما‬ ‫طريقة‬ ‫الى‬ ‫بحاجة‬ ‫ونحن‬ ،‫مملًا‬ ‫أمرا‬ ‫سريعا‬ ‫يصبح‬ ‫أن‬ ‫يمكن‬ ‫فقط‬ ‫الحرفية‬ ‫الثوابت‬ ‫استخدام‬ ‫تظهر‬ ‫هنا‬ .‫ومعالجتها‬ ‫المعلومات‬‫المتغيرات‬)Variables‫من‬ ‫يظهر‬ ‫-كما‬ ‫المتغيرات‬ .‫الصورة‬ ‫في‬ ( ‫سوى‬ ‫ليست‬ ‫المتغيرات‬ .‫متغير‬ ‫باستخدام‬ ‫شيء‬ ‫أي‬ ‫تخزن‬ ‫أن‬ ‫يمكنك‬ ‫أي‬ ،‫قيمتها‬ ‫تتغير‬ ‫أن‬ ‫يمكن‬ -‫اسمها‬ ‫إلى‬ ‫تحتاج‬ ،‫الحرفية‬ ‫الثوابت‬ ‫بعكس‬ .‫المعلومات‬ ‫بعض‬ ‫تخزن‬ ‫حيث‬ ‫الحاسوب‬ ‫ذاكرة‬ ‫من‬ ‫محجوزة‬ ‫أجزاء‬ .‫أسماء‬ ‫نعطيها‬ ‫ولذا‬ ،‫المتغيرات‬ ‫هذه‬ ‫إلى‬ ‫للوصول‬ ‫ما‬ ‫طريقة‬ ‫المعرف‬ ‫تسمية‬ ‫على‬ ‫أمثلة‬ ‫هي‬ ‫المتغيرات‬‫المعرفات‬)Identifiers‫لتعريف‬ ‫تعطى‬ ‫أسماء‬ ‫هي‬ ‫المعرفات‬ ،(‫ما‬ ‫شيء‬. :‫المعرفات‬ ‫لتسمية‬ ‫اتباعها‬ ‫عليك‬ ‫القواعد‬ ‫بعض‬ ‫هناك‬ ‫للفهرس‬ ‫عودة‬‫المعرف‬ ‫تسمية‬|28
  • 30.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ (‫صغير‬ ‫أو‬ ‫كبير‬ ‫تيني‬ ‫)ل‬ ‫الهجاء‬ ‫حروف‬ ‫من‬ ‫حروفا‬ ‫يكون‬ ‫أن‬ ‫يجب‬ ‫المعرف‬ ‫من‬ ‫الول‬ ‫المحرف‬ ،'_') ‫تحتية‬ ‫شرطة‬ ‫أو‬underscore.( ،('_') ‫التحتية‬ ‫الشرطة‬ ‫أو‬ ،(‫صغيرة‬ ‫أو‬ ‫)كبيرة‬ ‫الحروف‬ ‫من‬ ‫تتكون‬ ‫أن‬ ‫يمكن‬ ‫المعرف‬ ‫اسم‬ ‫بقية‬ ) ‫الرقام‬ ‫أو‬0-9.( ‫المثال‬ ‫سبيل‬ ‫على‬ (‫صغير‬ ‫أو‬ ‫كبير‬ ‫لتيني‬ ‫)سواء‬ ‫الحرف‬ ‫لحالة‬ ‫حساسة‬ ‫المعرف‬ ‫أسماء‬ myname‫و‬myName‫ل‬‫الصغير‬ ‫الحرف‬ ‫لحظ‬ .‫يتساويان‬n‫والكبير‬ ‫الولى‬ ‫في‬N‫في‬ .‫الثانية‬ ‫المعرفات‬ ‫أسماء‬‫الصالحة‬‫مثل‬i‫و‬ ،__my_name‫و‬ ،name_23‫و‬a1b2_c3. ‫المعرفات‬ ‫أسماء‬‫الصالحة‬ ‫غير‬‫مثل‬2things‫و‬ ،this is spaced out‫و‬my-name. ‫البيانات‬ ‫أنواع‬ ‫تسمى‬ ‫القيم‬ ‫من‬ ‫مختلفة‬ ‫أنواعا‬ ‫المتغيرات‬ ‫تحمل‬ ‫أن‬ ‫يمكن‬‫البيانات‬ ‫أنواع‬‫العداد‬ ‫هي‬ ‫الساسية‬ ‫النواع‬ . ‫باستخدام‬ ‫بنا‬ ‫خاصة‬ ‫أنواع‬ ‫إنشاء‬ ‫كيفية‬ ‫سنرى‬ ‫القادمة‬ ‫الفصول‬ ‫وفي‬ .‫قبل‬ ‫من‬ ‫ناقشناها‬ ‫التي‬ ،‫والسلسل‬ ‫الصناف‬)classes.( ‫الكائنات‬ ‫أنهه‬ ‫علهى‬ ‫برنامهج‬ ‫فهي‬ ‫مسهتخدم‬ ‫شهيء‬ ‫أي‬ ‫إلهى‬ ‫تشهير‬ ‫بيثهون‬ ‫أن‬ ‫تهذكر‬‫كهائن‬)object‫وههذا‬ ،( ' ‫قول‬ ‫من‬ ‫فبدل‬ .‫عام‬ ‫وجه‬ ‫على‬ ‫مقصود‬‫الشيء‬' ‫نقول‬ '‫الكائن‬.' ‫الكائنية‬ ‫البرمجة‬ ‫لمستخدمي‬ ‫ملحظة‬ ‫أو‬ ‫العداد‬ ‫سواء‬ ،‫كائن‬ ‫عن‬ ‫عبارة‬ ‫شيء‬ ‫كل‬ ‫إن‬ ‫بمعنى‬ ،‫بقوة‬ ‫التوجه‬ ‫كائنية‬ ‫بيثون‬ ) ‫الدوال‬ ‫حتى‬ ‫أو‬ ‫النصوص‬functions.( ‫ثم‬ ‫ثم‬ ‫ملف‬ ‫في‬ ‫التالي‬ ‫المثال‬ ‫احفظ‬ .‫الحرفية‬ ‫الثوابت‬ ‫مع‬ ‫المتغيرات‬ ‫نستخدم‬ ‫كيف‬ ‫اﻵن‬ ‫سنرى‬ .‫البرنامج‬ ‫شغل‬ ‫بيثون‬ ‫برامج‬ ‫تكتب‬ ‫كيف‬ :‫هي‬ ‫بيثون‬ ‫برامج‬ ‫وتشغيل‬ ‫لحفظ‬ ‫القياسية‬ ‫الخطوات‬ ،‫فصاعدا‬ ‫اﻵن‬ ‫من‬ 1..‫المفضل‬ ‫النصوص‬ ‫محرر‬ ‫افتح‬ 2..‫المثال‬ ‫في‬ ‫كما‬ ‫البرنامج‬ ‫كود‬ ‫أدخل‬ 3.‫في‬ ‫عليها‬ ‫المتعارف‬ ‫الطريقة‬ ُ‫اتبع‬ .‫التعليق‬ ‫في‬ ‫المذكور‬ ‫بالسم‬ ‫الملف‬ ‫احفظ‬ ‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫برامج‬ ‫تكتب‬ ‫كيف‬|29
  • 31.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫بالمتداد‬ ‫بيثون‬ ‫برامج‬ ‫حفظ‬.py. 4.‫)المر‬ ‫البرنامج‬ ‫باسم‬ ‫متبوعا‬ ‫بيثون‬ ‫مفسر‬ ‫غّل‬python program.py‫أو‬ ( ‫استخدم‬IDLE‫استخدام‬ ‫ايضا‬ ‫يمكنك‬ .‫البرامج‬ ‫لتشغيل‬‫التنفيذية‬ ‫الملفات‬ ‫طريقة‬ .‫سابقا‬ ‫المذكورة‬ ‫مثال‬4.1.‫الحرفية‬ ‫والثوابت‬ ‫المتغيرات‬ ‫استخدام‬ # Filename : var.py i = 5 print i i = i + 1 print i s = '''This is a multi-line string. This is the second line.''' print s ‫الخــرْج‬ $ python var.py 5 6 This is a multi-line string. This is the second line. ‫يعمــل‬ ‫كيـف‬ ‫البرنامهج‬ ‫ههذا‬ ‫يعمهل‬ ‫كيهف‬ ‫إليهك‬.‫الحرفيهة‬ ‫الثابتهة‬ ‫القيمهة‬ ‫أسهندنا‬ ‫أول‬5‫المتغيهر‬ ‫إلهى‬i ‫المعامل‬ ‫باستخدام‬)=.(‫إفادة‬ ‫يسمى‬ ‫السطر‬ ‫هذا‬)statement(‫شيئا‬ ‫ويعين‬ ‫يبين‬ ‫لنه‬ ‫ير‬‫المتغ‬ ‫اسم‬ ‫ربطنا‬ ،‫هذه‬ ‫حالتنا‬ ‫وفي‬ ،‫به‬ ‫القيام‬ ‫ينبغي‬ ‫ما‬i‫بالقيمه‬5.‫طبعنا‬ ‫ذلك‬ ‫بعد‬ ‫قيمة‬i‫جملة‬ ‫باستخدام‬print‫التي‬-‫متوقع‬ ‫هو‬ ‫كما‬-‫الشاشة‬ ‫على‬ ‫المتغير‬ ‫قيمة‬ ‫تطبع‬. ‫أضهفنا‬ ‫ثهم‬1‫المتغيهر‬ ‫فهي‬ ‫المخزنهة‬ ‫القيمهة‬ ‫إلهى‬i‫ثانيهة‬ ‫خزنهاه‬ ‫ثهم‬.‫و‬ ،‫طبعنهاه‬ ‫ثهم‬-‫كمها‬ ‫للفهرس‬ ‫عودة‬‫بيثون‬ ‫برامج‬ ‫تكتب‬ ‫كيف‬|30
  • 32.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫نتوقع‬-‫القيمة‬ ‫على‬ ‫حصلنا‬6. ‫للمتغير‬ ‫حرفية‬ ‫سلسلة‬ ‫أسندنا‬ ،‫وبالمثل‬s‫طبعناه‬ ‫ثم‬. ‫سي‬ ‫لمبرمجي‬ ‫ملحظة‬/‫سي‬++ ‫قيمة‬ ‫إلى‬ ‫إسنادها‬ ‫بمجرد‬ ‫المتغيرات‬ ‫تستخدم‬.‫للعلن‬ ‫فلحاجة‬)declaration(‫أو‬ ‫البيانات‬ ‫نوع‬ ‫تعريف‬. ‫والمنطقية‬ ‫المادية‬ ‫السطور‬ ) ‫المهادي‬ ‫السهطر‬Physical‫مها‬ ‫ههو‬ (‫تهراه‬‫المنطقهي‬ ‫والسهطر‬ .‫البرنامهج‬ ‫تكتهب‬ ‫عنهدما‬ )Logical‫ما‬ ‫هو‬ (‫تراه‬‫كل‬ ‫أن‬ ‫ضمنا‬ ‫فترض‬‫ت‬ ‫ثون‬‫بي‬ .‫حدة‬‫وا‬ ‫فادة‬‫كإ‬ ‫ثون‬‫بي‬ (‫مه‬‫)تفه‬ ‫مادي‬ ‫سطر‬‫يقابل‬‫منطقيا‬ ‫سطرا‬. ‫المنطقهي‬ ‫السهطر‬ ‫علهى‬ ‫ال‬‫ه‬‫مث‬ ‫التاليهة‬ ‫الفهادة‬print 'Hello World'‫مكتوبها‬ ‫ان‬‫ه‬‫ك‬ ‫إذا‬ ‫؛‬ .‫مادي‬ ‫سطر‬ ‫أيضا‬ ‫فهذا‬ (‫المحرر‬ ‫في‬ ‫تراه‬ ‫)كما‬ ‫وحده‬ ‫سطر‬ ‫على‬ .‫أكثر‬ ‫مقروءا‬ ‫الكود‬ ‫يجعل‬ ‫مما‬ ‫سطر‬ ‫لكل‬ ‫واحد‬ ‫إفادة‬ ‫استعمال‬ ‫على‬ ‫بيثون‬ ‫تشجع‬ ‫ههذا‬ ‫تحديهد‬ ‫فعليهك‬ ‫واحهد‬ ‫مهادي‬ ‫سهطر‬ ‫علهى‬ ‫منطقهي‬ ‫سهطر‬ ‫مهن‬ ‫أكهثر‬ ‫تحهدد‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ) ‫المنقوطهة‬ ‫الفاصهلة‬ ‫باسهتخدام‬ ‫صهراحة‬;‫أو‬ ‫المنطقهي‬ ‫السهطر‬ ‫نهايهة‬ ‫إلهى‬ ‫تشهير‬ ‫حيهث‬ ( :‫المثال‬ ‫سبيل‬ ‫على‬ .‫الفادة‬ i = 5 print i : ‫عن‬ ‫يختلف‬ ‫ل‬ ‫عمليا‬ i = 5; print i; : ‫هكذا‬ ‫يكتب‬ ‫أن‬ ‫ويمكن‬ i = 5; print i; : ‫حتى‬ ‫أو‬ i = 5; print i ‫فإنني‬ ،‫ذلك‬ ‫ومع‬‫بقوة‬ ‫أوصي‬‫تلتزم‬ ‫أن‬‫كل‬ ‫في‬ ‫فقط‬ ‫واحد‬ ‫منطقي‬ ‫سطر‬ ‫كتابة‬ ‫حد‬ ‫وا‬ ‫مادي‬ ‫سطر‬‫السطر‬ ‫كان‬ ‫إذا‬ ‫منطقي‬ ‫سطر‬ ‫لكل‬ ‫مادي‬ ‫سطر‬ ‫من‬ ‫أكثر‬ ‫استخدم‬ . ‫يعنهي‬ ‫ههذا‬ ‫لهن‬ ‫ان‬‫ه‬‫المك‬ ‫قهدر‬ ‫المنقوطهة‬ ‫الفاصهلة‬ ‫تجنهب‬ ‫ههي‬ ‫الفكهرة‬ .‫ا‬‫ه‬‫حق‬ ‫طهويل‬ ‫المنطقهي‬ ‫للفهرس‬ ‫عودة‬‫والمنطقية‬ ‫المادية‬ ‫السطور‬|31
  • 33.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫أستخدم‬ ‫لم‬ ‫أنا‬ ،‫الحقيقة‬ ‫في‬ .‫قراءة‬ ‫أسهل‬ ‫كودا‬‫أبدا‬‫في‬ ‫المنقوطه‬ ‫الفاصله‬ ‫أرى‬ ‫حتى‬ ‫أو‬ .‫بيثون‬ ‫برنامج‬ ‫هذا‬ ‫سمى‬ .‫مادية‬ ‫أسطر‬ ‫عدة‬ ‫عبر‬ ‫يمتد‬ ‫منطقي‬ ‫سطر‬ ‫كتابة‬ ‫على‬ ‫مثال‬ ‫يلي‬ ‫فيما‬‫صل‬‫الو‬ ‫للسطر‬ ‫العمدي‬)Explicit line joining.( s = 'This is a string. This continues the string.' print s ‫الناتج‬ ‫تعطينا‬ ‫وهذه‬ This is a string. This continues the string. :‫وبالمثل‬ print i ‫مثل‬ ‫بالضبط‬ ‫هي‬ print i ‫أ‬‫المائلة‬ ‫العكسية‬ ‫الشرطة‬ ‫استخدام‬ ‫الى‬ ‫تحتاج‬ ‫ل‬ ‫بحيث‬ ‫ضمني‬ ‫افتراض‬ ‫هناك‬ ‫يكون‬ ‫حيانا‬ )backslash‫أو‬ ‫الهللية‬ ‫القواس‬ ‫المنطقي‬ ‫السطر‬ ‫يستخدم‬ ‫عندما‬ ‫الحال‬ ‫هو‬ ‫وهذا‬ .( ‫يسمى‬ ‫وهذا‬ .‫المجعدة‬ ‫أو‬ ‫المربعة‬‫للسطر‬ ‫الضمني‬ ‫الوصل‬‫هذا‬ ‫ترى‬ ‫أن‬ ‫يمكنك‬ . .‫القادمة‬ ‫الفصول‬ ‫في‬ ‫القوائم‬ ‫مستخدمين‬ ‫برامج‬ ‫نكتب‬ ‫عندما‬ ‫يعمل‬ ‫الزاحههة‬ ‫وخاصة‬ ‫بيثون‬ ‫في‬ ‫مهمة‬ ‫البيضاء‬ ‫الفراغات‬‫السطر‬ ‫بداية‬ ‫في‬‫يسمى‬ ‫ما‬ ‫هذا‬ .‫الزاحة‬) Indentation‫السطور‬ ‫بداية‬ ‫في‬ (‫التبويب‬ ‫وعلمات‬ ‫)المسافات‬ ‫البيضاء‬ ‫الفراغات‬ .( ‫لتحديد‬ ‫يستخدم‬ ‫بدوره‬ ‫والذي‬ ،‫المنطقي‬ ‫السطر‬ ‫إزاحة‬ ‫مستوى‬ ‫لتحديد‬ ‫تستخدم‬ ‫المنطقية‬ ) ‫الفادات‬ ‫من‬ ‫تجميع‬Statements.( ‫ببعضها‬ ‫المرتبطة‬ ‫الفادات‬ ‫أن‬ ‫يعني‬ ‫وهذا‬‫يجب‬‫مجموعة‬ ‫كل‬ .‫الزاحة‬ ‫نفس‬ ‫لها‬ ‫يكون‬ ‫أن‬ ‫تسمى‬ ‫التصريحات‬ ‫هذه‬ ‫من‬‫لبنة‬)block‫في‬ ‫اللبنات‬ ‫أهمية‬ ‫مدى‬ ‫على‬ ‫أمثلة‬ ‫وسنرى‬ .( ‫للفهرس‬ ‫عودة‬‫والمنطقية‬ ‫المادية‬ ‫السطور‬|32
  • 34.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫اللحقة‬ ‫الفصول‬ ‫فعلى‬ .‫أخطاء‬ ‫إلى‬ ‫تؤدي‬ ‫أن‬ ‫يمكن‬ ‫الخاطئة‬ ‫الزاحة‬ ‫أن‬ ‫وهو‬ ‫تتذكره‬ ‫أن‬ ‫عليك‬ ‫واحد‬ ‫أمر‬ :‫المثال‬ ‫سبيل‬ i = 5 print 'Value is', i # Error! Notice a single space at the start of the line print 'I repeat, the value is', i :‫الخطأ‬ ‫هذا‬ ‫يعطيك‬ ‫تشغيله‬ ‫عند‬ File "whitespace.py", line 4 print 'Value is', i # Error! Notice a single space at the start of the line ^ SyntaxError: invalid syntax ‫بيثهون‬ ‫إليهه‬ ‫أشهارت‬ ‫الهذي‬ ‫الخطهأ‬ .‫الثهاني‬ ‫السهطر‬ ‫بدايهة‬ ‫فهي‬ ‫واحهدة‬ ‫فارغهة‬ ‫مسهافة‬ ‫ثمهة‬ ‫أن‬ ‫لحهظ‬ ) ‫النحوي‬ ‫التركيب‬ ‫أن‬ ‫يخبرنا‬syntax‫على‬ ‫مكتوب‬ ‫غير‬ ‫البرنامج‬ ‫أن‬ ‫أي‬ ،‫خطأ‬ ‫البرنامج‬ ‫لهذا‬ ( ‫أنك‬ ‫هذا‬ ‫نى‬‫مع‬ .‫الصحيح‬ ‫الوجه‬‫جديدة‬ ‫إفادات‬ ‫لبنة‬ ‫بدء‬ ‫تستطيع‬ ‫ل‬‫)باستثناء‬ ‫اعتباطية‬ ‫بصورة‬ ‫اللبنات‬ ‫استخدام‬ ‫فيها‬ ‫يمكنك‬ ‫التي‬ ‫الحالت‬ .(‫الحال‬ ‫بطبيعة‬ ،‫دائما‬ ‫تستخدمها‬ ‫التي‬ ‫الرئيسية‬ ‫اللبنة‬ .‫التدفق‬ ‫في‬ ‫التحكم‬ ‫فصل‬ ‫مثل‬ ‫لحقة‬ ‫فصول‬ ‫في‬ ‫تفصيلها‬ ‫سيتم‬ ‫الجديدة‬ ‫الزاحة‬ ‫كيفية‬ ‫ل‬‫عبر‬ ‫الصحيح‬ ‫النحو‬ ‫على‬ ‫تعمل‬ ‫ل‬ ‫لنها‬ ‫للزاحة‬ ‫التبويب‬ ‫وعلمات‬ ‫المسافات‬ ‫من‬ ‫خليطا‬ ‫تستخدم‬ ‫و‬ .‫المنصهات‬ ‫مختلهف‬‫بشهدة‬ ‫أوصهي‬‫تسهتخدم‬ ‫أن‬‫واحهدة‬ ‫تبهويب‬ ‫علمهة‬‫أو‬‫أربهع‬ ‫أو‬ ‫مسهافتين‬‫لكهل‬ .‫إزاحة‬ ‫مستوى‬ ‫وتسهتخدمها‬ ‫واحهدة‬ ‫ار‬‫ه‬‫تخت‬ ‫أن‬ ‫الههم‬ .‫هذه‬ ‫الزاحهة‬ ‫اليب‬‫ه‬‫أس‬ ‫مهن‬ ‫ا‬‫ه‬‫أي‬ ‫اخهتر‬‫ضباط‬ ‫بان‬‫اسهتخدم‬ ‫أي‬ ، ‫هذا‬ ‫الزاحة‬ ‫أسلوب‬‫فقط‬. ‫الخلصة‬ ‫مثل‬ ‫متعة‬ ‫أكثر‬ ‫أشياء‬ ‫إلى‬ ‫النتقال‬ ‫يمكننا‬ ،‫الدقيقة‬ ‫التفاصيل‬ ‫من‬ ‫كثير‬ ‫على‬ ‫مررنا‬ ‫أن‬ ‫بعد‬ ‫اﻵن‬ .‫الفصل‬ ‫هذا‬ ‫في‬ ‫قرأته‬ ‫ما‬ ‫على‬ ‫تعتاد‬ ‫أن‬ ‫من‬ ‫تأكد‬ .‫الفادات‬ ‫تدفق‬ ‫في‬ ‫التحكم‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|33
  • 35.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫فصل‬5‫والتعبيرات‬ ‫العوامل‬ . ‫المحتويات‬ ‫قائمة‬ ‫مقدمة‬ ‫العوامل‬ ‫العوامل‬ ‫أسبقية‬ ‫الحساب‬ ‫ترتيب‬ ‫الرتباطية‬ ‫التعبيرات‬ ‫التعبيرات‬ ‫استخدام‬ ‫الخلصة‬ ‫مقدمـــة‬ ‫الفهادات‬ ‫أغلهب‬)statements) (‫المنطقيهة‬ ‫السهطور‬(‫علهى‬ ‫تحتهوي‬ ‫سهتكتبها‬ ‫الهتي‬‫تعهبيرات‬ )expressions). 2 + 3‫التعبيرات‬ ‫أحد‬ ‫على‬ ‫بسيط‬ ‫مثال‬. ‫ومعاملت‬ ‫عوامل‬ ‫إلى‬ ‫التعبيرات‬ ‫تنقسم‬: ‫العوامل‬)operators(‫مثل‬ ‫برمز‬ ‫تمثيلها‬ ‫ويمكن‬ ‫ما‬ ‫شيء‬ ‫بعمل‬ ‫تقوم‬ ‫وظيفة‬ ‫هي‬+‫كلمة‬ ‫أو‬ ‫خاصة‬ ‫مفتاحية‬.‫هذه‬ ‫وتسمى‬ ‫عليها‬ ‫تعمل‬ ‫لبيانات‬ ‫العوامل‬ ‫تحتاج‬‫المعاملت‬)operands.(‫ففي‬ ‫تعتبر‬ ‫الحالة‬ ‫هذه‬2‫و‬3‫معاملت‬. ‫العوامل‬ .‫واستخداماتها‬ ‫العوامل‬ ‫على‬ ‫سريعة‬ ‫نظرة‬ ‫سنأخذ‬ ‫مفيدة‬ ‫فكرة‬ ‫التعبير‬ ‫لختبار‬ ‫مثل‬ .‫تفاعليا‬ ‫المفسر‬ ‫باستخدام‬ ‫السابق‬ ‫المثال‬ ‫في‬ ‫المعطى‬ ‫التعبير‬ ‫حساب‬ ‫يمكنك‬ 2+3:‫التفاعلي‬ ‫بيثون‬ ‫مفسر‬ ‫مؤشر‬ ‫استخدم‬ >>> 2 + 3 5 >>> 3 * 5 15 >>> ‫للفهرس‬ ‫عودة‬‫العوامل‬|34
  • 36.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫جدول‬5.1.‫واستخداماتها‬ ‫الرياضية‬ ‫العوامل‬ ‫العامل‬‫السم‬‫الشرح‬‫أمثلة‬ +‫زائد‬‫عنصرين‬ ‫يجمع‬3+5‫تعطي‬8.'a' + 'b'‫تعطي‬'ab'. -‫ناقص‬ ‫عددا‬ ‫يطرح‬ ‫أو‬ ،‫سالبا‬ ‫عددا‬ ‫يعطي‬ ‫إما‬ ‫آخر‬ ‫من‬ -5.2.‫سالبا‬ ‫عددا‬ ‫تعطي‬50-24‫تعطي‬26. *‫ضرب‬ ‫تعيد‬ ‫أو‬ ‫عددين‬ ‫ضرب‬ ‫حاصل‬ ‫تعطي‬ .‫المرات‬ ‫من‬ ‫العدد‬ ‫هذا‬ ‫مكررة‬ ‫سلسلة‬ 2*3‫تعطي‬6.'la' * 3‫تعطي‬'lalala'. **‫أُس‬‫ص‬ ‫أُس‬ ‫س‬ ‫تعيد‬3**4‫تعطي‬81‫)أي‬3*3*3*3( /‫قسمة‬‫ص‬ ‫على‬ ‫س‬ ‫اقسم‬ 4/3‫تعطي‬1‫عدد‬ ‫الصحيحة‬ ‫العداد‬ ‫قسمة‬ ‫)ناتج‬ .(‫صحيح‬4.0/3‫أو‬4/3.0‫تعطي‬1. 3333333333333333 // Floor Division Returns the floor of the quotient 4//3.0‫تعطي‬1.0 %Modulo‫القسمة‬ ‫عملية‬ ‫باقي‬ ‫يعيد‬8%3‫تعطي‬2.-25.5%2.25‫تعطي‬1.5. >> ‫إزاحة‬ ‫لليسار‬ ‫البتات‬ ‫بعدد‬ ‫لليسار‬ ‫العدد‬ ‫بتات‬ ‫تزيح‬ ‫الذاكرة‬ ‫في‬ ‫يمثل‬ ‫عدد‬ ‫)كل‬ .‫المحدد‬ ‫ثنائية؛‬ ‫أرقام‬ ‫أو‬ ‫ببتات‬0‫و‬1( 2>>2‫تعطي‬8- .2‫تمثل‬10‫الزاحة‬ .‫ثنائيا‬ ‫ب‬ ‫لليسار‬2‫تعطي‬ ‫بتات‬1000‫العدد‬ ‫تمثل‬ ‫والتي‬ ‫العشري‬8. << ‫إزاحة‬ ‫لليمين‬ ‫البتات‬ ‫بعدد‬ ‫لليمين‬ ‫العدد‬ ‫بتات‬ ‫تزيح‬ .‫المحدد‬ 11<<1‫تعطي‬5.11‫ب‬ ‫تمثل‬1011،‫ثنائيا‬ ‫تعطي‬ ‫والتي‬101،‫لليمين‬ ‫واحدة‬ ‫بتة‬ ‫إزاحتها‬ ‫عند‬ ‫يساوي‬ ‫ما‬ ‫وهو‬5.‫عشريا‬ &‫بتّية‬ "‫"و‬‫للعداد‬ ‫بتّية‬ "‫"و‬53‫تعطي‬1. |‫بتّية‬ "‫"أو‬‫للعداد‬ ‫بتّية‬ "‫"أو‬5|3‫تعطي‬7 ^ Bit-wise XOR 5^3‫تعطي‬6 ~ "‫"معكوس‬ ‫بتّية‬ +‫-)س‬ ‫هو‬ ‫س‬ ‫ل‬ ‫البتّي‬ ‫المعكوس‬1(~5‫تعطي‬-6. >‫من‬ ‫أقل‬ .‫ص‬ ‫من‬ ‫أصغر‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬ ‫تعيد‬ ‫المقارنة‬ ‫عوامل‬ ‫كل‬1‫للصحيح‬ ‫و‬0‫المتغيرات‬ ‫هذا‬ ‫يساوي‬ .‫للخطأ‬ ‫الخاصة‬‫صحيح‬‫و‬‫خطأ‬.‫بالترتيب‬ ‫أسماء‬ ‫في‬ ‫الكبيرة‬ ‫الحروف‬ ‫لحظ‬ .‫المتغيرات‬ ‫هذه‬ 5>3‫تعطي‬0‫)أي‬‫خطأ‬‫و‬ (3>5‫تعطي‬1 ‫)أي‬‫صحيح‬:‫المقارنة‬ ‫سلسلة‬ ‫يمكن‬ .(3>5>7 ‫تعطي‬‫صحيح‬. <‫من‬ ‫أكبر‬‫ص‬ ‫من‬ ‫أكبر‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬5>3‫تعيد‬‫صحيح‬‫أعداد‬ ‫المعاملين‬ ‫كل‬ ‫كان‬ ‫إذا‬ . ‫للفهرس‬ ‫عودة‬‫العوامل‬|35
  • 37.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫العامل‬‫السم‬‫الشرح‬‫أمثلة‬ ‫فإنه‬ ‫وإل‬ .‫مشترك‬ ‫نوع‬ ‫إلى‬ ‫أول‬ ‫تحويلهما‬ ‫فيتم‬ ‫دائما‬ ‫يعيد‬‫خطأ‬. => ‫أو‬ ‫من‬ ‫أقل‬ ‫يساوي‬ ‫أو‬ ‫من‬ ‫أقل‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬ ‫ص‬ ‫تساوي‬ x = 3; y = 6; x <= y‫تعيد‬‫صحيح‬. =< ‫من‬ ‫أكبر‬ ‫يساوي‬ ‫أو‬ ‫أو‬ ‫من‬ ‫أكبر‬ ‫س‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫تعيد‬ ‫ص‬ ‫تساوي‬ x = 4; y = 3; x >= 3‫تعيد‬‫صحيح‬. ==‫يساوي‬‫يتساويان‬ ‫الكائنين‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫تقارن‬ x = 2; y = 2; x == y‫تعيد‬‫صحيح‬.x = 'str'; y = 'stR'; x == y‫تعيد‬‫خطأ‬.x = 'str'; y = 'str'; x == y‫تعيد‬‫صحيح‬. =!‫يساوي‬ ‫ل‬ ‫ل‬ ‫الكائنين‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫تقارن‬ ‫يتساويان‬ x = 2; y = 3; x != y‫تعيد‬‫صحيح‬. not "‫"ليس‬ ‫منطقية‬ ‫س‬ ‫كانت‬ ‫إذا‬‫صحيح‬‫تعيد‬ ،‫خطأ‬‫إذا‬ . ‫س‬ ‫كانت‬‫خطأ‬‫تعيد‬ ،‫صحيح‬. x = True; not y‫تعيد‬‫خطأ‬. and "‫"و‬ ‫منطقية‬ x and y‫تعيد‬‫خطأ‬‫كانت‬ ‫إذا‬x ‫خطأ‬‫تعيد‬ ‫فإنها‬ ‫وإل‬ ،y x = False; y = True; x and y‫تعيد‬‫خطأ‬ ‫لن‬x‫قيمة‬ ‫بيثون‬ ‫تعيد‬ ‫لن‬ ‫الحالة‬ ‫هذه‬ ‫في‬ .‫خطأ‬y ‫)لن‬ ‫خطأ‬ ‫ستكون‬ ‫التعبير‬ ‫قيمة‬ ‫أن‬ ‫تعرف‬ ‫لنها‬x .‫المختصر‬ ‫التقييم‬ ‫هذا‬ ‫يسمى‬ .(‫خطأ‬ or "‫"أو‬ ‫منطقية‬ ‫كانت‬ ‫إذا‬x‫صحيح‬‫صحيح‬ ‫تعيد‬ ‫فإنها‬ ‫قيمة‬ ‫تعيد‬ ‫فإنها‬ ‫وإل‬y. x = True; y = False; x or y‫تعيد‬‫صحيح‬. .‫أيضا‬ ‫هنا‬ ‫ينطبق‬ ‫المختصر‬ ‫التقييم‬ ‫العوامل‬ ‫أسبقية‬ ‫مثهل‬ ‫حسهابية‬ ‫عمليهة‬ ‫لهديك‬ ‫ان‬‫ه‬‫ك‬ ‫إذا‬2+3*4‫رياضهيات‬ ‫؟‬ ‫الضهرب‬ ‫أم‬ ‫أول‬ ‫الجمهع‬ ‫سهيتم‬ ‫ههل‬ ‫الضهرب‬ ‫لعمليهة‬ ‫أن‬ ‫ههذا‬ ‫يعنهي‬ ‫أول؛‬ ‫إجراؤهها‬ ‫يجهب‬ ‫الضهرب‬ ‫عمليهة‬ ‫أن‬ ‫تخبرنها‬ ‫الثانويهة‬ ‫المدرسهة‬ .‫الجمع‬ ‫عملية‬ ‫على‬ ‫أسبقية‬ ‫إلى‬ (‫إلزاما‬ ‫)أقل‬ ‫الدنى‬ ‫بالسبقية‬ ‫بدءا‬ ‫بيثون‬ ‫في‬ ‫العوامل‬ ‫بأسبقية‬ ‫بيان‬ ‫يعطينا‬ ‫التالي‬ ‫الجدول‬ ‫سهتقوم‬ ‫بيثهون‬ ‫فهإن‬ ‫المعطهاة‬ ‫التعهبيرات‬ ‫بهداخل‬ ‫أنهه‬ ‫ههذا‬ ‫معنهى‬ .(‫إلزامها‬ ‫)أكهثر‬ ‫الهعلى‬ ‫السهبقية‬ .‫الجدول‬ ‫في‬ ‫العلى‬ ‫العوامل‬ ‫قبل‬ ‫الجدول‬ ‫في‬ ‫الدنى‬ ‫العوامل‬ ‫قيمة‬ ‫بحساب‬ ،‫هذا‬ ‫ومع‬ .‫العلم‬ ‫زيادة‬ ‫باب‬ ‫من‬ ‫موجود‬ (‫بيثون‬ ‫مرجع‬ ‫في‬ ‫الموجود‬ ‫ذلك‬ ‫)نفس‬ ‫التالي‬ ‫الجدول‬ ‫ولتجعل‬ ‫بوضوح‬ ‫السبقية‬ ‫لتحديد‬ ‫والمعاملت‬ ‫العوامل‬ ‫لتجميع‬ ( ) ‫القواس‬ ‫باستخدم‬ ‫أنصحك‬ ،‫المثهال‬ ‫سهبيل‬ ‫علهى‬ .‫المكهان‬ ‫قهدر‬ ‫القهراءة‬ ‫فهي‬ ‫أسههل‬ ‫برنامجهك‬2) +3*4(‫أكهثر‬ ‫بهالطبع‬ ‫من‬ ‫ضوحا‬‫و‬2+3*4‫كون‬‫ت‬ ‫أن‬ ‫غي‬‫ينب‬ ‫ول‬ ‫مة‬‫بحك‬ ‫لقواس‬‫ا‬ ‫ستخدام‬‫ا‬ ‫جب‬‫ي‬ ،‫خر‬‫آ‬ ‫شيء‬ ‫كأي‬ . ‫)مثل‬ .‫الحد‬ ‫عن‬ ‫زائدة‬2) +3+4(.( ‫للفهرس‬ ‫عودة‬‫العوامل‬ ‫أسبقية‬|36
  • 38.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫جدول‬5.2.‫العوامل‬ ‫أسبقية‬ ‫العامل‬‫الوصف‬ lambda‫لمدا‬ ‫تعبير‬ or‫منطقية‬ "‫"أو‬ and‫منطقية‬ "‫"و‬ not x‫منطقية‬ "‫"ليس‬ in, not in‫العضوية‬ ‫اختبارات‬ is, is not‫الهوية‬ ‫اختبارات‬ == ,=! ,=< ,< ,=> ,>‫المقارنات‬ |‫بتّية‬ "‫"أو‬ ^Bitwise XOR &‫بتّية‬ "‫"و‬ << ,>>‫الزاحة‬ - ,+‫والطرح‬ ‫الجمع‬ % ,/ ,*‫والباقي‬ ‫والقسمة‬ ‫الضرب‬ +x, -x‫والسالب‬ ‫الموجب‬ ~x‫بتّية‬ "‫"ليس‬ **‫الُس‬ x.attribute‫الخصائص‬ ‫إخالة‬ x[index[‫الشتراك‬ x[index:index[‫الجز‬ f(arguments(...‫الدوال‬ ‫استدعاء‬ )expressions(... ,Binding or tuple display ]expressions[... ,‫القوائم‬ ‫عرض‬ }key:datum{... ,‫القواميس‬ ‫عرض‬ `expressions`... ,‫السلسل‬ ‫تحويل‬ .‫القادمة‬ ‫الفصول‬ ‫في‬ ‫ستشرح‬ ‫سابقا‬ ‫عليها‬ ‫نمر‬ ‫لم‬ ‫التي‬ ‫العوامل‬ ‫العوامل‬‫السبقية‬ ‫في‬ ‫المتساوية‬‫المثال‬ ‫سبيل‬ ‫على‬ .‫السابق‬ ‫الجدول‬ ‫في‬ ‫الصف‬ ‫نفس‬ ‫في‬ ‫وضعت‬+ ‫و‬-.‫السبقية‬ ‫نفس‬ ‫لهما‬ ‫للفهرس‬ ‫عودة‬‫العوامل‬ ‫أسبقية‬|37
  • 39.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الحساب‬ ‫ترتيب‬ ‫اﻵهخر‬ ‫علهى‬ ‫أسهبقية‬ ‫لهه‬ ‫عامهل‬ ‫أي‬ ‫العوامهل‬ ‫أسهبقية‬ ‫جهدول‬ ‫يحهدد‬ ‫مبهدئيا؛‬.‫تغييهر‬ ‫أردت‬ ‫إذا‬ ‫لهذلك‬ ‫القواس‬ ‫استخدام‬ ‫فعليك‬ ،‫العمليات‬ ‫حساب‬ ‫ترتيب‬( )‫عملية‬ ‫تتم‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ، ‫عملية‬ ‫قبل‬ ‫الجمع‬‫مثل‬ ‫القواس‬ ‫استخدام‬ ‫يمكن‬ ‫حينئذ‬ ‫التعبيرات‬ ‫أحد‬ ‫في‬ ‫الضرب‬)2+3* (4. ‫الرتباطية‬ ‫من‬ ‫تحسب‬ ‫السبقية‬ ‫في‬ ‫المشتركة‬ ‫العوامل‬ ‫أن‬ ‫أي‬ ،‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫عادة‬ ‫ترتبط‬ ‫العوامل‬ ‫اليميهن‬ ‫إلهى‬ ‫ار‬‫ه‬‫اليس‬.‫ال‬‫ه‬‫المث‬ ‫سهبيل‬ ‫علهى‬2+3+4‫مثهل‬ ‫تقيهم‬)2+3+ (4.‫العوامهل‬ ‫بعهض‬ ‫أن‬ ‫أي‬ ،‫اليسار‬ ‫إلى‬ ‫اليمين‬ ‫من‬ ‫ترتبط‬ ‫السناد‬ ‫عوامل‬ ‫مثل‬a = b = c‫باعتبارها‬ ‫تعامل‬a = (b = c(. ‫التعبيرات‬ ‫التعبيرات‬ ‫استخدام‬ ‫مثال‬5.1.‫التعبيرات‬ ‫استخدام‬ #!/usr/bin/python # Filename: expression.py length = 5 breadth = 2 area = length * breadth print 'Area is', area print 'Perimeter is', 2 * (length + breadth) ‫الخرْج‬ $ python expression.py Area is 10 Perimeter is 14 ‫للفهرس‬ ‫عودة‬‫التعبيرات‬|38
  • 40.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫يعمل‬ ‫كيف‬ ‫المتغيهرات‬ ‫فهي‬ ‫تخهزن‬ ‫المسهتطيل‬ ‫وعهرض‬ ‫طهول‬)length‫و‬breadth.(‫اب‬‫ه‬‫لحس‬ ‫نسهتخدمها‬ ‫ونحهن‬ ‫التعبيرات‬ ‫بمساعدة‬ ‫المستطيل‬ ‫ومحيط‬ ‫مساحة‬.‫التعبير‬ ‫نتيجة‬ ‫نخزن‬length * breadth ‫في‬ ‫ير‬‫المتغ‬ ‫في‬area‫فادة‬‫ال‬ ‫ستخدام‬‫با‬ ‫عه‬‫نطب‬ ‫ثم‬print.‫ستخدم‬‫ن‬ ‫نا‬‫فإن‬ ،‫ية‬‫الثان‬ ‫لة‬‫الحا‬ ‫في‬ ‫التعبير‬ ‫قيمة‬ ‫مباشرة‬2) *length + breadth(‫الفادة‬ ‫في‬print. ‫بأناقهة‬ ‫النتيجهة‬ ‫بيثهون‬ ‫تطبهع‬ ‫كيهف‬ ‫لحهظ‬ ،‫أيضها‬.‫بيهن‬ ‫مسهافة‬ ‫نحهدد‬ ‫لهم‬ ‫أننها‬ ‫ورغهم‬'Area is'‫والمتغيهر‬area‫ويصهبح‬ ‫ولطيهف‬ ‫نظيهف‬ ‫ناتهج‬ ‫علهى‬ ‫نحصهل‬ ‫بحيهث‬ ‫لنها‬ ‫بيثهون‬ ‫وضهعتها‬ ‫فقهد‬ ‫الطريقة‬ ‫بهذه‬ ‫مقروئية‬ ‫أكثر‬ ‫البرنامج‬)‫الناتج‬ ‫في‬ ‫بالمسافات‬ ‫للهتمام‬ ‫نحتاج‬ ‫ل‬ ‫أننا‬ ‫حيث‬.(‫هذا‬ ‫أسهل‬ ‫المبرمج‬ ‫حياة‬ ‫تجعل‬ ‫بيثون‬ ‫أن‬ ‫كيف‬ ‫على‬ ‫مثال‬. ‫الخلصة‬ ) ‫العوامل‬ ‫نستخدم‬ ‫كيف‬ ‫رأينا‬operators) ‫المعاملت‬ ‫و‬ (operands) ‫والتعبيرات‬ (expressions( ‫برامجنها‬ ‫فهي‬ ‫باسهتخدامها‬ ‫نقهوم‬ ‫كيهف‬ ‫سهنرى‬ ‫يلهي‬ ‫وفيمها‬ .‫برنامهج‬ ‫لهي‬ ‫الساسهية‬ ‫اللبنهات‬ ‫وههي‬ .‫الفادات‬ ‫باستخدام‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|39
  • 41.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬6‫التدفق‬ ‫في‬ ‫التحكم‬ . ‫المحتويات‬ ‫قائمة‬ ‫مقدمة‬ ‫إفادة‬ ‫استخدام‬if ‫يعمل‬ ‫كيف‬ ‫إفادة‬while ‫إفادة‬ ‫استخدام‬while ‫الحلقة‬for ‫إفادة‬ ‫استخدام‬for ‫الفادة‬break ‫الفادة‬ ‫استخدام‬break ‫الفادة‬continue ‫الفادة‬ ‫استخدام‬continue ‫الخلصة‬ ‫مقدمـــة‬ ‫محترمة‬ ‫تنفذها‬ ‫وبايثون‬ ‫الفادات؛‬ ‫من‬ ‫تتابع‬ ‫دائما‬ ‫هناك‬ ‫كان‬ ‫اﻵن‬ ‫حتى‬ ‫رأيناها‬ ‫التي‬ ‫البرامج‬ ‫في‬ ‫الترتيب‬ ‫نفس‬.‫البرنامج‬ ‫من‬ ‫تريد‬ ،‫المثال‬ ‫سبيل‬ ‫على‬ ‫العمل؟‬ ‫انسياب‬ ‫طريقة‬ ‫تغيير‬ ‫أردت‬ ‫لو‬ ‫ماذا‬ ‫طباعة‬ ‫مثل‬ ‫المختلفة‬ ‫للمواقف‬ ‫تبعا‬ ‫مختلفة‬ ‫بأشياء‬ ‫والقيام‬ ‫القرارات‬ ‫بعض‬ ‫اتخاذ‬'Good Morning'‫أو‬'Good Evening'‫اليوم؟‬ ‫من‬ ‫الحالي‬ ‫الوقت‬ ‫على‬ ‫معتمدا‬ ‫التدفق‬ ‫في‬ ‫التحكم‬ ‫إفادات‬ ‫استخدام‬ ‫عبر‬ ‫يتم‬ ‫ذلك‬ ‫فإن‬ ،‫خمنت‬ ‫وكما‬.‫للتحكم‬ ‫إفادات‬ ‫ثلث‬ ‫يوجد‬ ‫بيثون؛‬ ‫قي‬ ‫التدفق‬ ‫في‬if‫و‬ ،for‫و‬ ،while. ‫إفادة‬if ‫ت‬‫إفادة‬ ‫ستخدم‬if‫و‬ ‫معينة‬ ‫حالة‬ ‫من‬ ‫للتحقق‬‫إذا‬‫الفادات‬ ‫من‬ ‫لبنة‬ ‫نشغل‬ ،‫صحيحة‬ ‫الحالة‬ ‫كانت‬ ‫)تسمى‬if-block،(‫وإل‬‫)تسمى‬ ‫الفادات‬ ‫من‬ ‫أخرى‬ ‫لبنة‬ ‫نعالج‬ ‫فإننا‬else-block‫بند‬ .(else .‫اختياري‬ ‫إفادة‬ ‫استخدام‬if ‫مثال‬6.1.‫إفادة‬ ‫استخدام‬if ‫للفهرس‬ ‫عودة‬‫إفادة‬if|40
  • 42.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ #!/usr/bin/python # Filename: if.py number = 23 guess = int(raw_input('Enter an integer : ')) if guess == number: print 'Congratulations, you guessed it.' # New block starts here print "(but you do not win any prizes!)" # New block ends here elif guess < number: print 'No, it is a little higher than that' # Another block # You can do whatever you want in a block ... else: print 'No, it is a little lower than that' # you must have guess > number to reach here print 'Done' # This last statement is always executed, after the if statement is executed ‫الخرْج‬ $ python if.py Enter an integer : 50 No, it is a little lower than that Done $ python if.py Enter an integer : 22 No, it is a little higher than that Done $ python if.py Enter an integer : 23 Congratulations, you guessed it. (but you do not win any prizes!) ‫للفهرس‬ ‫عودة‬‫إفادة‬if|41
  • 43.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Done ‫يعمل‬ ‫كيف‬ ‫لدينا‬ ‫الذي‬ ‫العدد‬ ‫وبين‬ ‫بينه‬ ‫ونقارن‬ ‫المستخدم‬ ‫من‬ ‫تخمينات‬ ‫نأخذ‬ ‫فإننا‬ ،‫البرنامج‬ ‫هذا‬ ‫في‬.‫نسند‬ ‫المتغير‬number‫مثل‬ ،‫نريده‬ ‫صحيح‬ ‫عدد‬ ‫أي‬ ‫إلى‬23.‫باستخدام‬ ‫المستخدم‬ ‫تخمين‬ ‫أخذنا‬ ،‫ثم‬ ‫الدالهة‬raw_input().‫اسهتخدامها‬ ‫إعهادة‬ ‫يمكهن‬ ‫البرامهج‬ ‫مهن‬ ‫أجهزاء‬ ‫إل‬ ‫ههي‬ ‫مها‬ ‫الهدوال‬.‫سهنقرأ‬ ‫في‬ ‫عنها‬ ‫المزيد‬‫التالي‬ ‫الفصل‬. ‫جة‬‫المدم‬ ‫لة‬‫للدا‬ ‫سلسهلة‬ ‫نا‬‫أعطي‬raw_input‫وتنتظهر‬ ‫شة‬‫الشا‬ ‫علهى‬ ‫نص‬‫ال‬ ‫عة‬‫بطبا‬ ‫قوم‬‫ت‬ ‫والهتي‬ ‫المسهتخدم‬ ‫مهن‬ ‫المهدخلت‬.‫علهى‬ ‫ونضهغط‬ ‫شهيء‬ ‫أي‬ ‫نهدخل‬ ‫أن‬ ‫وبمجهرد‬enter‫الدالهة‬ ‫تعيهد‬ ‫حالة‬ ‫في‬ ‫وهي‬ ،‫المدخلت‬raw_input‫عدد‬ ‫إلى‬ ‫النص‬ ‫هذا‬ ‫نحول‬ ‫بعدها‬ ،‫نصية‬ ‫سلسلة‬ ‫عن‬ ‫عبارة‬ ‫باسهتخدام‬ ‫صهحيح‬int‫المتغيهر‬ ‫فهي‬ ‫نخزنهه‬ ‫ثهم‬guess.‫الحقيقهة‬ ‫فهي‬int‫صهنف‬ ‫عهن‬ ‫عبهارة‬) class(‫لى‬‫إ‬ ‫سل‬‫السل‬ ‫يل‬‫لتحو‬ ‫ستخدامه‬‫ا‬ ‫ستطيع‬‫ت‬ ‫نك‬‫أ‬ ‫هو‬ ‫ﻵن‬‫ا‬ ‫ته‬‫معرف‬ ‫تاج‬‫تح‬ ‫ما‬ ‫كل‬ ‫كن‬‫ول‬ ‫صحيحة‬ ‫أعداد‬)‫النص‬ ‫داخل‬ ‫سليم‬ ‫صحيح‬ ‫عدد‬ ‫على‬ ‫تحتوي‬ ‫السلسلة‬ ‫أن‬ ‫فرض‬ ‫على‬.( ‫اخترناه‬ ‫الذي‬ ‫العدد‬ ‫وبين‬ ‫المستخدم‬ ‫تخمين‬ ‫بين‬ ‫قارنا‬ ‫ذلك‬ ‫بعد‬.‫بنجاح‬ ‫رسالة‬ ‫نطبع‬ ‫تساويا‬ ‫فإذا‬ ‫العمليهة‬.‫لبنهة‬ ‫أيهة‬ ‫إلهى‬ ‫تنتمهي‬ ‫الفهادات‬ ‫أي‬ ‫بيثهون‬ ‫لنخهبر‬ ‫الزاحهة‬ ‫مسهتويات‬ ‫نسهتخدم‬ ‫ا‬‫ه‬‫أنن‬ ‫لحهظ‬. ‫بيثهون‬ ‫فهي‬ ‫الزاحهة‬ ‫أهميهة‬ ‫سهبب‬ ‫يهبين‬ ‫ذلهك‬.‫قاعهدة‬ ‫علهى‬ ‫تثبهت‬ ‫أن‬ ‫أتمنهى‬'‫تبهويب‬ ‫علمهة‬)tab( ‫إزاحة‬ ‫مستوى‬ ‫لكل‬ ‫واحدة‬.'‫ستفعل؟‬ ‫فهل‬ ‫إفادة‬ ‫أن‬ ‫كيف‬ ‫لحظ‬if‫رأسيتين‬ ‫نقطتين‬ ‫على‬ ‫ي‬ ‫تحتو‬(:)‫من‬ ‫لبنة‬ ‫بأن‬ ‫بيثون‬ ‫نخبر‬ ‫النهاية؛‬ ‫في‬ ‫ستتبعها‬ ‫الفادات‬. ‫مهن‬ ‫نطلهب‬ ‫فإننها‬ ‫كهذلك‬ ‫كهان‬ ‫وإذا‬ ،‫العهدد‬ ‫ذلهك‬ ‫مهن‬ ‫أقهل‬ ‫التخميهن‬ ‫كهون‬ ‫مهن‬ ‫تحقهق‬ ‫ذلهك‬ ‫عهد‬ ‫قليل‬ ‫أكبر‬ ‫عدد‬ ‫تخمين‬ ‫المستخدم‬.‫بند‬ ‫هو‬ ‫هنا‬ ‫استخدمناه‬ ‫ما‬elif‫إفادتي‬ ‫بين‬ ‫يدمج‬ ‫والذي‬if else-if else‫إفهادة‬ ‫فهي‬ ‫متتهابعتين‬if-elif-else‫واحهدة‬.‫ويقلهل‬ ‫أسههل‬ ‫البرنامهج‬ ‫ههذا‬ ‫يجعهل‬ ‫المطلوبة‬ ‫الزاحات‬ ‫مقدار‬. ‫إفادات‬ ‫تحتوي‬ ‫أنت‬ ‫يجب‬elif‫و‬else‫على‬(:)‫الفادات‬ ‫بلبنة‬ ‫متبوعة‬ ‫المنطقي‬ ‫السطر‬ ‫نهاية‬ ‫في‬ ‫لها‬ ‫المقابلة‬)‫بالطبع‬ ‫المناسبة‬ ‫الزاحة‬ ‫مع‬( ‫إفادة‬ ‫احتواء‬ ‫يمكن‬if‫إفادة‬ ‫على‬if‫إفادات‬ ‫هذا‬ ‫يسمى‬ ‫وهكذا؛‬ ‫أخرى‬if‫المتتداخلة‬. *‫الجزاء‬ ‫ان‬ ‫تذكر‬elif‫و‬else‫اختيارية‬.‫إفادة‬ ‫أقل‬if‫هي‬ ‫صحيحة‬ if True: print 'Yes, it is true' ‫إفادة‬ ‫تنفيذ‬ ‫من‬ ‫بيثون‬ ‫انتهاء‬ ‫بعد‬if‫بنود‬ ‫فيها‬ ‫بما‬ ‫كاملة‬elif‫و‬else‫تنتقل‬ ،‫تحتها‬ ‫المندرجة‬ ‫إفادة‬ ‫تحتوي‬ ‫التي‬ ‫اللبنة‬ ‫في‬ ‫التالية‬ ‫الفادة‬ ‫إلى‬if.‫الرئيسة‬ ‫البرنامج‬ ‫لبنة‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫وهي‬ ‫للفهرس‬ ‫عودة‬‫إفادة‬if|42
  • 44.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫ههي‬ ‫التاليهة‬ ‫والفهادة‬ ‫البرنامهج‬ ‫تنفيهذ‬ ‫يبهدأ‬ ‫حيهث‬print 'Done'.‫نهايهة‬ ‫بيثهون‬ ‫تهرى‬ ‫بعهدها‬ ‫ببساطة‬ ‫تنهيه‬ ‫ثم‬ ‫ومن‬ ‫البرنامج‬. ‫ها‬‫تلحظ‬ ‫أن‬ ‫يك‬‫عل‬ ‫لتي‬‫ا‬ ‫شياء‬‫ال‬ ‫من‬ ‫كثير‬‫ال‬ ‫لى‬‫إ‬ ‫شرت‬‫أ‬ ‫قد‬‫ف‬ ،‫جدا‬ ‫سيط‬‫ب‬ ‫مج‬‫البرنا‬ ‫هذا‬ ‫أن‬ ‫غم‬‫ور‬ ‫البسهيط‬ ‫البرنامهج‬ ‫ههذا‬ ‫فهي‬ ‫حهتى‬.‫واضهحة‬ ‫أشهياء‬ ‫كلهها‬ ‫وههذه‬)‫لهولئك‬ ‫مفهاجئ‬ ‫بشهكل‬ ‫وبسهيطة‬ ‫سي‬ ‫عن‬ ‫بخلفية‬ ‫القادمين‬/‫سي‬(++‫ولكن‬ ،‫البداية‬ ‫في‬ ‫هذا‬ ‫لكل‬ ‫مدركا‬ ‫تصبح‬ ‫أن‬ ‫منك‬ ‫ويتطلب‬ ‫بأنها‬ ‫وستشعر‬ ‫معها‬ ‫مرتاحا‬ ‫ستصبح‬ ،‫ذلك‬ ‫بعد‬'‫طبيعية‬'‫لك‬ ‫بالنسبة‬. ++‫سي/سي‬ ‫لمبرمجي‬ ‫ملحظة‬ ‫إفادة‬ ‫توجد‬ ‫ل‬‫تبديل‬)switch‫إفادة‬ ‫استخدام‬ ‫يمكنك‬ .‫بيثون‬ ‫في‬ (if..elif..else‫لفعل‬ ‫استخدم‬ ،‫الحالت‬ ‫بعض‬ ‫)وفي‬ ‫الشيء‬ ‫نفس‬‫قاموس‬(‫بسرعة‬ ‫ذلك‬ ‫لفعل‬ ‫إفادة‬while ‫ادة‬‫ه‬‫إف‬while‫إفهادة‬ .‫صهحيحا‬ ‫الشهرط‬ ‫دام‬ ‫مها‬ ‫الفهادات‬ ‫مهن‬ ‫لبنهة‬ ‫تنفيهذ‬ ‫تكهرار‬ ‫لهك‬ ‫تسهمح‬ while‫الفهادات‬ ‫يسهمى‬ ‫لمها‬ ‫مثهال‬‫الحلقيهة‬)looping‫إفهادة‬ ‫تشهمل‬ ‫أن‬ ‫يمكهن‬ .(while ‫بند‬ ‫على‬else.‫اختياري‬ ‫إفادة‬ ‫استخدام‬while ‫مثال‬6.2.‫إفادة‬ ‫استخدام‬while #!/usr/bin/python # Filename: while.py number = 23 running = True while running: guess = int(raw_input('Enter an integer : ')) if guess == number: print 'Congratulations, you guessed it.' running = False # this causes the while loop to stop ‫للفهرس‬ ‫عودة‬‫إفادة‬while|43
  • 45.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ elif guess < number: print 'No, it is a little higher than that.' else: print 'No, it is a little lower than that.' else: print 'The while loop is over.' # Do anything else you want to do here print 'Done' ‫الخرْج‬ $ python while.py Enter an integer : 50 No, it is a little lower than that. Enter an integer : 22 No, it is a little higher than that. Enter an integer : 23 Congratulations, you guessed it. The while loop is over. Done ‫يعمل‬ ‫كيف‬ ‫لهه‬ ‫يسهمح‬ ‫المسهتخدم‬ ‫أن‬ ‫ههي‬ ‫هنها‬ ‫الميهزة‬ ‫لكهن‬ ،‫التخميهن‬ ‫لعبهة‬ ‫نلعهب‬ ‫زلنها‬ ‫مها‬ ،‫البرنامهج‬ ‫ههذا‬ ‫فهي‬ ‫تخمين‬ ‫لكل‬ ‫البرنامج‬ ‫تنفيذ‬ ‫تكرار‬ ‫إلى‬ ‫حاجة‬ ‫ل‬ ‫الصحيح؛‬ ‫للتخمين‬ ‫يصل‬ ‫حتى‬ ‫التخمين‬ ‫بمواصلة‬- ‫سابقا‬ ‫فعلنا‬ ‫كما‬.-‫إفادة‬ ‫فائدة‬ ‫بوضوح‬ ‫يشرح‬ ‫هذا‬while. ‫فادة‬‫إ‬ ‫نا‬‫نقل‬raw_input‫و‬if‫قة‬‫حل‬ ‫خل‬‫دا‬ ‫لى‬‫إ‬while.‫ير‬‫المتغ‬ ‫نا‬‫وجعل‬running‫صحيح‬) True(‫قة‬‫حل‬ ‫بل‬‫ق‬while.‫أول‬:‫ير‬‫المتغ‬ ‫كون‬ ‫من‬ ‫قق‬‫نتح‬running‫صحيح‬‫قل‬‫ننت‬ ‫عدها‬‫وب‬ ‫تنفيذ‬ ‫إلى‬while-block‫المناسبة‬.‫ثانيا‬ ‫الحالة‬ ‫تفحص‬ ،‫اللبنة‬ ‫هذه‬ ‫تنفيذ‬ ‫بعد‬-‫المتغير‬ ‫وهي‬ running‫هنا‬.-‫لبنة‬ ‫ننفذ‬ ،‫صحيحة‬ ‫إذاكانت‬while‫لبنة‬ ‫لتنفيذ‬ ‫ننتقل‬ ‫فإننا‬ ‫وإل‬ ،‫ثانيا‬else ‫التالية‬ ‫للفادة‬ ‫ننتقل‬ ‫ثم‬ ،‫الختيارية‬. ‫لبنهة‬ ‫تنفيهذ‬ ‫يتهم‬else‫الحلقهة‬ ‫فهي‬ ‫الشهرط‬ ‫عنهدمايكون‬while‫خهاطئا‬‫المهرة‬ ‫ههذه‬ ‫تكهون‬ ‫وربمها‬ ‫الشهرط‬ ‫مهن‬ ‫فيهها‬ ‫التحقهق‬ ‫يتهم‬ ‫الهتي‬ ‫الهولى‬.‫بنهد‬ ‫هنهاك‬ ‫كهان‬ ‫إذا‬else‫للحلقهة‬while‫فسهيتم‬ ، ‫للفهرس‬ ‫عودة‬‫إفادة‬while|44
  • 46.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫حلقة‬ ‫لديك‬ ‫كان‬ ‫إن‬ ‫إل‬ ‫حتما‬ ‫تنفيذه‬while‫توقف‬ ‫دون‬ ‫نهاية‬ ‫ل‬ ‫ما‬ ‫إلى‬ ‫تدور‬. ‫تسهمى‬True‫و‬False‫منطقيهة‬ ‫أنواعها‬)Boolean types(‫معهادل‬ ‫تعتبرهها‬ ‫أن‬ ‫ويمكنهك‬ ‫مة‬‫لقي‬1‫و‬0‫توالي‬‫ال‬ ‫لى‬‫ع‬.‫يس‬‫ول‬ ‫ما‬‫مه‬ ‫قق‬‫التح‬ ‫أو‬ ‫شرط‬‫ال‬ ‫كون‬‫ي‬ ‫ما‬‫حيث‬ ‫ستعمالها‬‫ا‬ ‫هم‬‫الم‬ ‫من‬‫و‬ ‫الفعليه‬ ‫القيمه‬1. ‫لبنة‬ ‫الحقيقة‬ ‫في‬else‫اللبنة‬ ‫نفس‬ ‫في‬ ‫لها‬ ‫التابعة‬ ‫الفادات‬ ‫وضع‬ ‫يمكنك‬ ‫حيث‬ ،‫حشوا‬ ‫تعد‬)‫مثل‬ ‫إفادة‬while(‫بعد‬while‫التأثير‬ ‫نفس‬ ‫على‬ ‫للحصول‬. ‫سي‬ ‫لمبرمجي‬ ‫ملحظة‬/‫سي‬++ ‫بند‬ ‫وضع‬ ‫يمكن‬ ‫أنه‬ ‫تذكر‬else‫لحلقة‬while. ‫الحلقة‬for ‫تعتبر‬for..in‫أخرى‬ ‫حلقية‬ ‫إفادة‬ّ‫تَمُر‬‫في‬ ‫عنصر‬ ‫كل‬ ‫عبر‬ ّ‫مُر‬ ‫مثل‬ ،‫الكائنات‬ ‫من‬ ‫تتابع‬ ‫على‬ ‫عن‬ ‫يد‬‫المز‬ ‫لى‬‫ع‬ ‫سنتعرف‬‫و‬ .‫تابع‬‫ت‬‫التتابعات‬‫أن‬ ‫ﻵن‬‫ا‬ ‫ته‬‫معرف‬ ‫يك‬‫عل‬ ‫ما‬ ‫كل‬ .‫قة‬‫لح‬ ‫صول‬‫ف‬ ‫في‬ .‫المرتّبة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫مجرد‬ ‫هو‬ ‫التتابع‬ ‫إفادة‬ ‫استخدام‬for ‫مثا‬‫ل‬6.3.‫إفادة‬ ‫استخدام‬for #!/usr/bin/python # Filename: for.py for i in range(1, 5): print i else: print 'The for loop is over' ‫الخرْج‬ $ python for.py 1 2 3 4 ‫للفهرس‬ ‫عودة‬‫الحلقة‬for|45
  • 47.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ The for loop is over ‫يعمل‬ ‫كيف‬ ‫نطبهع‬ ‫البرنامهج‬ ‫ههذا‬ ‫فهي‬‫ا‬‫ه‬‫تتابع‬‫العهداد‬ ‫مهن‬.‫المدمجهة‬ ‫الدالهة‬ ‫باسهتخدام‬ ‫ههذا‬ ‫العهداد‬ ‫تتهابع‬ ‫ولّهدنا‬ range. ‫ثم‬ ‫عددين‬ ‫أعطيناه‬ ‫أننا‬ ‫هنا‬ ‫به‬ ‫قمنا‬ ‫ما‬range‫الول‬ ‫العدد‬ ‫من‬ ‫بداية‬ ‫العداد‬ ‫من‬ ‫تتابعا‬ ‫لنا‬ ‫يعيد‬ ‫الخير‬ ‫العدد‬ ‫قبل‬ ‫ما‬ ‫إلى‬ ‫يصل‬ ‫حتى‬ ‫تصاعديا‬ ‫ثم‬.‫المثال‬ ‫سبيل‬ ‫على‬range(1,5(‫التتابع‬ ‫يعطي‬ ]1,2,3,4[‫يأخهذ‬ ،‫افتراضهيا‬range‫بقيمهة‬ ‫خطهوة‬1.‫الخطهوة‬ ‫تكهون‬ ‫ا‬‫ه‬‫ثالث‬ ‫عهددا‬ ‫أعطيتهه‬ ‫إذا‬ ،‫العدد‬ ‫ذلك‬ ‫بمقدار‬‫المثال‬ ‫سبيل‬ ‫على‬:range(1,5,2(‫تعطي‬]1,3[.‫يمتد‬ ‫المدى‬ ‫أن‬ ‫تذكر‬ ‫حتى‬‫قبل‬ ‫ما‬‫الثاني‬ ‫العدد‬-‫إنه‬ ‫أي‬‫ل‬‫الثاني‬ ‫العدد‬ ‫يشمل‬. ‫الحلقة‬ ‫تدور‬ ‫ذلك‬ ‫بعد‬for‫المدى‬ ‫ذلك‬ ‫خلل‬-for i in range(1,5(‫تعادل‬for i in [1, 2, 3, 4[-‫عدد‬ ‫كل‬ ‫إسناد‬ ‫تشبه‬ ‫والتي‬)‫كائن‬ ‫أو‬(‫المتغير‬ ‫إلى‬i‫يتم‬ ‫بعدها‬ ،‫مرة‬ ‫كل‬ ‫في‬ ‫واحدا‬ ‫قيمة‬ ‫لكل‬ ‫الفادات‬ ‫لبنة‬ ‫تنفيذ‬i.‫الفادات‬ ‫لبنة‬ ‫في‬ ‫القيمة‬ ‫بطباعة‬ ‫فقط‬ ‫نقوم‬ ‫هذه‬ ‫حالتنا‬ ‫في‬. ‫الجزء‬ ‫أن‬ ‫تذكر‬else‫اختياري‬.‫الحلقة‬ ‫انتهاء‬ ‫بعد‬ ‫واحدة‬ ‫مرة‬ ‫يُنفذ‬ ‫فإنه‬ ،‫يضاف‬ ‫وعندما‬for ‫إفادة‬ ‫قابل‬ ‫إذا‬ ‫إل‬break. ‫الحلقة‬ ‫أن‬ ‫تذكر‬for..in‫تتابع‬ ‫أي‬ ‫مع‬ ‫تعمل‬.‫باستخدام‬ ‫توليدها‬ ‫تم‬ ‫العداد‬ ‫من‬ ‫قائمة‬ ‫لدينا‬ ‫هنا‬ ‫المدمجة‬ ‫الدالة‬range‫كائنات‬ ‫لي‬ ‫تتابع‬ ‫أي‬ ‫استخدام‬ ‫يمكننا‬ ‫العموم‬ ‫على‬ ‫ولكن‬ ،.‫هذه‬ ‫وسنشرح‬ ‫القادمة‬ ‫الفصول‬ ‫في‬ ‫بالتفصيل‬ ‫الفكرة‬. ‫سي‬ ‫لمبرمجي‬ ‫ملحظة‬/‫سي‬/++‫جافا‬/‫سي‬# ‫الحلقهة‬for‫سهي‬ ‫عهن‬ ‫جهذريا‬ ‫اختلفها‬ ‫تختلهف‬ ‫بيثهون‬ ‫فهي‬/‫سهي‬.++‫سهي‬ ‫مهبرمجو‬# ‫الحلقهة‬ ‫أن‬ ‫سهيلحظون‬for‫لحلقهة‬ ‫مشهابهة‬ ‫بيثهون‬ ‫فهي‬foreach‫سهي‬ ‫فهي‬.#‫مهبرمجو‬ Java‫مع‬ ‫تشابهها‬ ‫أيضا‬ ‫سيلحظون‬for (int i : IntArray(‫جافا‬ ‫في‬1.5. ‫سي‬ ‫في‬/‫سي‬++‫تكتب‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ،for (int i = 0; i < 5; i(++‫تكتب‬ ‫بيثون‬ ‫ففي‬ ، ‫فقط‬for i in range(0,5(.‫بساطة‬ ‫أكثر‬ ‫بيثون‬ ‫في‬ ‫الحلقة‬ ‫كتابة‬ ‫فإن‬ ،‫ترى‬ ‫وكما‬ ‫للخطأ‬ ‫وعرضة‬ ‫تعبيرا‬ ‫وأقل‬. ‫الفادة‬break ‫إفادة‬break‫تستخدم‬‫لكسر‬‫لم‬ ‫ولو‬ ‫حتى‬ ‫الحلقة‬ ‫تنفيذ‬ ‫وقف‬ :‫أخرى‬ ‫بعبارة‬ ،‫التكرارية‬ ‫الحلقة‬ ‫الحلقة‬ ‫شرط‬ ‫يصبح‬‫خاطئا‬.‫كله‬ ‫العناصر‬ ‫تتابع‬ ‫على‬ ‫تمر‬ ‫لم‬ ‫أو‬ ‫أن‬ ‫ملحظة‬ ‫المهم‬ ‫من‬‫كسر‬‫حلقة‬for‫أو‬while‫إلى‬ ‫سيؤدي‬‫عدم‬‫إفادات‬ ‫لبنة‬ ‫تنفيذ‬else. ‫للفهرس‬ ‫عودة‬‫الفادة‬break|46
  • 48.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الفادة‬ ‫استخدام‬break ‫مثال‬6.4.‫الفادة‬ ‫استخدام‬break #!/usr/bin/python # Filename: break.py while True: s = raw_input('Enter something : ') if s == 'quit': break print 'Length of the string is', len(s) print 'Done' ‫الخرْج‬ $ python break.py Enter something : Programming is fun Length of the string is 18 Enter something : When the work is done Length of the string is 21 Enter something : if you wanna make your work also fun: Length of the string is 37 Enter something : use Python! Length of the string is 12 Enter something : quit Done ‫يعمل‬ ‫كيف‬ ‫مرة‬ ‫كل‬ ‫في‬ ‫مدخلة‬ ‫كل‬ ‫طول‬ ‫طبعنا‬ ‫ثم‬ ‫المستخدم‬ ‫من‬ ‫المدخلت‬ ‫أخذ‬ ‫كررنا‬ ‫البرنامج‬ ‫هذا‬ ‫في‬. ‫هي‬ ‫ستخدم‬‫الم‬ ‫لة‬‫مدخ‬ ‫كانت‬ ‫إذا‬ ‫ما‬ ‫حص‬‫ف‬ ‫خلل‬ ‫من‬ ‫مج‬‫البرنا‬ ‫لوقف‬ ‫خاص‬ ‫شرط‬ ‫نا‬‫وفر‬ ‫وقد‬' quit'‫طريق‬ ‫عن‬ ‫البرنامج‬ ‫عمل‬ ‫وأوقفنا‬‫كسر‬‫البرنامج‬ ‫نهاية‬ ‫إلى‬ ‫والوصول‬ ‫الحلقة‬. ‫المدمجة‬ ‫الدالة‬ ‫باستخدام‬ ‫المدخلة‬ ‫السلسلة‬ ‫طول‬ ‫معرفة‬ ‫يمكن‬len. ‫إفادة‬ ‫أن‬ ‫تذكر‬break‫الحلقة‬ ‫مع‬ ‫استخدامها‬ ‫يمكن‬for‫أيضا‬. ‫للفهرس‬ ‫عودة‬‫الفادة‬break|47
  • 49.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫قصيدة‬'G2'‫لبايثون‬ ‫وسميتها‬ ‫كتبتها‬ ‫قد‬ ‫قصيدة‬ ‫هنا‬ ‫المستخدمة‬ ‫المدخلت‬G2's Poetic Python: Programming is fun When the work is done if you wanna make your work also fun: use Python! ‫الفادة‬continue ‫الفهادة‬continue‫الحاليهة‬ ‫الحلقهة‬ ‫لبنهة‬ ‫فهي‬ ‫ورد‬ ‫مها‬ ‫بقيهة‬ ‫تخطهي‬ ‫بيثهون‬ ‫مهن‬ ‫لنطلهب‬ ‫تسهتخدم‬ .‫الحلقة‬ ‫تكرار‬ ‫ومواصلة‬ ‫الفادة‬ ‫استخدام‬continue ‫مثال‬6.5.‫الفادة‬ ‫استخدام‬continue #!/usr/bin/python # Filename: continue.py while True: s = raw_input('Enter something : ') if s == 'quit': break if len(s) < 3: continue print 'Input is of sufficient length' # Do other kinds of processing here... ‫الخرْج‬ $ python continue.py ‫للفهرس‬ ‫عودة‬‫الفادة‬continue|48
  • 50.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Enter something : a Enter something : 12 Enter something : abc Input is of sufficient length Enter something : quit ‫يعمل‬ ‫كيف‬ ‫طولها‬ ‫يكون‬ ‫عندما‬ ‫فقط‬ ‫نعالجها‬ ‫ولكن‬ ،‫المستخدم‬ ‫مدخلت‬ ‫نقبل‬ ‫البرنامج‬ ‫هذا‬ ‫في‬3‫على‬ ‫خانات‬ ‫القل‬.‫المدمجة‬ ‫الدالة‬ ‫نستخدم‬ ‫لذا‬len‫من‬ ‫أقل‬ ‫الطول‬ ‫كان‬ ‫فإذا‬ ،‫العبارة‬ ‫طول‬ ‫على‬ ‫للحصول‬3 ‫الفادة‬ ‫باستخدام‬ ‫نة‬‫اللب‬ ‫في‬ ‫الموجود‬ ‫الفادات‬ ‫ية‬‫بق‬ ‫طي‬‫نتخ‬ ‫خانات‬continue‫بقية‬ ‫نننفذ‬ ‫وإل‬ ‫هنا‬ ‫نريدها‬ ‫معالجة‬ ‫بأي‬ ‫القيام‬ ‫ويمكننا‬ ،‫الحلقة‬ ‫في‬ ‫الفادات‬. ‫الفادة‬ ‫أن‬ ‫لحظ‬continue‫الحلقة‬ ‫مع‬ ‫تعمل‬for‫أيضا‬. ‫الخلصة‬ : ‫نات‬‫البيا‬ ‫تدفق‬ ‫في‬ ‫كم‬‫للتح‬ ‫أدوات‬ ‫ثلث‬ ‫ستخدام‬‫ا‬ ‫ية‬‫كيف‬ ‫نا‬‫رأي‬if‫و‬while‫و‬for‫فادات‬‫ال‬ ‫مع‬ break‫و‬continue‫فهي‬ ‫عهادة‬ ‫المسهتخدمة‬ ‫الهجزاء‬ ‫أكهثر‬ ‫مهن‬ ‫بعهض‬ ‫وتلهك‬ .‫بهها‬ ‫المرتبطهة‬ .‫ضروري‬ ‫أمر‬ ‫عليها‬ ‫تعودك‬ ‫ولذا‬ ‫بيثون؛‬ .‫الدوال‬ ‫ونستخدم‬ ‫ننشئ‬ ‫كيف‬ ‫سنرى‬ ‫يلي‬ ‫وفيما‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|49
  • 51.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬7‫الدوال‬ . ‫المحتويات‬ ‫قائمة‬ ‫مقدمة‬ ‫دالة‬ ‫تعريف‬ ‫الدالة‬ ‫معاملت‬ ‫الدالة‬ ‫معاملت‬ ‫استخدام‬ ‫المحلية‬ ‫المتغيرات‬ ‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬ ‫الفادة‬ ‫استخدام‬global ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬ ‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬ ‫الفادة‬return ‫الفادة‬ ‫استخدام‬return ‫التوثيق‬ ‫جمل‬ ‫التوثيق‬ ‫جمل‬ ‫استخدام‬ ‫الخلصة‬ ‫مقدمة‬ ‫اسهتخدامها‬ ‫إعهادة‬ ‫يمكهن‬ ‫البرامهج‬ ‫مهن‬ ‫أجهزاء‬ ‫ههي‬ ‫الهدوال‬.‫مهن‬ ‫للبنهة‬ ‫مها‬ ‫اسهم‬ ‫بإعطهاء‬ ‫لهك‬ ‫تسهمح‬ ‫مرات‬‫ال‬ ‫من‬ ‫عدد‬ ‫وأي‬ ،‫جك‬‫برنام‬ ‫من‬ ‫مكان‬ ‫أي‬ ‫في‬ ‫نة‬‫اللب‬ ‫هذه‬ ‫تشغيل‬ ‫نك‬‫ويمك‬ ،‫الفادات‬.‫سمى‬‫ي‬ ‫هذا‬‫ستدعاء‬‫ا‬‫لة‬‫الدا‬.‫لة‬‫الدا‬ ‫ثل‬‫م‬ ‫جة‬‫المدم‬ ‫لدوال‬‫ا‬ ‫من‬ ‫ضا‬‫بع‬ ‫عل‬‫بالف‬ ‫ستخدمنا‬‫ا‬ ‫قد‬‫و‬len‫لة‬‫والدا‬ range. ‫المفتاحيهة‬ ‫بالكلمهة‬ ‫الدالهة‬ ‫تُعَهرَّف‬def‫باسهم‬ ‫متبوعهة‬‫المعهرف‬‫الهقواس‬ ‫مهن‬ ‫زوجيهن‬ ‫ثهم‬ ‫للدالهة‬ ‫الهللية‬()‫بنقطتين‬ ‫السطر‬ ‫وينتهي‬ ‫المتغيرات‬ ‫أسماء‬ ‫بعض‬ ‫تحوي‬ ‫قد‬ ‫التي‬.(:)‫لبنة‬ ‫ذلك‬ ‫يعقب‬ ‫الدالة‬ ‫هذه‬ ‫تشكل‬ ‫التي‬ ‫الفادات‬ ‫من‬.‫بساطتها‬ ‫مدى‬ ‫يوضح‬ ‫المثال‬ ‫وهذا‬: ‫دالة‬ ‫تعريف‬ ‫مثال‬7.1.‫دالة‬ ‫تعريف‬ #!/usr/bin/python ‫للفهرس‬ ‫عودة‬‫دالة‬ ‫تعريف‬|50
  • 52.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ # Filename: function1.py def sayHello(): print 'Hello World!' # block belonging to the function # End of function sayHello() # call the function ‫الخرْج‬ $ python function1.py Hello World! ‫يعمل‬ ‫كيف‬ ‫اسهمها‬ ‫دالهة‬ ‫نُعهرِّف‬sayHello‫أعله‬ ‫الموضهح‬ ‫الهتركيب‬ ‫باسهتخدام‬.‫أي‬ ‫تأخهذ‬ ‫ل‬ ‫الدالهة‬ ‫ههذه‬ ‫القوسين‬ ‫بين‬ ‫متغيرات‬ ‫أي‬ ‫عن‬ ‫يُعلن‬ ‫لم‬ ‫وبالتالي‬ ،‫معاملت‬.‫مدخلت‬ ‫مجرد‬ ‫هي‬ ‫الدالة‬ ‫معاملت‬ ‫المقابلة‬ ‫النتائج‬ ‫على‬ ‫ونحصل‬ ‫لها‬ ‫مختلفة‬ ‫قيم‬ ‫تمرير‬ ‫من‬ ‫نتمكن‬ ‫حتى‬ ‫للدالة‬. ‫الدالة‬ ‫معاملت‬ ‫من‬ ‫لتتمكن‬ ‫الدالة‬ ‫لهذه‬ ‫تعطيها‬ ‫قيم‬ ‫سوى‬ ‫ليست‬ ‫والتي‬ ،‫معاملت‬ ‫الدالة‬ ‫تأخذ‬ ‫أن‬ ‫يمكن‬‫عمل‬‫شيئ‬ ‫نسهتدعي‬ ‫عنهدما‬ ‫تحديهدها‬ ‫يتهم‬ ‫المتغيهرات‬ ‫ههذه‬ ‫قيهم‬ ‫أن‬ ‫غيهر‬ ‫المتغيهرات‬ ‫تشهبه‬ ‫املت‬‫ه‬‫المع‬ ‫ههذه‬ .‫ا‬‫ه‬‫م‬ .‫نفسها‬ ‫الدالة‬ ‫داخل‬ ‫قيم‬ ‫لها‬ ‫يسند‬ ‫ول‬ ،‫الدالة‬ ‫عنهدما‬ .(:) ‫بنقطهتين‬ ‫ومفصهولة‬ ،‫الدالهة‬ ‫تعريهف‬ ‫فهي‬ () ‫الهقواس‬ ‫مهن‬ ‫زوج‬ ‫داخهل‬ ‫املت‬‫ه‬‫المع‬ ‫تحهدد‬ ‫طاة‬‫المع‬ ‫السماء‬ ‫ستخدمة؛‬‫الم‬ ‫صطلحات‬‫الم‬ ‫حظ‬‫ل‬ .‫قة‬‫الطري‬ ‫فس‬‫بن‬ ‫يم‬‫الق‬ ‫ها‬‫نعطي‬ ‫لة‬‫الدا‬ ‫ستدعي‬‫ن‬ ‫تدعى‬ ‫الدالة‬ ‫تعريف‬ ‫في‬parameters‫الدالة‬ ‫استدعاء‬ ‫عند‬ ‫تعطى‬ ‫التي‬ ‫القيم‬ ‫بينما‬ ،(‫)معاملت‬ ‫تدعى‬arguments.(‫)معطيات‬ ‫الدالة‬ ‫معاملت‬ ‫استخدام‬ ‫مثال‬7.2.‫الدالة‬ ‫معاملت‬ ‫استخدام‬ #!/usr/bin/python # Filename: func_param.py def printMax(a, b): ‫للفهرس‬ ‫عودة‬‫الدالة‬ ‫معاملت‬ ‫استخدام‬|51
  • 53.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ if a > b: print a, 'is maximum' else: print b, 'is maximum' printMax(3, 4) # directly give literal values x = 5 y = 7 printMax(x, y) # give variables as arguments ‫الخرْج‬ $ python func_param.py 4 is maximum 7 is maximum ‫يعمل‬ ‫كيف‬ ‫باسهم‬ ‫دالهة‬ ‫ا‬‫ه‬‫عرفن‬ ،‫ا‬‫ه‬‫هن‬printMax‫تسهمى‬ ‫المعهاملت‬ ‫مهن‬ ‫اثنيهن‬ ‫نأخهذ‬ ‫حيهث‬a‫و‬b.‫واسهتنتجنا‬ ‫للفادة‬ ‫بسيط‬ ‫باستخدام‬ ‫الكبر‬ ‫العدد‬if..else‫الكبر‬ ‫العدد‬ ‫طبعنا‬ ‫ثم‬. ‫للدالهة‬ ‫اسهتخدام‬ ‫أول‬ ‫فهي‬printMax‫المعطيهات‬ ‫أي‬ ‫العهداد؛‬ ‫نعطهي‬ ،.،‫الثهاني‬ ‫السهتخدام‬ ‫فهي‬ ‫المتغيرات‬ ‫باستخدام‬ ‫الدالة‬ ‫نستدعي‬.printMax(x, y(‫المعطى‬ ‫قيمة‬ ‫إسناد‬ ‫إلى‬ ‫تؤدي‬x‫إلى‬ ‫مل‬‫المعا‬a‫طى‬‫المع‬ ‫مة‬‫قي‬ ‫و‬y‫مل‬‫المعا‬ ‫لى‬‫إ‬ ‫سند‬‫ت‬b.‫لة‬‫الدا‬printMax‫قة‬‫الطري‬ ‫فس‬‫بن‬ ‫مل‬‫تع‬ ‫الحالتين‬ ‫في‬. ‫المحلية‬ ‫المتغيرات‬ ‫مهن‬ ‫حهال‬ ‫بهأي‬ ‫مرتبطهة‬ ‫تكهون‬ ‫ل‬ ‫فهإنه‬ ،‫الدالهة‬ ‫تعريهف‬ ‫داخهل‬ ‫المتغيهرات‬ ‫عهن‬ ‫بالهعلن‬ ‫تقهوم‬ ‫عنهدما‬ ‫يرات‬‫المتغ‬ ‫سماء‬‫أ‬ .‫لة‬‫الدا‬ ‫يف‬‫تعر‬ ‫خارج‬ ‫سم‬‫ال‬ ‫فس‬‫ن‬ ‫مل‬‫تح‬ ‫لتي‬‫ا‬ ‫لخرى‬‫ا‬ ‫يرات‬‫المتغ‬ ‫مع‬ ‫لحوال‬‫ا‬ ‫تعتهبر‬‫محليهة‬)local‫نطهاق‬ ‫يسهمى‬ ‫مها‬ ‫وههذا‬ ، ‫الدالهة‬ ‫داخهل‬ (‫مهدى‬)scope‫جميهع‬ .‫المتغيهر‬ ( .‫السم‬ ‫تعريف‬ ‫نقطة‬ ‫من‬ ‫بداية‬ ،‫فيها‬ ‫عنها‬ ‫أُعان‬ ‫التي‬ ‫اللبنة‬ ‫بمدى‬ ‫محدودة‬ ‫المتغيرات‬ ‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬ ‫مثال‬7.3.‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬ #!/usr/bin/python # Filename: func_local.py ‫للفهرس‬ ‫عودة‬‫المحلية‬ ‫المتغيرات‬ ‫استخدام‬|52
  • 54.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ def func(x): print 'x is', x x = 2 print 'Changed local x to', x x = 50 func(x) print 'x is still', x ‫الخرْج‬ $python func_local.py x is 50 Changed local x to 2 x is still 50 ‫يعمل‬ ‫كيف‬ ‫ا‬‫ه‬‫فيه‬ ‫تسهتخدم‬ ‫الهتي‬ ‫الهولى‬ ‫المهرة‬ ،‫الدالهة‬ ‫ههذه‬ ‫فهي‬‫قيمهة‬‫السهم‬x‫المعامهل‬ ‫قيمهة‬ ‫بيثهون‬ ‫تسهتخدم‬ ‫الدالة‬ ‫في‬ ‫عنه‬ ‫المعلن‬. ‫أسندناالقيمة‬ ‫ذلك‬ ‫بعد‬2‫إلى‬x.‫السم‬x‫نغير‬ ‫عندما‬ ‫لذا‬ ‫لدينا؛‬ ‫التي‬ ‫الدالة‬ ‫داخل‬ ‫محليا‬ ‫يعتبر‬ ‫قيمة‬x‫تظل‬ ،‫الدالة‬ ‫في‬x‫هي‬ ‫كما‬ ‫الرئيسة‬ ‫اللبنة‬ ‫في‬ ‫المعرفة‬. ‫إفادة‬ ‫في‬print‫قيمة‬ ‫أن‬ ‫من‬ ‫نتأكد‬ ‫الخيرة‬x‫بالفعل‬ ‫تُمس‬ ‫لم‬ ‫الرئيسة‬ ‫اللبنة‬ ‫في‬. ‫الفادة‬ ‫استخدام‬global ‫ا‬‫ه‬‫محلي‬ ‫ليهس‬ ‫السهم‬ ‫أن‬ ‫بيثهون‬ ‫ار‬‫ه‬‫إخب‬ ‫فعليهك‬ ،‫الدالهة‬ ‫ارج‬‫ه‬‫خ‬ ‫معهرّف‬ ‫اسهم‬ ‫إلهى‬ ‫قيمهة‬ ‫سناد‬‫إ‬ ‫أردت‬ ‫إذا‬ ‫ولكنه‬‫عمومي‬)global.(‫إفادة‬ ‫باستخدام‬ ‫ذلك‬ ‫ويتم‬global.‫متغير‬ ‫إلى‬ ‫قيمة‬ ‫إسناد‬ ‫يمكن‬ ‫ل‬ ‫إفادة‬ ‫استخدام‬ ‫دون‬ ‫الدالة‬ ‫خارج‬ ‫معرف‬global. ‫الدالة‬ ‫خارج‬ ‫المحددة‬ ‫المتغيرات‬ ‫قيم‬ ‫استخدام‬ ‫يمكنك‬)‫نفس‬ ‫يحمل‬ ‫متغير‬ ‫وجود‬ ‫عدم‬ ‫بافتراض‬ ‫لة‬‫الدا‬ ‫خل‬‫دا‬ ‫سم‬‫ال‬.(‫قارئ‬‫ل‬ ‫ضح‬‫الوا‬ ‫ير‬‫غ‬ ‫من‬ ‫عل‬‫يج‬ ‫لنه‬ ‫به‬‫تجن‬ ‫ضل‬‫ويف‬ ‫هذا‬‫ب‬ ‫صح‬‫يُن‬ ‫ل‬ ‫أنه‬ ‫ير‬‫غ‬ ‫المتغير‬ ‫هذا‬ ‫عُرّف‬ ‫أين‬ ‫البرنامج‬.‫إفادة‬ ‫استخدام‬global‫معرّف‬ ‫المتغير‬ ‫أن‬ ‫إلى‬ ‫بوضوح‬ ‫يشير‬ ‫خارجية‬ ‫لبنة‬ ‫في‬. ‫مثال‬7.4.‫الفادة‬ ‫استخدام‬global #!/usr/bin/python ‫للفهرس‬ ‫عودة‬‫الفادة‬ ‫استخدام‬global|53
  • 55.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ # Filename: func_global.py def func(): global x print 'x is', x x = 2 print 'Changed global x to', x x = 50 func() print 'Value of x is', x ‫الخرْج‬ $ python func_global.py x is 50 Changed global x to 2 Value of x is 2 ‫يعمل‬ ‫كيف‬ ‫الفهادة‬ ‫تسهتخدم‬global‫أن‬ ‫لهعلن‬x‫إلهى‬ ‫قيمهة‬ ‫نسهند‬ ‫عنهدما‬ ‫ولههذا؛‬ ،‫عمهومي‬ ‫متغيهر‬x‫داخهل‬ ‫قيمة‬ ‫نستخدم‬ ‫عندما‬ ‫يظهر‬ ‫التغيير‬ ‫هذا‬ ‫فإن‬ ،‫الدالة‬x‫الرئيسة‬ ‫اللبنة‬ ‫في‬. ‫متغيهر‬ ‫مهن‬ ‫أكهثر‬ ‫تحديهد‬ ‫يمكنهك‬global‫الفهادة‬ ‫نفهس‬ ‫باسهتخدام‬ ‫واحهد‬global.‫سهبيل‬ ‫علهى‬ ‫المثال‬:global x, y, z. ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫الهدوال‬ ‫بعهض‬ ‫عاملت‬‫م‬ ‫جعهل‬ ‫فهي‬ ‫ترغهب‬ ‫قهد‬‫اختياريهة‬‫يرغهب‬ ‫لهم‬ ‫ال‬‫ه‬‫ح‬ ‫فهي‬ ‫مبدئيهة‬ ‫قيهم‬ ‫واسهتخدام‬ ‫يمكنك‬ .‫للمعطيات‬ ‫مبدئية‬ ‫قيم‬ ‫باستخدام‬ ‫ذلك‬ ‫ويتم‬ .‫المعاملت‬ ‫لهذه‬ ‫قيم‬ ‫إعطاء‬ ‫في‬ ‫المستخدم‬ ) ‫بعلمهة‬ ‫الدالهة‬ ‫تعريهف‬ ‫فهي‬ ‫المعامهل‬ ‫اسهم‬ ‫بإتبهاع‬ ‫للمعطيهات‬ ‫المبدئيهة‬ ‫القيهم‬ ‫تحديهد‬=‫متبوعهة‬ ( .‫المبدئية‬ ‫بالقيمة‬ ‫مهن‬ ‫أكهثر‬ ‫بشهيء‬ ‫ذلهك‬ ‫شهرح‬ ‫وسهيتم‬ .‫ثابتها‬ ‫تكهون‬ ‫أن‬ ‫ينبغهي‬ ‫للمعطهى‬ ‫المبدئيهة‬ ‫القيمهة‬ ‫بهأن‬ ‫ا‬‫ه‬‫علم‬ .‫هذا‬ ‫تذكر‬ ‫فقط‬ ،‫اﻵن‬ ‫اما‬ .‫لحقة‬ ‫فصول‬ ‫في‬ ‫التفصيل‬ ‫للفهرس‬ ‫عودة‬‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬|54
  • 56.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬ ‫مثال‬7.5.‫للمعطيات‬ ‫المبدئية‬ ‫القيم‬ ‫استخدام‬ #!/usr/bin/python # Filename: func_default.py def say(message, times = 1): print message * times say('Hello') say('World', 5) ‫الخرْج‬ $python func_default.py Hello WorldWorldWorldWorldWorld ‫يعمل‬ ‫كيف‬ ‫المسماة‬ ‫الدالة‬ ‫تستخدم‬say‫حسبمانريد‬ ‫المرات‬ ‫من‬ ‫عددا‬ ‫ما‬ ‫سلسلة‬ ‫لطباعة‬.‫أية‬ ‫نعطها‬ ‫لم‬ ‫وإذا‬ ‫فقهط‬ ‫واحهدة‬ ‫لمهرة‬ ‫الجملهة‬ ‫طباعهة‬ ‫ههو‬ ‫الفتراضهي‬ ‫فالوضهع‬ ،‫قيمهة‬.‫جعهل‬ ‫طريهق‬ ‫عن‬ ‫ذلهك‬ ‫نحقهق‬ ‫للمعامل‬ ‫المبدئية‬ ‫المعطى‬ ‫قيمة‬times‫تساوي‬1. ‫للدالهة‬ ‫اسهتخدام‬ ‫أول‬ ‫فهي‬say‫واحهدة‬ ‫مهرة‬ ‫الجملهة‬ ‫بطباعهة‬ ‫ههي‬ ‫فتقهوم‬ ‫فقهط‬ ‫النهص‬ ‫نعطهي‬ ،.‫فهي‬ ‫والمعطى‬ ‫النص‬ ‫من‬ ‫كل‬ ‫نعطيها‬ ‫الثانية‬ ‫المرة‬5‫نريد‬ ‫أننا‬ ‫يعني‬ ‫والذي‬‫قول‬‫مرات‬ ‫خمس‬ ‫الجملة‬. ‫هام‬ ‫مبدئيهة؛‬ ‫معطيهات‬ ‫قيهم‬ ‫تُعطهى‬ ‫أن‬ ‫يمكهن‬ ‫فقهط‬ ‫املت‬‫ه‬‫المع‬ ‫قائمهة‬ ‫نهايهة‬ ‫فهي‬ ‫الهتي‬ ‫املت‬‫ه‬‫المع‬ ‫معطى‬ ‫قيمة‬ ‫بدون‬ ‫معامل‬ ‫قبل‬ ‫لمعامل‬ ‫مبدئية‬ ‫معطى‬ ‫قيمة‬ ‫إعطاء‬ ‫يمكن‬ ‫ل‬ ‫أخرى‬ ‫بعبارة‬ ‫مبدئية‬. ‫وضهعيتها‬ ‫حسهب‬ ‫المعهاملت‬ ‫إلهى‬ ‫تسهند‬ ‫القيهم‬ ‫أن‬ ‫بسهبب‬ ‫وذلهك‬.‫المثهال‬ ‫سهبيل‬ ‫علهى‬:def func(a, b=5(‫بينما‬ ‫صالحة‬def func(a=5, b(‫صالحة‬ ‫غير‬. ‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫حينئذ‬ ،‫فقط‬ ‫منها‬ ‫بعضا‬ ‫تحدد‬ ‫أن‬ ‫وتريد‬ ‫المعاملت‬ ‫من‬ ‫العديد‬ ‫ذات‬ ‫الدوال‬ ‫بعض‬ ‫لديك‬ ‫كان‬ ‫إذا‬ ‫يسهمى‬ ‫مها‬ ‫وههذا‬ - ‫تسهميتها‬ ‫طريهق‬ ‫عهن‬ ‫المعهاملت‬ ‫لههذا‬ ‫قيمها‬ ‫تعطهي‬ ‫أن‬ ‫يمكنهك‬‫الكلمهات‬ ‫معطيات‬ ‫المفتاحية‬)keyword arguments‫الموضع‬ ‫من‬ ‫بدل‬ (‫المفتاحية‬ ‫)الكلمة‬ ‫السم‬ ‫نستخدم‬ - ( ‫للفهرس‬ ‫عودة‬‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬|55
  • 57.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫الدالة‬ ‫معطيات‬ ‫لتحديد‬ (‫الوقت‬ ‫طوال‬ ‫نستخدمه‬ ‫كنا‬ ‫)الذي‬ ‫ولهذا‬‫ميزتان‬‫بترتيب‬ ‫الهتمام‬ ‫إلى‬ ‫حاجة‬ ‫في‬ ‫لسنا‬ ‫أننا‬ ‫حيث‬ ‫أسهل‬ ‫يكون‬ ‫الدالة‬ ‫استخدام‬ ‫الولى؛‬ : ‫للمعاملت‬ ‫أن‬ ‫بافتراض‬ ،‫فقط‬ ‫نريدها‬ ‫التي‬ ‫للوسائط‬ ‫قيم‬ ‫إعطاء‬ ‫نستطيع‬ ‫أننا‬ ‫والثانية؛‬ .‫المعطيات‬ .‫مبدئية‬ ‫معطيات‬ ‫قيم‬ ‫الخرى‬ ‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬ ‫مثال‬7.6.‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬ #!/usr/bin/python # Filename: func_key.py def func(a, b=5, c=10): print 'a is', a, 'and b is', b, 'and c is', c func(3, 7) func(25, c=24) func(c=50, a=100) ‫الخرْج‬ $ python func_key.py a is 3 and b is 7 and c is 10 a is 25 and b is 5 and c is 24 a is 100 and b is 5 and c is 50 ‫يعمل‬ ‫كيف‬ ‫سماه‬‫الم‬ ‫لة‬‫الدا‬func‫مع‬ ‫عاملن‬‫م‬ ‫يه‬‫يل‬ ،‫ياته‬‫لمعط‬ ‫ية‬‫مبدئ‬ ‫يم‬‫ق‬ ‫بدون‬ ‫حد‬‫وا‬ ‫مل‬‫معا‬ ‫لى‬‫ع‬ ‫توي‬‫تح‬ ‫لمعطياتهما‬ ‫مبدئية‬ ‫قيم‬. ‫الهول‬ ‫السهتخدام‬ ‫فهي‬func(3, 7(‫المعامهل‬ ،a‫القيمهة‬ ‫يأخهذ‬3‫والمعامهل‬ ،b‫القيمهة‬ ‫يأخهذ‬5 ‫والمعامل‬c‫المبدئية‬ ‫القيمة‬ ‫يأخذ‬10. ‫ثاني‬‫ال‬ ‫ستخدام‬‫ال‬ ‫في‬func(25, c=24(‫ير‬‫المتغ‬a‫مة‬‫القي‬ ‫خذ‬‫يأ‬25‫طى‬‫المع‬ ‫موضع‬ ‫سبب‬‫ب‬. ‫المعامل‬ ‫بعدها‬c‫القيمة‬ ‫على‬ ‫يحصل‬24‫المتغير‬ ‫بينما‬b‫المبدئية‬ ‫قيمته‬ ‫على‬ ‫يحصل‬5. ‫الثهالث‬ ‫السهتخدام‬ ‫فهي‬func(c=50, a=100(‫بكلمهات‬ ‫معطيهات‬ ‫كامهل‬ ‫بشهكل‬ ‫اسهتخدمنا‬ ‫؛‬ ‫القيهم‬ ‫لتحديهد‬ ‫مفتاحيهة‬.‫للمعامهل‬ ‫المحهددة‬ ‫القيمهة‬ ‫أن‬ ‫لحهظ‬c‫قبهل‬ ‫موضهوعة‬a‫أننها‬ ‫رغهم‬ ‫علهى‬ ‫حددنا‬a‫قبل‬c‫الدالة‬ ‫تعريف‬ ‫أثناء‬. ‫للفهرس‬ ‫عودة‬‫المفتاحية‬ ‫الكلمات‬ ‫معطيات‬ ‫استخدام‬| 56
  • 58.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الفادة‬return ‫الفادة‬ ‫تستخدم‬return‫في‬‫الرجوع‬‫اختياريا‬ ‫يمكننا‬ . ‫الدالة‬ ‫من‬ ‫الخروج‬ ‫أخرى‬ ‫بعبارة‬ ،‫دالة‬ ‫من‬ ‫قيمة‬ ‫إرجاع‬.‫أيضا‬ ‫الدالة‬ ‫من‬ ‫الفادة‬ ‫استخدام‬return ‫مثال‬7.7.‫الفادة‬ ‫استخدام‬return #!/usr/bin/python # Filename: func_return.py def maximum(x, y): if x > y: return x else: return y print maximum(2, 3) ‫الخرْج‬ $ python func_return.py ‫يعمل‬ ‫كيف‬ ‫الدالة‬maximum‫المعطاة‬ ‫العداد‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫وهي‬ ،‫المعاملت‬ ‫من‬ ‫الكبر‬ ‫الحد‬ ‫لنا‬ ‫ترجع‬ ‫للدالة‬.‫إفادة‬ ‫تستعمل‬ ‫وهي‬if..else‫وبعدها‬ ‫الكبر‬ ‫العدد‬ ‫قيمة‬ ‫على‬ ‫للعثور‬ ‫بسيطة‬‫ترجع‬‫لنا‬ ‫القيمة‬ ‫تلك‬. ‫ملحظة‬:‫إفادة‬ ‫تكون‬ ‫عندما‬return‫تساوي‬ ‫فإنها‬ ‫قيمة‬ ‫أية‬ ‫بدون‬None.‫تعتبر‬None‫نوعا‬ ‫شيء‬ ‫ل‬ ‫ثل‬‫يم‬ ‫ثون‬‫بي‬ ‫في‬ ‫صا‬‫خا‬.‫أي‬ ‫مل‬‫يح‬ ‫ل‬ ‫ير‬‫المتغ‬ ‫أن‬ ‫ني‬‫لتع‬ ‫ستخدم‬‫ت‬ ‫ثال‬‫الم‬ ‫سبيل‬ ‫لى‬‫ع‬ ‫هي‬‫ف‬ ‫قيمته‬ ‫كانت‬ ‫إذا‬ ‫قيمة‬None. ‫ادة‬‫ه‬‫إف‬ ‫علهى‬ ‫ضهمنيا‬ ‫تحتهوي‬ ‫دالهة‬ ‫كهل‬return None‫ادة‬‫ه‬‫إف‬ ‫تكتهب‬ ‫لهم‬ ‫ا‬‫ه‬‫م‬ ‫نهايتهها‬ ‫فهي‬return ‫بك‬ ‫الخاصة‬.‫بتنفيذ‬ ‫ذلك‬ ‫رؤية‬ ‫ويمكنك‬literal>print someFunction() def someFunction(): pass ‫للفهرس‬ ‫عودة‬‫الفادة‬ ‫استخدام‬return|57
  • 59.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫إفادة‬pass ‫الفادات‬ ‫من‬ ‫فارغة‬ ‫لبنة‬ ‫إلى‬ ‫للشارة‬ ‫بيثون‬ ‫في‬ ‫تستخدم‬. ‫التوثيق‬ ‫جمل‬ ‫تدعى‬ ‫أنيقة‬ ‫ميزة‬ ‫لديها‬ ‫بيثون‬‫التوثيق‬ (‫)سلسل‬ ‫جمل‬)documentation strings‫والتي‬ ( ‫المختصر‬ ‫اسمها‬ ‫خلل‬ ‫من‬ ‫عادة‬ ‫إليها‬ ‫يشار‬docstrings‫عليك‬ ‫يجب‬ ‫هامة‬ ‫أداة‬ ‫التوثيق‬ ‫جمل‬ . .‫للفهم‬ ‫سهولة‬ ‫أكثر‬ ‫وتجعله‬ ،‫أفضل‬ ‫بشكل‬ ‫البرنامج‬ ‫توثيق‬ ‫على‬ ‫تساعد‬ ‫إنها‬ ‫حيث‬ ‫منها‬ ‫تستفيد‬ ‫أن‬ ‫البرنامهج‬ ‫يعمهل‬ ‫ا‬‫ه‬‫بينم‬ ‫مثل‬ ‫دالهة‬ ‫من‬ ‫التوثيهق‬ ‫جمهل‬ ‫علهى‬ ‫الحصهول‬ ‫من‬ -‫للعجهب‬ ‫ا‬‫ه‬‫-وي‬ ‫حهتى‬ ‫ا‬‫ه‬‫يمكنن‬ !‫بالفعل‬ ‫التوثيق‬ ‫جمل‬ ‫استخدام‬ ‫مثال‬7.8.‫التوثيق‬ ‫جمل‬ ‫استخدام‬ #!/usr/bin/python # Filename: func_doc.py def printMax(x, y): '''Prints the maximum of two numbers. The two values must be integers.''' x = int(x) # convert to integers, if possible y = int(y) if x > y: print x, 'is maximum' else: print y, 'is maximum' printMax(3, 5) print printMax.__doc__ ‫الخرْج‬ $ python func_doc.py ‫للفهرس‬ ‫عودة‬‫التوثيق‬ ‫جمل‬ ‫استخدام‬|58
  • 60.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ 5 is maximum Prints the maximum of two numbers. The two values must be integers. ‫يعمل‬ ‫كيف‬ ‫هي‬ ‫الدالة‬ ‫من‬ ‫الول‬ ‫المنطقي‬ ‫السطر‬ ‫في‬ ‫النصية‬ ‫الجملة‬‫توثيق‬ ‫جملة‬‫الدالة‬ ‫هذه‬.‫جمل‬ ‫أن‬ ‫لحظ‬ ‫على‬ ‫أيضا‬ ‫تنطبق‬ ‫التوثيق‬‫الوحدات‬‫و‬‫الصناف‬‫الخاصة‬ ‫فصولها‬ ‫في‬ ‫بشرحها‬ ‫نقوم‬ ‫سوف‬ ‫والتي‬. ‫يبدأ‬ ‫سطر‬ ‫أول‬ ‫حيث‬ ‫السطر‬ ‫متعددة‬ ‫نصية‬ ‫سلسلة‬ ‫استخدام‬ ‫هي‬ ‫التوثيق‬ ‫جما‬ ‫في‬ ‫المتبعة‬ ‫العادة‬ ‫بنقطة‬ ‫وينتهي‬ ‫كبير‬ ‫بحرف‬.‫المفصل‬ ‫الشرح‬ ‫من‬ ‫بجملة‬ ‫متبوعا‬ ‫فارغ‬ ‫الثاني‬ ‫السطر‬ ‫ذلك‬ ‫بعد‬ ‫الثالث‬ ‫السطر‬ ‫في‬ ‫يبدأ‬.‫بشدة‬ ‫ينصح‬‫غير‬ ‫دوالك‬ ‫لكل‬ ‫التوثيق‬ ‫جمل‬ ‫كل‬ ‫في‬ ‫النظام‬ ‫هذا‬ ‫تتبع‬ ‫أن‬ ‫البديهية‬. ‫الدالهة‬ ‫توثيهق‬ ‫جملهة‬ ‫إلهى‬ ‫الوصهول‬ ‫يمكننها‬printMax‫خاصهية‬ ‫باسهتخدام‬__doc__)‫لحهظ‬ ‫المزدوجة‬ ‫المنخفضة‬ ‫الشرطة‬(‫بالدالة‬ ‫الخاصة‬.‫تعامل‬ ‫بيثون‬ ‫أن‬ ‫تذكر‬ ‫فقط‬‫شيء‬ ‫كل‬‫أنه‬ ‫على‬ ‫أيضا‬ ‫الدوال‬ ‫يشمل‬ ‫وهذا‬ ،‫كائن‬.‫المتعلق‬ ‫الفصل‬ ‫في‬ ‫الكائنات‬ ‫عن‬ ‫المزيد‬ ‫نتعلم‬ ‫وسوف‬‫بالطبقات‬. ‫اسهتخدمت‬ ‫قهد‬ ‫كنهت‬ ‫اذا‬help()‫التوثيهق‬ ‫مل‬‫ج‬ ‫اسهتخدام‬ ‫بالفعهل‬ ‫رأيهت‬ ‫نك‬‫أ‬ ‫فلبهد‬ ، ‫بيثهون‬ ‫فهي‬. ‫صية‬‫خا‬ ‫لب‬‫ج‬ ‫هو‬ ‫له‬‫تفع‬ ‫ما‬ ‫كل‬__doc__‫يق‬‫أن‬ ‫سلوب‬‫بأ‬ ‫لك‬ ‫ضها‬‫وتعر‬ ‫لة‬‫الدا‬ ‫هذه‬‫ل‬ ‫ية‬‫المنتم‬. ‫أعله‬ ‫هة‬‫ه‬‫المبين‬ ‫هة‬‫ه‬‫الدال‬ ‫هى‬‫ه‬‫عل‬ ‫هك‬‫ه‬‫ذل‬ ‫هة‬‫ه‬‫تجرب‬ ‫هك‬‫ه‬‫يمكن‬-‫هِف‬‫ه‬‫أض‬ ‫هط‬‫ه‬‫فق‬help(printMax(‫هي‬‫ه‬‫ف‬ ‫برنامجك‬.‫مفتاح‬ ‫تضغط‬ ‫أن‬ ‫وتذكر‬q‫من‬ ‫للخروج‬‫المساعدة‬. ‫الطريقة‬ ‫بذات‬ ‫برنامجك‬ ‫وثائق‬ ‫استحضار‬ ‫يمكنها‬ ‫مأتمتة‬ ‫الدوات‬ ‫توجد‬.‫فإنني‬ ،‫لذا‬‫بشدة‬ ‫أنصح‬ ‫ا‬‫ه‬‫تكتبه‬ ‫بديهيهة‬ ‫غيهر‬ ‫دالهة‬ ‫لهي‬ ‫توثيهق‬ ‫جمهل‬ ‫تسهتخدم‬ ‫أن‬.‫الهمر‬pydoc‫توزيعهة‬ ‫مهع‬ ‫يهأتي‬ ‫الهذي‬ ‫كمثل‬ ‫يعمل‬ ‫بيثون‬help()‫التوثيق‬ ‫جمل‬ ‫مستخدما‬. ‫الخلصة‬ ‫جوانبها‬ ‫كافة‬ ‫نغطي‬ ‫لم‬ ‫أننا‬ ‫لحظ‬ ‫ولكن‬ ،‫بالدوال‬ ‫المتعلقة‬ ‫الجوانب‬ ‫من‬ ‫الكثير‬ ‫رأينا‬ ‫لقد‬.‫ورغم‬ ‫بيثون‬ ‫دوال‬ ‫ناحية‬ ‫من‬ ‫يوم‬ ‫كل‬ ‫ستستخدمها‬ ‫التي‬ ‫المور‬ ‫معظم‬ ‫بتغطية‬ ‫بالفعل‬ ‫قمنا‬ ‫فقد‬ ‫ذلك‬. ‫بيثون‬ ‫وحدات‬ ‫وإنشاء‬ ‫باستخدام‬ ‫نقوم‬ ‫كيف‬ ‫نرى‬ ‫سوف‬ ‫يلي؛‬ ‫وفيما‬. ‫للفهرس‬ ‫عودة‬‫الخلصة‬|59
  • 61.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬8‫الوحدات‬ . ‫المحتويات‬ ‫قائمة‬ ‫مقدمة‬ ‫الوحدة‬ ‫استخدام‬sys . ‫المصرّفة‬ ‫البيتات‬ ‫ملفات‬pyc ‫الفادة‬from..import __ ‫خاصية‬name‫للوحدة‬ __ __ ‫استخدام‬name‫الوحدة‬ __ ‫الخاصة‬ ‫وحداتك‬ ‫عمل‬ ‫الخاصة‬ ‫وحداتك‬ ‫إنشاء‬ from..import ‫الدالة‬dir() ‫الدالة‬ ‫استخدام‬dir ‫الخلصة‬ ‫مقدمة‬ ‫قه‬‫مهرة‬ ‫الهدوال‬ ‫تعريهف‬ ‫طريهق‬ ‫عهن‬ ‫برنامجهك‬ ‫فهي‬ ‫الكهود‬ ‫اسهتخدام‬ ‫إعهادة‬ ‫يمكنهك‬ ‫كيهف‬ ‫رأيهت‬ ‫د‬ ‫واحدة‬.‫كما‬ ‫نعم‬ ‫تكتبها؟‬ ‫التي‬ ‫الخرى‬ ‫البرامج‬ ‫في‬ ‫الدوال‬ ‫من‬ ‫عدد‬ ‫استخدام‬ ‫إعادة‬ ‫أردت‬ ‫لو‬ ‫ماذا‬ ‫الوحدات‬ ‫هو‬ ‫الجواب‬ ،‫خمنت‬ ‫قد‬)modules.(‫الدوال‬ ‫جميع‬ ‫يحتوي‬ ‫ملف‬ ‫هي‬ ‫ببساطة‬ ‫الوحدة‬ ‫بتعريفها‬ ‫قمت‬ ‫التي‬ ‫والمتغيرات‬.،‫أخرى‬ ‫برامج‬ ‫في‬ ‫الوحدة‬ ‫هذه‬ ‫استخدام‬ ‫ولعادة‬‫يجب‬‫يكون‬ ‫أن‬ ‫بامتداد‬ ‫الوحدة‬ ‫ملف‬ ‫اسم‬.py. ‫الخرى‬ ‫للبرامج‬ ‫يمكن‬‫استيراد‬‫وظيفتها‬ ‫من‬ ‫للستفادة‬ ‫الوحدة‬.‫أمكننا‬ ‫التي‬ ‫الطريقة‬ ‫نفس‬ ‫وهي‬ ‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫استخدام‬ ‫بها‬.‫القياسيه‬ ‫المكتبة‬ ‫وحدات‬ ‫استخدام‬ ‫كيفية‬ ‫نرى‬ ‫سوف‬ ،‫أول‬. ‫الوحدة‬ ‫استخدام‬sys ‫إفادة‬sys ‫مثال‬8.1.‫الوحدة‬ ‫استخدام‬sys #!/usr/bin/python # Filename: using_sys.py import sys print 'The command line arguments are:' for i in sys.argv: ‫للفهرس‬ ‫عودة‬‫فصل‬8.‫الوحدات‬|60
  • 62.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ print i print 'nnThe PYTHONPATH is', sys.path, 'n' ‫الخرْج‬ $ python using_sys.py we are arguments The command line arguments are: using_sys.py we are arguments The PYTHONPATH is ['/home/swaroop/byte/code', '/usr/lib/python23.zip', '/usr/lib/python2.3', '/usr/lib/python2.3/plat-linux2', '/usr/lib/python2.3/lib-tk', '/usr/lib/python2.3/lib-dynload', '/usr/lib/python2.3/site-packages', '/usr/lib/python2.3/site-packages/gtk-2.0'] ‫يعمل‬ ‫كيف‬ ‫قمنا‬ ‫البداية‬ ‫في‬‫باستيراد‬‫الوحدة‬sys‫الفادة‬ ‫باستخدام‬import.‫بيثون‬ ‫إخبار‬ ‫هذا‬ ‫يعني‬ ،‫مبدئيا‬ ‫الوحدة‬ ‫تلك‬ ‫استخدام‬ ‫نريد‬ ‫أننا‬.‫الوحدة‬sys‫والبيئة‬ ‫بيثون‬ ‫بمفسر‬ ‫ترتبط‬ ‫وظائف‬ ‫على‬ ‫تحتوي‬ ‫به‬ ‫الخاصة‬. ‫إفهادة‬ ‫بيثهون‬ ‫تنفهذ‬ ‫عنهدما‬import sys‫الوحهدة‬ ‫عهن‬ ‫تبحهث‬ ‫فإنهها‬ ،sys.py‫الدلهة‬ ‫أحهد‬ ‫فهي‬ ‫المتغيهر‬ ‫فهي‬ ‫المسهرودة‬sys.path.‫اللبنهة‬ ‫فهي‬ ‫الموجهودة‬ ‫الفهادات‬ ‫تشهغيل‬ ‫يتهم‬ ‫الملهف‬ ‫وجهد‬ ‫إذا‬‫ه‬‫ف‬ ‫الوحدة‬ ‫تصبح‬ ‫وبعدها‬ ‫بالوحدة‬ ‫الخاصة‬ ‫الرئيسة‬‫متاحة‬‫للستعمال‬.‫يتم‬ ‫الستبداء‬ ‫هذا‬ ‫أن‬ ‫لحظ‬ ‫عند‬ ‫فقط‬‫أول‬‫الوحدة‬ ‫فيها‬ ‫تستدعى‬ ‫مرة‬.‫أن‬ ‫اعلم‬ ‫كذلك‬'sys'‫اختصار‬'system) '‫نظام‬.( ‫المتغير‬argv‫الوحدة‬ ‫في‬sys‫النقطي‬ ‫الترقيم‬ ‫باستخدام‬ ‫إليه‬ ‫يشار‬-sys.argv-‫مميزات‬ ‫أحد‬ ‫ير‬‫متغ‬ ‫ية‬‫أ‬ ‫مع‬ ‫شتبه‬‫ي‬ ‫ل‬ ‫سم‬‫ال‬ ‫أن‬ ‫سلوب‬‫ال‬ ‫هذا‬argv‫جك‬‫برنام‬ ‫في‬ ‫ستخدم‬‫م‬ ‫خر‬‫آ‬.‫كذلك‬‫و‬ ‫الوحدة‬ ‫من‬ ‫جزءا‬ ‫السم‬ ‫ذلك‬ ‫كون‬ ‫على‬ ‫بوضوح‬ ‫يدل‬ ‫فإنه‬sys. ‫المتغير‬sys.argv‫عن‬ ‫عبارة‬‫قائمة‬‫السلسل‬ ‫من‬)‫في‬ ‫بالتفصيل‬ ‫القوائم‬ ‫ستشرح‬‫لحقة‬ ‫أقسام‬.( ‫فإن‬ ‫يدا‬‫تحد‬ ‫كثر‬‫أ‬ ‫شكل‬‫وب‬sys.argv‫مة‬‫قائ‬ ‫لى‬‫ع‬ ‫توي‬‫يح‬‫لوامر‬‫ا‬ ‫سطر‬ ‫معطيات‬،‫خرى‬‫أ‬ ‫بارة‬‫بع‬ ‫الوامر‬ ‫سطر‬ ‫في‬ ‫برنامجك‬ ‫إلى‬ ‫الممررة‬ ‫المعطيات‬. ‫معطيهات‬ ‫لتحديهد‬ ‫طريقهة‬ ‫عهن‬ ‫فهابحث‬ ‫برامجهك‬ ‫وتشهغيل‬ ‫لكتابهة‬ ‫تطهوير‬ ‫بيئة‬ ‫تسهتخدم‬ ‫كنهت‬ ‫إذا‬ ‫التطوير‬ ‫بيئة‬ ‫قوائم‬ ‫في‬ ‫لبرنامجك‬ ‫الوامر‬ ‫سطر‬. ‫ننفذ‬ ‫عندما‬ ‫وهنا؛‬python using_sys.py we are arguments‫الوحدة‬ ‫بتشغيل‬ ‫نقوم‬ ، ‫للفهرس‬ ‫عودة‬‫فصل‬8.‫الوحدات‬|61
  • 63.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ using_sys.py‫المر‬ ‫باستخدام‬python‫تمريرها‬ ‫يتم‬ ‫معطيات‬ ‫له‬ ‫التالية‬ ‫الخرى‬ ‫والشياء‬ ‫البرنامج‬ ‫إلى‬.‫المتغير‬ ‫في‬ ‫بتخزينها‬ ‫بيثون‬ ‫تقوم‬sys.argv. ‫قائمهة‬ ‫فهي‬ ‫معطهى‬ ‫أول‬ ‫ا‬‫ه‬‫دائم‬ ‫ههو‬ ‫يعمهل‬ ‫الهذي‬ ‫البرنامهج‬ ‫اسهم‬ ‫أن‬ ‫تهذكر‬sys.argv.‫ههذه‬ ‫فهي‬ ‫لهذا‬ ‫هدينا‬‫ه‬‫ل‬ ‫هيكون‬‫ه‬‫س‬ ‫هة‬‫ه‬‫الحال‬'using_sys.py'‫ك‬sys.argv[0[‫و‬'we'‫ك‬sys.argv[1[‫و‬' are'‫ك‬sys.argv[2[‫و‬'arguments'‫ك‬sys.argv[3[.ّ‫العهد‬ ‫تبهدأ‬ ‫بيثهون‬ ‫أن‬ ‫لحهظ‬ ‫من‬0‫من‬ ‫وليس‬1. ‫توي‬‫يح‬sys.path‫ها‬‫من‬ ‫حدات‬‫الو‬ ‫ستيراد‬‫ا‬ ‫تم‬‫ي‬ ‫لتي‬‫ا‬ ‫لة‬‫الد‬ ‫سماء‬‫بأ‬ ‫مة‬‫قائ‬ ‫لى‬‫ع‬.‫أن‬ ‫ظة‬‫ملح‬ ‫مع‬ ‫فهي‬ ‫سلسهلة‬ ‫أول‬sys.path‫ههو‬ ‫الحهالي‬ ‫الهدليل‬ ‫أن‬ ‫إلهى‬ ‫تشهير‬ ‫الفارغهة‬ ‫السلسهلة‬ ‫ههذه‬ – ‫فارغهة‬ ‫من‬ ‫جزء‬ ‫كذلك‬sys.path‫البيئة‬ ‫متغير‬ ‫نفسه‬ ‫هو‬ ‫والذي‬ ،PYTHONPATH.‫أن‬ ‫هذا‬ ‫يعني‬ ‫شرة‬‫مبا‬ ‫حالي‬‫ال‬ ‫لدليل‬‫ا‬ ‫في‬ ‫جودة‬‫المو‬ ‫حدات‬‫الو‬ ‫ستيراد‬‫ا‬ ‫نك‬‫بإمكا‬.‫ضع‬‫ت‬ ‫أن‬ ‫يك‬‫عل‬ ‫سيكون‬‫ف‬ ‫وإل‬ ‫في‬ ‫المسرودة‬ ‫الدلة‬ ‫هذه‬ ‫أحد‬ ‫في‬ ‫الوحدة‬sys.path. . ‫المصرّفة‬ ‫البيتات‬ ‫ملفات‬pyc .‫أسرع‬ ‫بشكل‬ ‫مل‬‫تع‬ ‫ها‬‫لجعل‬ ‫الحيل‬ ‫ببعض‬ ‫قوم‬‫ت‬ ‫بيثون‬ ‫فإن‬ ‫لذا‬ ،‫نسبيا‬ ‫مكلّف‬ ‫أمر‬ ‫وحدة‬ ‫استيراد‬ ‫بملفهات‬ ‫يسهمى‬ ‫مها‬ ‫إنشهاء‬ ‫ههي‬ ‫الطهرق‬ ‫ههذه‬ ‫أحهد‬‫المصهرفة‬ ‫البيتهات‬)byte-compiled‫ذات‬ ( ‫المتهداد‬.pyc‫تهذكر‬ ‫ههل‬ ) ‫إليهها‬ ‫البرامهج‬ ‫بيثهون‬ ‫تحهول‬ ‫الهتي‬ ‫البينيهة‬ ‫بالصهورة‬ ‫يرتبهط‬ ‫الهذي‬ ‫بيثون‬ ‫عمل‬ ‫طريقة‬ ‫في‬ ‫المقدمة‬‫الملهف‬ ‫ههذا‬ .(‫؟‬.pyc‫المهرة‬ ‫فهي‬ ‫الوحهدة‬ ‫تسهتورد‬ ‫عنهدما‬ ‫مفيهد‬ ‫أثنهاء‬ ‫المطلهوب‬ ‫المعالجهة‬ ‫جهزء‬ ‫أن‬ ‫حيهث‬ ‫سهرعة‬ ‫أكهثر‬ ‫وسهيكون‬ - ‫مختلهف‬ ‫برنامهج‬ ‫مهن‬ ‫التاليهة‬ ‫منصهة‬ ‫عهن‬ ‫مسهتقلة‬ ‫ههذه‬ ‫المصهرّفة‬ ‫البيتهات‬ ‫ملفهات‬ ،‫أيضها‬ .‫بالفعهل‬ ‫عملهه‬ ‫تهم‬ ‫قهد‬ ‫الوحهدة‬ ‫اسهتيراد‬ ‫ملفات‬ ‫هي‬ ‫ما‬ ‫عرفنا‬ ‫قد‬ ‫نكون‬ ‫وبذلك‬ .‫العمل‬.pyc. ‫الفادة‬from..import ‫المتغيهر‬ ‫اسهتيراد‬ ‫أردت‬ ‫إذا‬argv‫كتابهة‬ ‫)لتجنهب‬ ‫برنامجهك‬ ‫داخهل‬sys.،(‫ريهده‬ ‫ت‬ ‫مهرة‬ ‫كهل‬ ‫هادة‬‫ه‬‫إف‬ ‫هتخدام‬‫ه‬‫اس‬ ‫هك‬‫ه‬‫فيمكن‬from sys import argv‫هماء‬‫ه‬‫الس‬ ‫هل‬‫ه‬‫ك‬ ‫هتيراد‬‫ه‬‫اس‬ ‫أردت‬ ‫إذا‬ . ‫حدة‬‫الو‬ ‫في‬ ‫ستخدمة‬‫الم‬sys‫فادة‬‫إ‬ ‫ستخدام‬‫ا‬ ‫نك‬‫يمك‬from sys import*‫مع‬ ‫مل‬‫يع‬ ‫هذا‬‫و‬ . ‫عبهارة‬ ‫اسهتخدام‬ ‫تجنهب‬ ‫عهام‬ ‫وبهوجه‬ .‫وحهدة‬ ‫أي‬from..import‫عبهارة‬ ‫منهها‬ ‫بهدل‬ ‫واسهتخدم‬ import‫أي‬ ‫تتجنب‬ ‫وسوف‬ ،‫قراءته‬ ‫في‬ ‫سهولة‬ ‫أكثر‬ ‫الطريقة‬ ‫بهذه‬ ‫سيكون‬ ‫البرنامج‬ ‫أن‬ ‫حيث‬ ، .‫الطريقة‬ ‫بهذه‬ ‫السماء‬ ‫في‬ ‫اشتباه‬ __ ‫خاصية‬name‫للوحدة‬ __ ‫أمر‬ ‫وذلك‬ .‫بها‬ ‫الخاص‬ ‫الوحدة‬ ‫اسم‬ ‫اكتشاف‬ ‫يمكن‬ ‫الوحدة‬ ‫في‬ ‫وإفادات‬ ‫اسم‬ ‫له‬ ‫نموذج‬ ‫كل‬ ، ‫مرة‬ ‫لول‬ ‫الوحدة‬ ‫استيراد‬ ‫ويتم‬ ‫عندما‬ ، ‫سابقا‬ ‫ذكر‬ ‫كما‬ -‫بعينها‬ ‫حالة‬ ‫في‬ ‫خاصة‬ ‫بصفة‬ ‫متيسر‬ ‫كنا‬ ‫لو‬ ‫ماذا‬ . ‫الوحدة‬ ‫تلك‬ ‫في‬ ‫الرئيسة‬ ‫اللبنة‬ ‫تشغيل‬ ‫يتم‬ ‫للفهرس‬ ‫عودة‬‫الفادة‬from..import|62
  • 64.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫وحدة‬ ‫من‬ ‫استيراده‬ ‫عند‬ ‫وليس‬ ‫مستخدما‬ ‫نفسه‬ ‫البرنامج‬ ‫كان‬ ‫إذا‬ ‫فقط‬ ‫اللبنة‬ ‫تشغيل‬ ‫نريد‬ __ ‫السمة‬ ‫باستخدام‬ ‫ذلك‬ ‫تحقيق‬ ‫ويمكن‬ ‫أخرى؟‬name.‫الوحدة‬ ‫من‬ __ __ ‫الوحدة‬ ‫استخدام‬name__ ‫مثال‬8.2__ ‫الوحدة‬ ‫خاصية‬ ‫استخدام‬ ‫على‬name__ /!#usr/bin/python # Filename: using_name.py if __name__ == '__main__': print 'This program is being run by itself' else: print 'I am being imported from another module' ‫الخــرج‬ $ python using_name.py This program is being run by itself $ python >>> import using_name I am being imported from another module ‫يعمل‬ ‫كيف‬ _ ‫لها‬ ‫بيثون‬ ‫في‬ ‫وحدة‬ ‫كل‬name__ ‫هو‬ ‫ذلك‬ ‫كان‬ ‫فإن‬ ،‫معرف‬ _main‫أن‬ ‫يعني‬ ‫فذلك‬ __ ‫أحداث‬ ‫من‬ ‫ذلك‬ ‫يناسب‬ ‫بما‬ ‫نقوم‬ ‫أن‬ ‫ويمكننا‬ ‫المستخدم‬ ‫قِبل‬ ‫من‬ ‫بذاتها‬ ‫ستعمل‬ ‫الوحدة‬. ‫للفهرس‬ ‫عودة‬‫الوحدة‬ ‫استخدام‬__name__| 63
  • 65.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الخاصة‬ ‫وحداتك‬ ‫عمل‬ ‫وحدة‬ ‫يعتبر‬ ‫بيثون‬ ‫برنامج‬ ‫كل‬ .‫الوقت‬ ‫طوال‬ ‫هذا‬ ‫فعلت‬ ‫وقد‬ ،‫سهل‬ ‫أمر‬ ‫بك‬ ‫خاصة‬ ‫وحدات‬ ‫إنشاء‬ ‫امتداد‬ ‫على‬ ‫احتوائه‬ ‫من‬ ‫التأكد‬ ‫عليك‬ ‫فقط‬ .‫الوقت‬ ‫نفس‬ ‫في‬.py‫لك‬ ‫سيوضح‬ ‫التالي‬ ‫والمثال‬ . .‫ذلك‬ ‫الخاصة‬ ‫وحداتك‬ ‫إنشاء‬ ‫مثال‬8.3.‫الخاصة‬ ‫وحداتك‬ ‫تنشئ‬ ‫كيف‬ #!/usr/bin/python # Filename: mymodule.py def sayhi(): print 'Hi, this is mymodule speaking.' version = '0.1' # End of mymodule.py ‫ههو‬ ‫أعله‬ ‫المهبين‬ ‫البرنامهج‬ ‫ههذا‬‫وحهدة‬‫بسهيطة‬.‫بمها‬ ‫بالمقارنهة‬ ‫مميهز‬ ‫شهيء‬ ‫يوجهد‬ ‫ل‬ ‫تهرى‬ ‫وكمها‬ ‫بيثهون‬ ‫برامهج‬ ‫فهي‬ ‫اعتهدناه‬.‫بيثهون‬ ‫برامهج‬ ‫فهي‬ ‫الوحهدة‬ ‫ههذه‬ ‫نسهتخدم‬ ‫كيهف‬ ‫سهنرى‬ ‫يلهي‬ ‫وفيمها‬ ‫الخرى‬. ‫في‬ ‫كون‬‫ت‬ ‫أو‬ ،‫مج‬‫البرنا‬ ‫نه‬‫م‬ ‫مل‬‫يع‬ ‫لذي‬‫ا‬ ‫لدليل‬‫ا‬ ‫فس‬‫ن‬ ‫في‬ ‫ضع‬‫تو‬ ‫أن‬ ‫جب‬‫ي‬ ‫حدة‬‫الو‬ ‫هذه‬ ‫أن‬ ‫تذكر‬ ‫قائمة‬ ‫في‬ ‫المسرودة‬ ‫الدلة‬ ‫أحد‬sys.path. #!/usr/bin/python # Filename: mymodule_demo.py import mymodule mymodule.sayhi() print 'Version', mymodule.version ‫الخرْج‬ $ python mymodule_demo.py Hi, this is mymodule speaking. Version 0.1 ‫للفهرس‬ ‫عودة‬‫الخاصة‬ ‫وحداتك‬ ‫عمل‬|64
  • 66.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫يعمل‬ ‫كيف‬ ‫نستخدم‬ ‫أننا‬ ‫لحظ‬‫نفس‬‫الوحدة‬ ‫عناصر‬ ‫إلى‬ ‫للوصول‬ ‫النقطي‬ ‫الترقيم‬.‫إعادة‬ ‫بيثون‬ ‫تجيد‬ ‫الشعور‬ ‫لضفاء‬ ‫الترقيم‬ ‫نفس‬ ‫استخدم‬'‫البايثوني‬'‫طرقًا‬ ‫نتعلم‬ ‫نظل‬ ‫أن‬ ‫علينا‬ ‫يجب‬ ‫ل‬ ‫لذا‬ ،‫المميز‬ ‫الشياء‬ ‫لعمل‬ ‫جديدة‬. ‫إفادة‬from..import ‫الصيغة‬ ‫تستخدم‬ ‫نسخة‬ ‫ههنا‬from..import #!/usr/bin/python # Filename: mymodule_demo2.py from mymodule import sayhi, version # Alternative: # from mymodule import * sayhi() print 'Version', version ‫خرْج‬mymodule_demo2.py‫خرْج‬ ‫نفسه‬ ‫هو‬mymodule_demo.py. ‫الدالة‬dir() ‫المدمجة‬ ‫الدالة‬ ‫استخدام‬ ‫يمكنك‬dir‫هي‬ ‫المعرفات‬ ‫هذه‬ .‫الوحدة‬ ‫تحددها‬ ‫المعرفات‬ ‫لسرد‬ .‫الوحدة‬ ‫في‬ ‫المعرفة‬ ‫والصناف‬ ،‫والمتغيرات‬ ،‫الدوال‬ ‫للدالة‬ ‫وحدة‬ ‫اسم‬ ‫إعطاء‬ ‫عند‬dir().‫الوحدة‬ ‫تلك‬ ‫في‬ ‫المعرفة‬ ‫السماء‬ ‫قائمة‬ ‫لنا‬ ‫تعيد‬ ‫فإنها‬ ، .‫الحالية‬ ‫الوحدة‬ ‫في‬ ‫المعرفة‬ ‫بالسماء‬ ‫قائمة‬ ‫لنا‬ ‫تعيد‬ ‫فإنها‬ ‫معطيات‬ ‫أية‬ ‫إعطائها‬ ‫عدم‬ ‫وعند‬ ‫الدالة‬ ‫استخدام‬dir ‫مثال‬8.4.‫الدالة‬ ‫استخدام‬dir $ python >>> import sys >>> dir(sys) # get list of attributes for sys module ['__displayhook__', '__doc__', '__excepthook__', '__name__', '__stderr__', '__stdin__', '__stdout__', '_getframe', 'api_version', 'argv', 'builtin_module_names', 'byteorder', 'call_tracing', 'callstats', 'copyright', 'displayhook', 'exc_clear', 'exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', 'getcheckinterval', ‫للفهرس‬ ‫عودة‬‫الدالة‬ ‫استخدام‬dir|65
  • 67.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ 'getdefaultencoding', 'getdlopenflags', 'getfilesystemencoding', 'getrecursionlimit', 'getrefcount', 'hexversion', 'maxint', 'maxunicode', 'meta_path','modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', 'prefix', 'ps1', 'ps2', 'setcheckinterval', 'setdlopenflags', 'setprofile', 'setrecursionlimit', 'settrace', 'stderr', 'stdin', 'stdout', 'version', 'version_info', 'warnoptions'] >>> dir() # get list of attributes for current module ['__builtins__', '__doc__', '__name__', 'sys'] >>> >>> a = 5 # create a new variable 'a' >>> dir() ['__builtins__', '__doc__', '__name__', 'a', 'sys'] >>> >>> del a # delete/remove a name >>> >>> dir() ['__builtins__', '__doc__', '__name__', 'sys'] >>> ‫يعمل‬ ‫كيف‬ ‫الدالة‬ ‫استخدام‬ ‫نرى‬ ،‫أول‬dir‫المستوردة‬ ‫الوحدة‬ ‫مع‬sys.‫من‬ ‫ضخمة‬ ‫قائمة‬ ‫نرى‬ ‫أن‬ ‫نستطيع‬ ‫ها‬‫علي‬ ‫شتملة‬‫الم‬ ‫صر‬‫العنا‬.‫لة‬‫الدا‬ ‫ستخدام‬‫با‬ ‫نا‬‫قم‬ ‫عدها‬‫ب‬dir‫لذا‬ ‫ها‬‫إلي‬ ‫عاملت‬‫م‬ ‫أي‬ ‫ير‬‫تمر‬ ‫بدون‬ ‫ية‬‫الحال‬ ‫حدة‬‫للو‬ ‫ية‬‫المنتم‬ ‫صر‬‫العنا‬ ‫مة‬‫قائ‬ ‫نا‬‫إلي‬ ‫يد‬‫تع‬ ‫فههي‬.‫ستوردة‬‫الم‬ ‫حدات‬‫الو‬ ‫مة‬‫قائ‬ ‫أن‬ ‫حظ‬‫ل‬ ‫أيضا‬ ‫القائمة‬ ‫هذه‬ ‫من‬ ‫جزء‬. ‫ملحظة‬ ‫أجل‬ ‫ومن‬dir‫جديد‬ ‫متغير‬ ‫بتعريف‬ ‫قمنا‬ ،‫تعمل‬ ‫وهي‬a‫نقوم‬ ‫وبعدها‬ ‫قيمة‬ ‫إليه‬ ‫وأسندنا‬ ‫هص‬‫ه‬‫بفح‬dir‫هم‬‫ه‬‫الس‬ ‫هس‬‫ه‬‫بنف‬ ‫هة‬‫ه‬‫القائم‬ ‫هى‬‫ه‬‫إل‬ ‫هافة‬‫ه‬‫مض‬ ‫هة‬‫ه‬‫قيم‬ ‫هاك‬‫ه‬‫هن‬ ‫أن‬ ‫هنلحظ‬‫ه‬‫وس‬.‫هذف‬‫ه‬‫بح‬ ‫هوم‬‫ه‬‫نق‬ ‫خصائص‬/‫إفادة‬ ‫باستخدام‬ ‫الحالية‬ ‫الوحدة‬ ‫متغيرات‬del‫في‬ ‫أخرى‬ ‫مرة‬ ‫التغير‬ ‫هذا‬ ‫ينعكس‬ ‫وسوف‬ ‫الدالة‬ ‫خرْج‬dir. ‫على‬ ‫ملحظة‬del:‫الفادة‬ ‫تشغيل‬ ‫وبعد‬ ‫متغير‬ ‫أو‬ ‫اسم‬ ‫لحذف‬ ‫الفادة‬ ‫هذه‬ ‫تستخدم‬-‫هذه‬ ‫في‬ ‫وهي‬ ‫الحالة‬del a-‫المتغير‬ ‫إلى‬ ‫الوصول‬ ‫بإمكاننا‬ ‫يعود‬ ‫ل‬a‫قبل‬ ‫من‬ ‫موجودا‬ ‫يكن‬ ‫لم‬ ‫وكأنه‬ ‫؛‬. ‫الخلصة‬ .‫الخرى‬ ‫البرامج‬ ‫في‬ ‫استخدامها‬ ‫إعادة‬ ‫يمكننا‬ ‫ووظائف‬ ‫بخدمات‬ ‫تمدك‬ ‫لنها‬ ‫مفيدة‬ ‫الوحدات‬ ‫هذه‬ ‫نستخدم‬ ‫كيف‬ ‫رأينا‬ ‫وقد‬ .‫الوحدات‬ ‫على‬ ‫مثال‬ ‫تعتبر‬ ‫بيثون‬ ‫مع‬ ‫تأتي‬ ‫التي‬ ‫القياسية‬ ‫والمكتبة‬ .‫أيضا‬ ‫بنا‬ ‫الخاصة‬ ‫الوحدات‬ ‫وإنشاء‬ ‫الوحدات‬ .‫البيانات‬ ‫هياكل‬ ‫تدعى‬ ‫والتي‬ ‫المهمة‬ ‫المفاهيم‬ ‫بعض‬ ‫نتعلم‬ ‫سوف‬ ‫يلي‬ ‫وفيما‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|66
  • 68.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬9.‫البيانات‬ ‫هياكل‬ ‫المحتويات‬ ‫قائمة‬ ‫مقدمة‬ ‫القائمة‬ ‫والفئات‬ ‫الكائنات‬ ‫إلى‬ ‫سريعه‬ ‫مقدمة‬ ‫القوائم‬ ‫استخدام‬ ‫الصف‬ ‫الصفوف‬ ‫استخدام‬ ‫وإفادة‬ ‫الصفوف‬print ‫القاموس‬ ‫القاموس‬ ‫استخدام‬ ‫المتسلسلت‬ ‫المتسلسلت‬ ‫استخدام‬ References Objects and References ‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬ ‫النصية‬ ‫السلسل‬ ‫طرق‬ ‫الخلصة‬ ‫مق‬‫دمــة‬ ‫اسهمها؛‬ ‫مهن‬ ‫يظههر‬ ‫كمها‬ ‫ببسهاطة‬ ‫ههي‬ ‫البيانهات‬ ‫هياكهل‬‫هياكهل‬‫بعهض‬ ‫حمهل‬ ‫يمكنهها‬‫البيانهات‬‫معها‬. ‫الصلة‬ ‫ذات‬ ‫البيانات‬ ‫من‬ ‫مجموعة‬ ‫لتخزين‬ ‫تستخدم‬ ‫فهي‬ ،‫أخرى‬ ‫وبعباره‬. ‫بيثهون‬ ‫فهي‬ ‫مدمجهة‬ ‫البيانهات‬ ‫هياكهل‬ ‫مهن‬ ‫أنهواع‬ ‫ثلثهة‬ ‫وهنهاك‬--‫القهوائم‬)list(‫والصهفوف‬ ، )tuple(‫والقواميس‬ ،)dictionary.(‫تجعل‬ ‫أنها‬ ‫وكيف‬ ،‫منها‬ ‫كل‬ ‫استخدام‬ ‫كيفية‬ ‫وسنرى‬ ‫أسهل‬ ‫الحياة‬. ‫القائمة‬ ‫القائمة‬‫أن‬ ‫يمكنك‬ ‫أخرى‬ ‫بعبارة‬ ،‫المرتّبة‬ ‫العناصر‬ ‫من‬ ‫مجموعة‬ ‫تحمل‬ ‫التي‬ ‫البيانات‬ ‫هياكل‬ ‫أحد‬ ‫تخزن‬‫تتابعا‬‫حيث‬ ‫التسوق‬ ‫قائمة‬ ‫في‬ ‫تفكر‬ ‫أن‬ ‫هذا‬ ‫تصور‬ ‫عليك‬ ‫سيسهل‬ .‫قائمة‬ ‫في‬ ‫العناصر‬ ‫من‬ ‫قائمة‬ ‫في‬ ‫منفصل‬ ‫سطر‬ ‫في‬ ‫عنصر‬ ‫كل‬ ‫تضع‬ ‫ربما‬ ‫أنك‬ ‫عدا‬ ‫فيما‬ ،‫للشراء‬ ‫تعدها‬ ‫عناصر‬ ‫لديك‬ .‫بينها‬ ‫فيما‬ ‫فاصلة‬ ‫تضع‬ ‫بيثون‬ ‫أن‬ ‫حين‬ ‫في‬ ،‫التسوق‬ ‫للفهرس‬ ‫عودة‬‫القائمة‬|67
  • 69.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫تحديهد‬ ‫تريهد‬ ‫أنهك‬ ‫بيثهون‬ ‫تفههم‬ ‫حهتى‬ [ ] ‫مربعيهن‬ ‫قوسهين‬ ‫بيهن‬ ‫تكهون‬ ‫أن‬ ‫ينبغهي‬ ‫العناصهر‬ ‫قائمهة‬ ‫يث‬‫وح‬ .‫القائمة‬ ‫في‬ ‫العناصر‬ ‫عن‬ ‫البحث‬ ‫أو‬ ‫إزالة‬ ‫أو‬ ‫إضافة‬ ‫يمكنك‬ ،‫مة‬‫قائ‬ ‫إنشاء‬ ‫بمجرد‬ .‫مة‬‫قائ‬ ‫نات‬‫بيا‬ ‫نوع‬ ‫هي‬ ‫مة‬‫القائ‬ ‫أن‬ ‫قول‬‫ن‬ ،‫صر‬‫العنا‬ ‫حذف‬‫و‬ ‫ضافة‬‫إ‬ ‫ستطيع‬‫ن‬ ‫نا‬‫أن‬‫ير‬‫متغ‬‫نوع‬‫ال‬ ‫هذا‬ ‫أن‬ ‫أي‬ .‫تغييره‬ ‫يمكن‬ ‫والفئات‬ ‫الكائنات‬ ‫إلى‬ ‫سريعة‬ ‫مقدمة‬ ‫الكائنات‬ ‫مناقشة‬ ‫اﻵن‬ ‫وحتى‬ ‫أخرت‬ ‫كنت‬ ‫قد‬ ‫أنني‬ ‫رغم‬‫والفئات‬‫لشرح‬ ‫بحاجة‬ ‫أننا‬ ‫إل‬ ،‫عام‬ ‫بوجه‬ ‫أفضهل‬ ‫بصهورة‬ ‫القهوائم‬ ‫فههم‬ ‫مهن‬ ‫تتمكهن‬ ‫حهتى‬ ‫اﻵهن‬ ‫صهغير‬.‫فهي‬ ‫بالتفصهيل‬ ‫الموضهوع‬ ‫ههذا‬ ‫سنشهرح‬ ‫الفصل‬‫به‬ ‫الخاص‬. ‫والفئات‬ ‫الكائنات‬ ‫استخدام‬ ‫على‬ ‫مثال‬ ‫القائمة‬.‫متغير‬ ‫تستخدم‬ ‫عندما‬i‫قيمة‬ ‫وتعطيه‬-‫العدد‬ ‫مثل‬ ‫الصحيح‬5-‫إنشاء‬ ‫أنه‬ ‫على‬ ‫لها‬ ‫تنظر‬ ‫فإنك‬‫كائن‬ ‫لل‬)‫سيرورة‬(i‫من‬‫الفئة‬)‫النوع‬(int.‫في‬ ) ‫مطالعة‬ ‫تستطيع‬ ‫الحقيقة‬help(int‫أكثر‬ ‫هذا‬ ‫لتفهم‬. ‫على‬ ‫تشتمل‬ ‫أن‬ ‫للفئة‬ ‫ويمكن‬‫طرق‬‫فقط‬ ‫الفئة‬ ‫هذه‬ ‫مع‬ ‫للستخدام‬ ‫معرّفة‬ ‫دوال‬ ‫؛‬.‫يمكنك‬ ‫الفئة‬ ‫منهذه‬ ‫كائن‬ ‫لديك‬ ‫يكون‬ ‫عندما‬ ‫فقط‬ ‫الجزاء‬ ‫هذه‬ ‫استعمال‬.‫توفر‬ ‫المثال؛‬ ‫سبيل‬ ‫على‬ ‫الطريقة‬ ‫بيثون‬append‫للفئة‬list‫القائمة‬ ‫نهاية‬ ‫إلى‬ ‫عنصر‬ ‫إضافة‬ ‫من‬ ‫تمكنك‬ ‫التي‬.') ‫مثل‬ mylist.append('an item‫القائمة‬ ‫إلى‬ ‫السلسلة‬ ‫هذه‬ ‫ستضيف‬') mylist.append('an item.‫الكائن‬ ‫أساليب‬ ‫إلى‬ ‫للوصول‬ ‫النقطي‬ ‫الترقيم‬ ‫لحظ‬. ‫أيضا‬ ‫لها‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫الفئة‬‫حقول‬)fields(‫لستخدامها‬ ‫معرّفة‬ ‫متغيرات‬ ‫سوى‬ ‫ليست‬ ‫وهي‬ ‫فقط‬ ‫الفئة‬ ‫تلك‬ ‫يخص‬ ‫فيما‬.‫المتغيرات‬ ‫هذه‬ ‫استخدام‬ ‫يمكنك‬/‫لديك‬ ‫يكون‬ ‫عندما‬ ‫فقط‬ ‫السماء‬ ‫الفئة‬ ‫تلك‬ ‫من‬ ‫كائن‬.،‫مثل‬ ،‫النقطي‬ ‫الترقيم‬ ‫خلل‬ ‫من‬ ‫متاحة‬ ‫أيضا‬ ‫الحقول‬mylist.field. ‫القوائم‬ ‫استخدام‬ ‫مثال‬9.1.‫القوائم‬ ‫استخدام‬ #!/usr/bin/python # Filename: using_list.py # This is my shopping list shoplist = ['apple', 'mango', 'carrot', 'banana'] print 'I have', len(shoplist), 'items to purchase.' print 'These items are:', # Notice the comma at end of the line for item in shoplist: ‫للفهرس‬ ‫عودة‬‫القائمة‬|68
  • 70.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ print item, print 'nI also have to buy rice.' shoplist.append('rice') print 'My shopping list is now', shoplist print 'I will sort my list now' shoplist.sort() print 'Sorted shopping list is', shoplist print 'The first item I will buy is', shoplist[0] olditem = shoplist[0] del shoplist[0] print 'I bought the', olditem print 'My shopping list is now', shoplist ‫الخرْج‬ $ python using_list.py I have 4 items to purchase. These items are: apple mango carrot banana I also have to buy rice. My shopping list is now ['apple', 'mango', 'carrot', 'banana', 'rice'] I will sort my list now Sorted shopping list is ['apple', 'banana', 'carrot', 'mango', 'rice'] The first item I will buy is apple I bought the apple My shopping list is now ['banana', 'carrot', 'mango', 'rice'] ‫يعمل‬ ‫كيف‬ ‫المتغيهر‬shoplist‫السهوق‬ ‫إلهى‬ ‫ذاههب‬ ‫لشهخص‬ ‫تسهوق‬ ‫قائمهة‬ ‫عهن‬ ‫عبهارة‬.‫فهي‬shoplist‫نقهوم‬ ‫نوع‬ ‫أي‬ ‫إضافة‬ ‫بإمكانك‬ ‫أن‬ ‫تذكر‬ ‫لكن‬ ،‫سيشتريها‬ ‫التي‬ ‫العناصر‬ ‫بأسماء‬ ‫النصية‬ ‫سلسل‬ ‫بتخزين‬ ‫من‬‫الكائنات‬‫الخرى‬ ‫القوائم‬ ‫وحتى‬ ‫العداد‬ ‫ذلك‬ ‫في‬ ‫بما‬ ‫القائمة‬ ‫إلى‬. ‫الحلقة‬ ‫أيضا‬ ‫استخدمنا‬ ‫كما‬for..in‫القائمة‬ ‫عناصر‬ ‫خلل‬ ‫للتنقل‬.‫أن‬ ‫أدركت‬ ‫أنك‬ ‫لبد‬ ،‫اﻵن‬ ‫أيضا‬ ‫تتابع‬ ‫هي‬ ‫القائمة‬.‫في‬ ‫التتابعات‬ ‫خصوصية‬ ‫نناقش‬ ‫وسوف‬‫قسم‬‫لحق‬. ‫نستخدم‬ ‫أننا‬ ‫لحظ‬‫فاصلة‬","‫إفادة‬ ‫نهاية‬ ‫في‬print‫بعد‬ ‫السطر‬ ‫لفاصل‬ ‫التلقائية‬ ‫الطباعة‬ ‫لمنع‬ ‫إفادة‬ ‫كل‬print.‫المهمة‬ ‫وتنجز‬ ‫بسيطة‬ ‫ولكنها‬ ،‫ذلك‬ ‫لفعل‬ ‫سيئة‬ ‫طريقة‬ ‫هذه‬ ‫تعتبر‬ ‫قد‬. ‫للفهرس‬ ‫عودة‬‫القائمة‬|69
  • 71.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الرفاق‬ ‫طريقة‬ ‫باستخدام‬ ‫القائمة‬ ‫إلى‬ ‫عنصرا‬ ‫أضفنا‬ ،‫بعدها‬append‫فئة‬ ‫من‬ ‫الكائنات‬ ‫في‬list، ‫قبل‬ ‫من‬ ‫ناقشنا‬ ‫أن‬ ‫سبق‬ ‫كما‬.‫طريق‬ ‫عن‬ ‫القائمة‬ ‫إلى‬ ‫إضافته‬ ‫تم‬ ‫قد‬ ‫العنصر‬ ‫أن‬ ‫من‬ ‫نتحقق‬ ،‫ثم‬ ‫إفادة‬ ‫إلى‬ ‫ببساطة‬ ‫بتمريرها‬ ‫القائمة‬ ‫محتويات‬ ‫طبع‬print‫أنيقة‬ ‫بطريقه‬ ‫لنا‬ ‫تطبعها‬ ‫التي‬. ‫قة‬‫الطري‬ ‫ستخدام‬‫با‬ ‫مة‬‫القائ‬ ‫بترتيب‬ ‫قوم‬‫ن‬ ‫ثم‬sort.‫مة‬‫القائ‬ ‫لى‬‫ع‬ ‫تؤثر‬ ‫قة‬‫الطري‬ ‫هذه‬ ‫أن‬ ‫حظ‬‫ل‬ ‫معدلة‬ ‫قائمة‬ ‫تعيد‬ ‫ول‬ ‫نفسها‬--‫النصية‬ ‫السلسل‬ ‫عمل‬ ‫طريقة‬ ‫عن‬ ‫يختلف‬ ‫وهذا‬.‫نعنيه‬ ‫ما‬ ‫وهذا‬ ‫القوائم‬ ‫إن‬ ‫بقولنا‬‫متغيرة‬‫النصية‬ ‫والسلسل‬‫ثابتة‬. ‫القائمهة‬ ‫مهن‬ ‫إزالتهه‬ ‫نريهد‬ ،‫السهوق‬ ‫مهن‬ ‫بنهد‬ ‫شهراء‬ ‫مهن‬ ‫ننتههي‬ ‫عنهدما‬ ،‫ثهم‬.‫طريهق‬ ‫عهن‬ ‫ذلهك‬ ‫نحقهق‬ ‫الفادة‬ ‫استخدام‬del.‫إفادة‬ ‫وتقوم‬ ‫إزالته‬ ‫نريد‬ ‫الذي‬ ‫القائمة‬ ‫عنصر‬ ‫نحدد‬ ،‫هنا‬del‫لنا‬ ‫بحذفه‬. ‫نستخدم‬ ‫وبالتالي‬ ،‫القائمة‬ ‫من‬ ‫الول‬ ‫البند‬ ‫إزالة‬ ‫نريد‬ ‫أننا‬ ‫نحدد‬del shoplist[0[)‫أن‬ ‫تذكر‬ ‫من‬ ‫العد‬ ‫تبدأ‬ ‫بيثون‬0.( ) ‫الع‬‫ه‬‫فط‬ ‫القائمهة‬ ‫ائن‬‫ه‬‫ك‬ ‫ا‬‫ه‬‫يُعرّفه‬ ‫الهتي‬ ‫الطهرق‬ ‫كهل‬ ‫معرفهة‬ ‫أردت‬ ‫إذا‬help(list‫التفاصهيل‬ ‫لهترى‬ ‫الكاملة‬. ‫الصف‬ ‫الصهفوف‬)Tuples(‫أنهها‬ ‫إل‬ ‫القهوائم‬ ‫مثهل‬‫ثابتهة‬‫تغييهر‬ ‫يمكنهك‬ ‫ل‬ ‫أي‬ ‫النصهية؛‬ ‫السلسهل‬ ‫مثهل‬ ‫صفوف‬‫ال‬.‫لقواس‬‫ا‬ ‫من‬ ‫زوج‬ ‫خل‬‫دا‬ ‫بفاصلة‬ ‫مفصولة‬ ‫عناصر‬ ‫تحديد‬ ‫طريق‬ ‫عن‬ ‫صفوف‬‫ال‬ ‫عرّف‬ُ‫ت‬ .( )‫يُعرّفهها‬ ‫الهتي‬ ‫الدالهة‬ ‫أو‬ ‫الفهادة‬ ‫فيهها‬ ‫تسهتطيع‬ ‫الهتي‬ ‫الحهالت‬ ‫فهي‬ ‫عهادة‬ ‫الصهفوف‬ ‫تسهتخدم‬ ‫القيم‬ ‫مجموعة‬ ‫أن‬ ‫بأمان‬ ‫تفترض‬ ‫أن‬ ‫المستخدم‬-‫القيم‬ ‫صف‬-‫تتغير‬ ‫لن‬ ‫المستخدمة‬. ‫الصفوف‬ ‫استخدام‬ ‫مثال‬9.2.‫الصفوف‬ ‫استخدام‬ #!/usr/bin/python # Filename: using_tuple.py zoo = ('wolf', 'elephant', 'penguin') print 'Number of animals in the zoo is', len(zoo) new_zoo = ('monkey', 'dolphin', zoo) print 'Number of animals in the new zoo is', len(new_zoo) print 'All animals in new zoo are', new_zoo print 'Animals brought from old zoo are', new_zoo[2] print 'Last animal brought from old zoo is', new_zoo[2][2] ‫للفهرس‬ ‫عودة‬‫الصفوف‬ ‫استخدام‬|70
  • 72.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الخرْج‬ $ python using_tuple.py Number of animals in the zoo is 3 Number of animals in the new zoo is 3 All animals in new zoo are ('monkey', 'dolphin', ('wolf', 'elephant', 'penguin')) Animals brought from old zoo are ('wolf', 'elephant', 'penguin') Last animal brought from old zoo is penguin ‫يعمل‬ ‫كيف‬ ‫المتغير‬zoo‫العناصر‬ ‫من‬ ‫صف‬ ‫إلى‬ ‫يشير‬.‫الدالة‬ ‫أن‬ ‫نرى‬len‫على‬ ‫للحصول‬ ‫استخدامها‬ ‫يمكن‬ ‫الصف‬ ‫طول‬.‫هي‬ ‫الصفوف‬ ‫أن‬ ‫على‬ ‫أيضا‬ ‫يدل‬ ‫وهذا‬‫تتابعات‬‫أيضا‬. ‫جديدة‬ ‫حيوانات‬ ‫حديقة‬ ‫إلى‬ ‫الحيوانات‬ ‫هذه‬ ‫ننقل‬ ‫اﻵن‬)new_zoo(‫القديمة‬ ‫الحديقة‬ ‫إن‬ ‫حيث‬ )zoo(‫إغلقهها‬ ‫يتهم‬.‫الجديهد‬ ‫الصهف‬ ‫يحتهوي‬ ‫لهذا‬new_zoo‫الموجهودة‬ ‫الحيوانهات‬ ‫بعهض‬ ‫علهى‬ ‫القديمة‬ ‫الحديقة‬ ‫من‬ ‫جلبت‬ ‫التي‬ ‫الحيوانات‬ ‫مع‬ ‫جنب‬ ‫إلى‬ ‫جنبا‬ ‫بالفعل‬.‫نلحظ‬ ،‫الواقع‬ ‫إلى‬ ‫عودة‬ ‫هويته‬ ‫يفقد‬ ‫ل‬ ‫آخر‬ ‫صف‬ ‫داخل‬ ‫الصف‬ ‫أن‬ ‫القواس‬ ‫من‬ ‫زوج‬ ‫داخل‬ ‫العنصر‬ ‫موضع‬ ‫تحديد‬ ‫طريق‬ ‫عن‬ ‫الصف‬ ‫في‬ ‫العناصر‬ ‫إلى‬ ‫الوصول‬ ‫يمكننا‬ ‫المربعة‬[ ]‫القوائم‬ ‫مع‬ ‫فعلنا‬ ‫ما‬ ‫مثل‬.‫يسمى‬ ‫ما‬ ‫وهذا‬‫عامل‬‫الفهرسة‬ )indexing operator.(‫في‬ ‫الثالث‬ ‫البند‬ ‫إلى‬ ‫الوصول‬ ‫نستطيع‬new_zoo‫بتحديد‬ ]new_zoo [2‫في‬ ‫الثالث‬ ‫البند‬ ‫إلى‬ ‫الوصول‬ ‫ويمكن‬ ،‫الصف‬new_zoo‫بتحديد‬ ]new_zoo [2] [2.‫الطريقة‬ ‫تفهم‬ ‫أن‬ ‫بمجرد‬ ، ‫جدا‬ ‫واضح‬ ‫هذا‬. ‫واحد‬ ‫عنصر‬ ‫أو‬ ‫عناصر‬ ‫بدون‬ ‫صف‬.‫الخالية‬ ‫القواس‬ ‫من‬ ‫زوج‬ ‫طريق‬ ‫عن‬ ‫فارغ‬ ‫صف‬ ‫يُنشأ‬ ()=() ‫مثل‬myempty.‫البساطة‬ ‫بهذه‬ ‫ليس‬ ‫واحد‬ ‫عنصر‬ ‫ذي‬ ‫صف‬ ‫تحديد‬ ‫لكن‬.‫أن‬ ‫عليك‬ ‫فاصلة‬ ‫مستخدما‬ ‫تحدده‬","‫الول‬ ‫العنصر‬ ‫بعد‬)‫والوحيد‬(‫صف‬ ‫بين‬ ‫التفرقة‬ ‫بيثون‬ ‫تستطيع‬ ‫؛حتى‬ ‫تعبير‬ ‫داخل‬ ‫بكائن‬ ‫المحيطة‬ ‫القواس‬ ‫من‬ ‫زوج‬ ‫وبين‬.‫تحدد‬ ‫أن‬ ‫عليك‬ ‫أي‬ ,)singleton = (2‫العنصر‬ ‫يحتوي‬ ‫صفا‬ ‫تريد‬ ‫أنك‬ ‫تعني‬ ‫كنت‬ ‫إذا‬2. ‫بيرل‬ ‫لمبرمجي‬ ‫ملحظة‬ ‫المر‬ ‫نفس‬ . ‫بيرل‬ ‫في‬ ‫هو‬ ‫كما‬ ‫منبسطة‬ ‫غير‬ ‫القوائم‬ ‫.فمثل‬ ‫هويتها‬ ‫تفقد‬ ‫ل‬ ‫قائمة‬ ‫داخل‬ ‫القائمة‬ ‫صف‬ ‫على‬ ‫ينطبق‬‫صف‬ ‫داخل‬‫يتعلق‬ ‫ما‬ ‫فبقدر‬ . ‫إلخ‬ ‫صف‬ ‫داخل‬ ‫قائمة‬ ‫أو‬ ،‫قائمة‬ ‫داخل‬ ‫الصف‬ ‫أو‬ ، ‫في‬ ‫ما‬ ‫كل‬ ‫هذا‬ ،‫آخر‬ ‫كائن‬ ‫باستخدام‬ ‫مخزنة‬ ‫كائنات‬ ‫عن‬ ‫عبارة‬ ‫فقط‬ ‫فإنه‬ ، ‫ببايثون‬ ‫المر‬ . ‫الموضوع‬ ‫للفهرس‬ ‫عودة‬‫الصفوف‬ ‫استخدام‬|71
  • 73.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫وإفادة‬ ‫الصفوف‬print ‫واحدة‬‫من‬‫أكثر‬‫الستعمالت‬‫الشائعة‬‫هي‬‫الصفوف‬‫مع‬‫الفادة‬print.‫وإليك‬‫هذا‬‫المثال‬ ‫مثال‬9.3‫الصفوف‬ ‫استخدام‬ #!/usr/bin/python # Filename: print_tuple.py age = 22 name = 'Swaroop' print '%s is %d years old' % (name, age) print 'Why is %s playing with that python?' % name ‫الخرج‬ $ python print_tuple.py Swaroop is 22 years old Why is Swaroop playing with that python? ‫البرنامج‬ ‫يعمل‬ ‫كيف‬ •‫إفادة‬print‫يمكن‬‫ان‬‫ت‬‫أخذ‬‫سلسلة‬‫نصية‬‫باستخدام‬‫مواصفات‬‫معينة‬‫يتبعها‬‫الرمز‬٪‫يليها‬ tuple‫من‬‫البنود‬‫المطابق‬‫للمواصفات‬.‫المواصفات‬‫تستخدم‬‫في‬‫صياغه‬‫النتائج‬‫بطريقة‬‫معينة‬. ‫المواصفات‬‫يمكن‬‫أن‬‫تكون‬‫على‬‫غرار‬%s‫للسلسل‬‫النصية‬strings‫و‬%d‫للعداد‬ ‫الصحيحة‬‫الصف‬ .‫يجب‬‫أن‬‫ي‬‫حتوي‬‫على‬‫بنود‬‫مقابلة‬‫لهذه‬‫المواصفات‬‫في‬‫نفس‬‫النظام‬. •‫لحظ‬‫أن‬‫أ‬‫ول‬‫استعمال‬‫حيث‬‫نستخدم‬%s‫أول‬‫وهذا‬‫مطابقا‬‫لسم‬‫المتغير‬‫الذي‬‫هو‬‫البند‬‫الول‬ ‫في‬‫الصف‬،‫والوصف‬‫الثاني‬‫هو‬%d‫المقابل‬‫لل‬age‫الذي‬‫هو‬‫البند‬‫الثاني‬‫في‬.‫الصف‬ •‫ما‬‫يعمله‬‫بيثون‬‫هنا‬‫هو‬‫أنه‬‫يحول‬‫كل‬‫بند‬‫في‬‫الصف‬‫إلى‬‫سلسلة‬‫نصية‬‫وبدائل‬‫لقيمة‬‫هذه‬ ‫السلسلة‬‫داخل‬‫مكان‬‫المواصفات‬.‫لذا‬%s‫هو‬‫استعاضة‬‫عن‬‫قيمة‬‫المتغير‬name‫وهلم‬‫جرا‬. •‫هذا‬‫الستخدام‬‫للفادة‬print‫يجعل‬‫من‬‫السهل‬‫للغاية‬‫كتابة‬‫الناتج‬‫ويتجنب‬‫الكثير‬‫من‬‫التلعب‬ ‫بالنص‬‫لتحقيق‬‫ذات‬‫المر‬.‫كما‬‫انه‬‫يتجنب‬‫استعمال‬‫الفواصل‬‫في‬‫كل‬‫مكان‬‫كما‬‫فعلنا‬‫حتى‬ ‫اﻵن‬. •‫معظم‬‫الوقت‬،‫يمكنك‬‫استخدام‬‫الوصف‬%s.‫واترك‬‫لبايثون‬‫العناية‬‫بالباقي‬‫من‬‫أجلك‬.‫وهذا‬ ‫يعمل‬‫حتى‬‫مع‬‫الرقام‬.‫ومع‬‫ذلك‬،‫قد‬‫ترغب‬‫في‬‫إ‬‫عطاء‬‫المواصفات‬‫الصحيحة‬‫حي‬‫ث‬‫إ‬‫ن‬‫هذا‬ ‫للفهرس‬ ‫عودة‬‫وإفادة‬ ‫الصفوف‬print|72
  • 74.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫يضيف‬‫مستوى‬ً‫واحدا‬‫من‬‫التأكد‬‫من‬‫صحة‬‫برنامجك‬. •‫في‬‫الفادة‬‫الثانية‬print،‫نستخدم‬‫أحد‬‫المواصفات‬‫التي‬‫يتبعها‬‫الرمز‬%‫يليه‬‫بند‬‫واحد‬--‫ل‬ ‫يوجد‬‫زوج‬‫من‬‫القواس‬.‫هذا‬‫يعمل‬‫فقط‬‫في‬‫حالة‬‫عندما‬‫يكون‬‫هناك‬‫وصف‬‫واحد‬‫في‬‫السلسلة‬ ‫النصية‬. ‫القاموس‬ ‫القاموس‬‫هو‬‫بمثابة‬‫كتاب‬‫عنونة‬‫حيث‬‫يمكنك‬‫أن‬‫تجد‬‫عنوانا‬‫أو‬‫تفاصيل‬‫للتصال‬‫مع‬‫شخص‬ ‫عن‬‫طريق‬‫معرفه‬‫اسمه‬/‫اسمها‬.‫مثل‬‫؛‬‫نحن‬‫نتشارك‬‫المفاتيح‬)‫السم‬(‫مع‬‫القيم‬)‫التفاصيل‬.( ‫علما‬‫بأن‬‫المفتاح‬‫يجب‬‫أن‬‫يكون‬‫فريدا‬unique‫حيث‬‫أنه‬‫ل‬‫يمكنك‬‫الحصول‬‫على‬‫معلومات‬ ‫صحيحة‬‫إذا‬‫كان‬‫لديك‬‫شخصان‬‫بنفس‬‫السم‬‫بالضبط‬. ‫علما‬‫بأ‬‫نه‬‫يمكنك‬‫استخدام‬‫كائنات‬‫ثابتة‬‫فقط‬)‫مثل‬‫السلسل‬‫النصية‬(‫لمفاتيح‬‫القاموس‬‫ولكن‬ ‫يمكنك‬‫استخدام‬‫كائنات‬‫ثابتة‬‫أو‬‫قابلة‬‫للتغيير‬‫لقيم‬‫القاموس‬‫يمكننا‬‫أن‬‫نترجم‬‫ذلك‬‫بقولنا‬ ‫أنه‬‫ينبغي‬‫أن‬‫ل‬‫تستخدم‬‫سوى‬‫أ‬‫شياء‬‫بسيطة‬‫للمفاتيح‬. ‫زوج‬‫من‬‫المفاتيح‬‫المذكورة‬ ‫والقيم‬‫في‬‫القاموس‬‫باستخدام‬‫العبارة‬ }d = {key1 : value1, key2 : value2‫لحظ‬‫أن‬‫أزواج‬‫المفتاح‬/‫القيمة‬‫منفصلن‬‫عن‬ ‫طريق‬‫النقطتين‬":"‫والزواج‬‫أنفسهم‬‫منفصلن‬‫عن‬‫طريق‬‫فاصلة‬,‫و‬‫كل‬‫هذا‬‫داخل‬‫في‬‫زوج‬ ‫من‬‫القواس‬‫المجعدة‬. { } ‫تذكر‬‫أن‬‫أزواج‬key/value‫في‬‫القاموس‬‫ليست‬‫لها‬‫أي‬‫طريقة‬‫ترتيب‬‫إ‬ .‫ذا‬‫أ‬‫ردت‬‫ترتيبا‬‫معينا‬، ‫سيتعين‬‫عليك‬‫ترتيبها‬‫بنفسك‬‫قبل‬‫استعمالها‬. ‫القواميس‬‫التي‬‫ستقوم‬‫باستخدامها‬‫تعتبر‬‫حالت‬/‫كائنات‬instances/objects‫من‬‫الطبقة‬ "dict. " ‫القواميس‬ ‫استخدام‬ ‫مثال‬9.4‫القواميس‬ ‫استخدام‬ #!/usr/bin/python # Filename: using_dict.py # 'ab' is short for 'a'ddress'b'ook ‫للفهرس‬ ‫عودة‬‫القواميس‬ ‫استخدام‬|73
  • 75.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ab = { 'Swaroop' : 'swaroopch@byteofpython.info', 'Larry' : 'larry@wall.org', 'Matsumoto' : 'matz@ruby-lang.org', 'Spammer' : 'spammer@hotmail.com' } print "Swaroop's address is %s" % ab['Swaroop'] # Adding a key/value pair ab['Guido'] = 'guido@python.org' # Deleting a key/value pair del ab['Spammer'] print 'nThere are %d contacts in the address-bookn' % len(ab) for name, address in ab.items(): print 'Contact %s at %s' % (name, address) if 'Guido' in ab: # OR ab.has_key('Guido') print "nGuido's address is %s" % ab['Guido'] ‫الخرج‬ $ python using_dict.py Swaroop's address is swaroopch@byteofpython.info There are 4 contacts in the address-book Contact Swaroop at swaroopch@byteofpython.info Contact Matsumoto at matz@ruby-lang.org ‫للفهرس‬ ‫عودة‬‫القواميس‬ ‫استخدام‬|74
  • 76.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Contact Larry at larry@wall.org Contact Guido at guido@python.org Guido's address is guido@python.org ‫البرنامج‬ ‫يعمل‬ ‫كيف‬ ‫قمنا‬‫بصنع‬‫القاموس‬ ab ‫باستخدام‬‫الترقيم‬‫الذي‬‫سبق‬‫مناقشته‬.‫ثم‬‫شغلنا‬‫مفتاح/قيمة‬ ‫أزواج‬ key/value ‫من‬‫خلل‬‫تحديد‬‫المفتاح‬‫باستخدام‬‫عامل‬‫الفهرسة‬ indexing operator ‫كما‬‫نوقش‬‫في‬‫الكلم‬‫عن‬‫القوائم‬‫و‬.‫الصفوف‬‫نلحظ‬‫أ‬‫ن‬‫التركيب‬‫بسيط‬‫جدا‬‫للقواميس‬ ‫.كذلك‬ ‫ويمكننا‬‫أن‬‫نضيف‬‫أزواج‬‫جديدة‬‫من‬‫مفتاح/قيمة‬‫ببساطة‬‫عن‬‫طريق‬‫استخدام‬‫الفهرسة‬ ‫عامل‬ ‫للوصول‬‫إلى‬‫مفتاح‬‫وإسناد‬‫قيمة‬‫إليه‬،‫كما‬‫فعلنا‬‫ل‬ Guido ‫في‬‫الحالة‬‫المذكورة‬‫أ‬‫عله‬ . ‫يمكننا‬‫حذف‬‫أزواج‬‫المفتاح‬/‫القيمة‬‫باستخدام‬‫صديقنا‬‫القديم‬‫الفادة‬ del. ‫نحن‬‫ببساطة‬‫نحدد‬ ‫القاموس‬‫الفهرسة‬ ‫عامل‬ ‫و‬ indexing operator ‫لزالة‬‫المفتاح‬‫وتمرير‬‫ذلك‬‫إلى‬‫الفادة‬ del. ‫ليست‬‫هناك‬‫حاجة‬‫لمعرفة‬‫القيمة‬‫المقابلة‬‫للمفتاح‬‫في‬‫هذه‬‫العملية‬ . ‫بعد‬‫ذلك‬‫نصل‬‫إلى‬‫كل‬‫زوج‬‫من‬ key/value ‫في‬‫القاموس‬‫باستخدام‬‫طريقة‬ items ‫من‬ ‫القاموس‬‫التي‬‫تعيد‬‫قائمة‬‫من‬‫الصف‬‫حيث‬‫كل‬‫صف‬‫يحتوي‬‫زوجا‬‫من‬‫البنود‬–‫والمفتاح‬ ‫متبوعا‬‫بقيمة‬.‫نسحب‬‫هذا‬‫الزوج‬‫ونسنده‬‫إلى‬‫اسم‬‫المتغيرات‬‫والعنوان‬‫المقابل‬‫لكل‬‫زوج‬ ‫باستخدام‬‫الحلقة‬ for..in ، ‫ثم‬‫نطبع‬‫هذه‬‫القيم‬‫اللبنة‬ ‫في‬ for. ‫يمكننا‬‫معرفة‬‫ما‬‫اذا‬‫كان‬‫زوج‬ key/value ‫موجود‬‫باستخدام‬‫العامل‬ in ‫أ‬‫و‬‫حتى‬‫طريقة‬ has_key ‫من‬‫الفئة‬ dict ‫تستطيع‬‫أن‬‫ترى‬‫الوثائق‬‫للطلع‬‫على‬‫القائمة‬‫الكاملة‬‫للطرق‬‫من‬ ‫الفئة‬ dict ‫باستخدام‬ (help(dict ‫والقواميس‬ ‫للمعطيات‬ ‫المفتاحية‬ ‫الكلمات‬ ‫على‬‫صعيد‬‫آخر‬‫نلحظ‬،‫إ‬ ‫أنك‬‫ن‬‫كنت‬‫قد‬‫استخدمت‬‫للمعطياتا‬ ‫المفتاحية‬ ‫الكلمات‬‫في‬‫الدوال‬ ‫الخاصة‬‫بك‬،‫ولقد‬‫سبق‬‫أ‬‫ن‬‫استخدمت‬‫قواميس‬!‫فقط‬‫فكر‬‫في‬‫ذلك‬–‫زوج‬‫مفتاح/قيمة‬‫محدد‬ ‫من‬‫قِبلِك‬‫في‬‫قائمة‬‫معاملت‬‫تعريف‬‫الدالة‬،‫وعند‬‫تشغيل‬‫المتغيرات‬‫بداخل‬‫الدالة‬،‫وهو‬ ‫مجرد‬‫مفتاح‬‫الوصول‬‫إلى‬‫القاموس‬)‫وهو‬‫ما‬‫يسمى‬symbol table‫في‬‫مصطلح‬‫تصميم‬ ‫المصرف‬. ( ‫للفهرس‬ ‫عودة‬‫للمعطيات‬ ‫المفتاحية‬ ‫الكلمات‬ ‫والقواميس‬|75
  • 77.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫المتسلسلت‬ ‫النصية‬ ‫والسلسل‬ ‫والقوائم‬ ‫الصفوف‬‫هي‬‫أمثلة‬‫على‬‫المتسلسلت‬Sequences،‫ولكن‬‫ما‬ ‫هي‬‫المتسلسلة‬،‫وماذا‬‫فيها‬‫من‬‫الخصوصية‬‫؟‬‫اثنان‬‫من‬‫السمات‬‫الرئيسية‬‫للمتسلسلة‬‫هي‬‫عملية‬ ‫الفهرسة‬‫التي‬‫تتيح‬‫لنا‬‫جلب‬‫بند‬‫بعينه‬‫في‬‫المتسلسلة‬‫مباشرة‬،‫وعملية‬‫التقطيع‬‫الذي‬‫يتيح‬‫لنا‬‫أ‬‫ن‬ ‫ن‬‫ستعيد‬‫شريحة‬‫من‬‫المتسلسلة‬‫أي‬‫جزءا‬‫من‬‫المتسلسلة‬. ‫المتسلسلت‬ ‫استخدام‬ ‫مثال‬9.5‫المتسلسلت‬ ‫استخدام‬ #!/usr/bin/python # Filename: seq.py shoplist = ['apple', 'mango', 'carrot', 'banana'] # Indexing or 'Subscription' operation print 'Item 0 is', shoplist[0] print 'Item 1 is', shoplist[1] print 'Item 2 is', shoplist[2] print 'Item 3 is', shoplist[3] print 'Item -1 is', shoplist[-1] print 'Item -2 is', shoplist[-2] # Slicing on a list print 'Item 1 to 3 is', shoplist[1:3] print 'Item 2 to end is', shoplist[2:] print 'Item 1 to -1 is', shoplist[1:-1] print 'Item start to end is', shoplist[:] # Slicing on a string name = 'swaroop' ‫للفهرس‬ ‫عودة‬‫المتسلسلت‬ ‫استخدام‬|76
  • 78.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ print 'characters 1 to 3 is', name[1:3] print 'characters 2 to end is', name[2:] print 'characters 1 to -1 is', name[1:-1] print 'characters start to end is', name[:] ‫الخرج‬ $ python seq.py Item 0 is apple Item 1 is mango Item 2 is carrot Item 3 is banana Item -1 is banana Item -2 is carrot Item 1 to 3 is ['mango', 'carrot'] Item 2 to end is ['carrot', 'banana'] Item 1 to -1 is ['mango', 'carrot'] Item start to end is ['apple', 'mango', 'carrot', 'banana'] characters 1 to 3 is wa characters 2 to end is aroop characters 1 to -1 is waroo characters start to end is swaroop ‫البرنامج‬ ‫يعمل‬ ‫كيف‬ ‫أول‬،‫نرى‬‫كيفية‬‫استخدام‬‫الفهارس‬‫للحصول‬‫على‬‫عناصر‬‫فردية‬‫من‬‫المتسلسلة‬.‫وهذا‬‫أيضا‬ ‫يشار‬‫اليه‬‫على‬‫انه‬‫عملية‬‫الكتتاب‬.‫كلما‬‫قمت‬‫بتحديد‬‫عدد‬‫للمتسلسلة‬‫بين‬‫معقوفتين‬[ ]‫كما‬ ‫هو‬‫مبين‬‫أ‬‫عله‬،‫سوف‬‫يجلب‬‫لك‬‫بيثون‬‫البند‬‫المقابل‬‫لموضعه‬‫في‬‫المتسلسلة‬.‫نتذكر‬‫ان‬ ‫بيثون‬‫يبدأ‬‫عد‬‫الرقام‬‫من‬0.‫ومن‬‫هنا‬]shoplist [0‫يجلب‬‫البند‬‫الول‬]‫و‬ shoplist [3‫يجلب‬‫البند‬‫الرابع‬‫في‬‫متسلسلة‬shoplist ‫للفهرس‬ ‫عودة‬‫المتسلسلت‬ ‫استخدام‬|77
  • 79.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫يمكن‬‫للفهرس‬‫أ‬‫يضا‬‫أ‬‫ن‬‫يكون‬‫عددا‬‫سلبيا‬،‫في‬‫هذه‬،‫الحالة‬‫يحسب‬‫من‬‫نهاية‬‫المتسلسلة‬.‫فإن‬ ‫لذا‬ ]shoplist [-1‫يشير‬‫إلى‬‫البند‬‫الخير‬‫في‬‫المتسلسلة‬]‫و‬shoplist [-2‫يجلب‬‫ثاني‬‫آخر‬‫بند‬ ‫في‬‫المتسلسلة‬. ‫عملية‬‫التقطيع‬slicing operation‫تستخدم‬‫عن‬‫طريق‬‫تحديد‬‫اسم‬‫المتسلسلة‬‫يليها‬ -‫اختياريا‬-‫زوج‬‫من‬‫الرقام‬‫مفصولة‬‫بنقطتين‬‫داخل‬‫قوسين‬‫مربعين‬. [:]‫أن‬ ‫نلحظ‬‫هذا‬‫المر‬ ‫يشبه‬‫إلى‬‫حد‬‫بعيد‬‫جدا‬‫عملية‬‫الفهرسة‬‫التي‬‫قد‬‫قمت‬‫باستعمالها‬.‫تذكر‬‫أن‬‫الرقام‬‫اختيارية‬ ‫ولكن‬‫النقطتان‬‫الرأسيتان‬":"‫ليست‬‫كذلك‬. ‫الرقم‬‫الول‬)‫قبل‬‫النقطتين‬(‫في‬‫عملية‬‫التقطيع‬‫يشير‬‫إلى‬‫الموضع‬‫الذي‬‫تبدأ‬‫منه‬‫الشريحة‬، ‫والعدد‬‫الثاني‬)‫بعد‬‫النقطتين‬(‫يشير‬‫فيها‬‫للموضع‬‫الذي‬‫تتوقف‬‫عنده‬‫الشريحة‬.‫إذا‬‫كان‬‫اول‬‫عدد‬ ‫غير‬‫محدد‬،‫فإن‬‫بيثون‬‫ستبدأ‬‫من‬‫بداية‬‫المتسلسلة‬.‫وإذا‬‫كان‬‫الرقم‬‫الثاني‬‫متروكا‬‫فإن‬‫بيثون‬ ‫ستتوقف‬‫في‬‫نهاية‬‫المتسلسلة‬.‫علما‬‫أن‬‫الشريحة‬‫تعاود‬‫البدء‬‫عند‬‫موضع‬،‫البداية‬‫وستنتهي‬‫قبل‬ ‫موضع‬‫النتهاء‬.‫مثل؛‬‫موضع‬‫البداية‬‫يضاف‬‫و‬‫أما‬‫موضع‬‫النتهاء‬‫فهو‬‫مستبعد‬‫من‬‫شريحة‬ ‫المتسلسلة‬. ‫وهكذا‬]shoplist [1:3‫تعيد‬‫قطعة‬‫من‬‫المتسلسلة‬‫بدءا‬‫من‬‫الموضع‬1‫بالضافة‬‫إلى‬‫موضع‬ 2،‫ولكن‬‫يتوقف‬‫عند‬‫الموضع‬3،‫وبالتالي‬‫فإن‬‫هناك‬‫قطعة‬‫من‬‫هذين‬‫البندين‬‫يعود‬.‫وبالمثل‬، [:]shoplist‫تعيد‬‫نسخة‬‫من‬‫المتسلسلة‬‫بأكملها‬. ‫يمكنك‬‫أ‬‫يضا‬‫ال‬‫تقطيع‬‫مع‬‫المواضع‬‫السالبة‬.‫وتستخدم‬‫الرقام‬‫السالبة‬‫للمواضع‬‫من‬‫نهاية‬ ‫المتسلسلة‬.‫على‬‫سبيل‬‫المثال‬]،shoplist [: -1‫سيعيد‬‫قطعة‬‫من‬‫المتسلسلة‬‫التي‬‫تستثني‬‫البند‬ ‫الخير‬‫في‬‫المتسلسلة‬،‫ولكنه‬‫ل‬‫يتضمن‬‫أي‬‫شيء‬‫آخر‬. ‫جرب‬‫توليفات‬‫مختلفة‬‫من‬‫مواصفات‬‫هذه‬‫الشريحة‬‫باستخدام‬‫مفسر‬‫بيثون‬‫التفاعلي‬.‫أي‬‫المحث‬ ‫الفوري‬‫بحيث‬‫يمكنك‬‫أ‬‫ن‬‫ترى‬‫النتائج‬‫فورا‬.‫والشيء‬‫العظيم‬‫في‬‫المتسلسلت‬‫هو‬‫أنك‬‫يمكنك‬ ‫تشغيل‬‫الصفوف‬،‫و‬‫القوائم‬‫و‬‫النصوص‬،‫الجميع‬‫بنفس‬‫الطريقة‬! References ‫عندما‬‫تصنع‬‫كائنا‬‫ويسند‬‫إلى‬‫أحد‬‫المتغيرات‬،‫ل‬‫تشير‬‫المتغير‬‫إل‬‫إلى‬‫كائن‬‫ول‬‫يمثل‬‫كائنا‬ ‫في‬‫حد‬‫ذاته‬!‫وهذا‬‫هو‬‫المعنى‬‫المراد‬،‫أي‬‫أن‬‫اسم‬‫المتغير‬‫يشير‬‫إلى‬‫ذلك‬‫الجزء‬‫من‬‫ذاكرة‬ ‫الكمبيوتر‬‫حيث‬‫تخزن‬‫فيه‬‫الكائنات‬.‫وهذا‬‫ما‬‫يسمى‬‫ربط‬binding‫السم‬‫بالكائن‬. ‫للفهرس‬ ‫عودة‬References|78
  • 80.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫عموما‬،‫لست‬‫بحاجة‬‫إلى‬‫أ‬‫ن‬‫تشعر‬‫بالقلق‬‫إزاء‬‫هذا‬‫المر‬،‫ولكن‬‫ثمة‬‫تأثير‬‫رقيق‬‫بسبب‬ references‫التي‬‫تحتاج‬‫إلى‬‫أن‬‫تكون‬‫على‬‫علم‬‫بها‬.‫ويتضح‬‫ذلك‬‫من‬‫المثال‬‫التالي‬: Objects and References Example 9.6. Objects and References #!/usr/bin/python # Filename: reference.py print 'Simple Assignment' shoplist = ['apple', 'mango', 'carrot', 'banana'] mylist = shoplist # mylist is just another name pointing to the same object! del shoplist[0] # I purchased the first item, so I remove it from the list print 'shoplist is', shoplist print 'mylist is', mylist # notice that both shoplist and mylist both print the same list without # the 'apple' confirming that they point to the same object print 'Copy by making a full slice' mylist = shoplist[:] # make a copy by doing a full slice del mylist[0] # remove first item print 'shoplist is', shoplist print 'mylist is', mylist # notice that now the two lists are different ‫الخرج‬ $ python reference.py Simple Assignment ‫للفهرس‬ ‫عودة‬References|79
  • 81.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ shoplist is ['mango', 'carrot', 'banana'] mylist is ['mango', 'carrot', 'banana'] Copy by making a full slice shoplist is ['mango', 'carrot', 'banana'] mylist is ['carrot', 'banana'] ‫البرنامج‬ ‫يعمل‬ ‫كيف‬ ‫معظم‬‫الشرح‬‫متاح‬‫في‬‫التعليقات‬‫نفسها‬.‫الذي‬ ‫المر‬‫تحتاج‬‫إلى‬‫تذكره‬‫انك‬‫إ‬‫ذا‬‫أ‬‫ردت‬‫أ‬‫ن‬‫تجعل‬ ‫نسخة‬‫من‬‫القائمة‬‫أ‬‫و‬‫من‬‫تلك‬‫النواع‬‫من‬‫المتسلسلت‬‫أو‬‫الكائنات‬‫المعقدة‬)‫ليست‬‫كائنات‬ ‫بسيطة‬‫مثل‬‫العداد‬‫الصحيحة‬(،‫فإن‬‫عليك‬‫أن‬‫تستخدم‬‫عملية‬‫التقطيع‬slicing operation ‫لعمل‬‫نسخة‬‫إ‬ .‫ذا‬‫قمت‬‫فقط‬‫بمجرد‬‫إ‬‫سناد‬‫اسم‬‫المتغير‬‫إلى‬‫اسم‬‫آخر‬،‫كلهما‬‫يشير‬‫إلى‬‫الكائن‬ ‫ذاته‬،‫فهذا‬‫يمكن‬‫أ‬‫ن‬‫يؤدي‬‫إلى‬‫جميع‬‫أ‬‫نواع‬‫المتاعب‬‫إ‬‫ذا‬‫لم‬‫تكن‬‫حذرا‬. : ‫بيرل‬ ‫لمبرمجي‬ ‫ملحظة‬ ‫تقطيع‬ ‫بعملية‬ ‫تقوم‬ ‫أن‬ ‫عليك‬ ، ‫منها‬ ‫نسخة‬ ‫ينشئ‬ ‫ل‬ ‫القوائم‬ ‫إلى‬ ‫فئة‬ ‫إسناد‬ ‫أن‬ ‫تذكر‬slicing operation. ‫المتسلسلة‬ ‫من‬ ‫نسخة‬ ‫لعمل‬ ‫المزيد‬‫عن‬‫السلسل‬‫النصية‬ ‫لقد‬‫ناقشنا‬‫بالفعل‬‫السلسل‬‫النصية‬‫بالتفصيل‬‫في‬‫وقت‬‫سابقا‬.‫ما‬‫المزيد‬‫الذي‬‫يمكن‬‫معرفته‬ ‫عنها؟‬ ‫حسنا‬،‫هل‬‫تعرف‬‫ان‬‫السلسل‬‫النصية‬‫تعتبر‬‫هي‬‫أيضا‬objects‫ولديها‬‫الساليب‬‫لفعل‬‫كل‬ ‫شيء‬‫من‬‫أول‬‫فحص‬‫جزء‬‫من‬‫النص‬‫حتى‬‫تعرية‬‫المساحات‬! ‫النصية‬ ‫السلسل‬‫التي‬‫تستخدمها‬‫في‬‫البرنامج‬‫هي‬‫جميع‬‫الكائن‬) ‫الفئة‬ ‫من‬str(‫بعض‬‫من‬‫الطرق‬ ‫المفيدة‬‫لهذه‬‫الفئة‬‫تتجلى‬‫في‬‫المثال‬‫التالي‬.‫وللحصول‬‫على‬‫قائمة‬‫كاملة‬‫من‬‫هذه‬‫الطرق‬،‫انظر‬ )help(str. ‫مثال‬9.7‫النصية‬ ‫السلسل‬ ‫طرق‬ #!/usr/bin/python # Filename: str_methods.py name = 'Swaroop' # This is a string object ‫للفهرس‬ ‫عودة‬‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬|80
  • 82.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ if name.startswith('Swa'): print 'Yes, the string starts with "Swa"' if 'a' in name: print 'Yes, it contains the string "a"' if name.find('war') != -1: print 'Yes, it contains the string "war"' delimiter = '_*_' mylist = ['Brazil', 'Russia', 'India', 'China'] print delimiter.join(mylist) ‫الخرج‬ $ python str_methods.py Yes, the string starts with "Swa" Yes, it contains the string "a" Yes, it contains the string "war" Brazil_*_Russia_*_India_*_China ‫كيف‬‫يعمل‬‫البرنامج‬ ‫هنا‬،‫نرى‬‫الكثير‬‫من‬‫أساليب‬‫السلسل‬‫النصية‬strings‫داخل‬‫العمل‬‫طريق‬.Startswith ‫تستخدم‬‫لمعرفة‬‫ما‬‫اذا‬‫كانت‬‫السلسلة‬‫النصية‬‫تبدأ‬‫مع‬‫الجملة‬‫المعطاة‬.‫المشغل‬in‫يستخدم‬ ‫لفحص‬‫ما‬‫اذا‬‫كان‬‫النص‬‫المعطى‬‫هو‬‫جزء‬‫من‬‫السلسلة‬‫النصية‬.. ‫طريقة‬find‫تستخدم‬‫ليجاد‬‫موضع‬‫النص‬‫المعطى‬‫في‬string‫أو‬‫إعادة‬1-‫اذا‬‫لم‬‫يتم‬‫النجاح‬ ‫في‬‫العثور‬‫على‬‫النص‬‫الثانوي‬.‫الفئة‬str‫لها‬‫أيضا‬‫طريقه‬‫بارعة‬‫في‬‫ربط‬‫بنود‬‫من‬‫المتسلسلة‬ ‫مع‬‫السلسلة‬‫النصية‬string‫بصفتها‬‫محدد‬‫بين‬‫كل‬‫بند‬‫من‬‫المتسلسلة‬sequence‫وتعيد‬ ‫للفهرس‬ ‫عودة‬‫النصية‬ ‫السلسل‬ ‫عن‬ ‫المزيد‬|81
  • 83.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫أكبر‬‫سلسلة‬‫نصية‬‫متولدة‬‫منها‬. ‫الخلصة‬ ‫لقد‬‫قمنا‬‫باستكشاف‬‫هياكل‬‫البيانات‬‫المدمجة‬‫في‬‫بيثون‬‫بالتفصيل‬.‫هياكل‬‫البيانات‬‫هذه‬‫ستكون‬ ‫أ‬‫ساسية‬‫عند‬‫كتابة‬‫برامج‬‫بحجم‬‫معقول‬. ‫واﻵن‬‫لدينا‬‫الكثير‬‫من‬‫أساسيات‬‫بيثون‬‫في‬‫مكان‬،‫واحد‬‫و‬‫سوف‬‫نرى‬‫فيما‬‫يلي‬‫كيفية‬‫تصميم‬ ‫وكتابة‬‫برنامج‬‫في‬‫العالم‬‫الحقيقي‬‫لبايثون‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|82
  • 84.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬10‫بيثون‬ ‫سكربت‬ ‫كتابه‬ - ‫مشكلة‬ ‫.حل‬ ‫قائمة‬‫المحتويات‬ ‫المشكلة‬ ‫الحل‬ ‫الصدارة‬‫الولى‬}‫للسكربت‬{ ‫الصدارة‬‫الثانية‬ ‫الصدارة‬‫الثالثة‬ ‫الصدارة‬‫الرابعة‬ ‫مزيد‬‫من‬‫التهذيب‬ ‫عملية‬‫البرمجيات‬ ‫تطوير‬ ‫ال‬‫خلصة‬ ‫لقد‬‫استكشفنا‬‫أجزاء‬‫مختلفة‬‫من‬‫لغة‬‫بيثون‬‫واﻵن‬‫سوف‬‫نلقي‬‫نظرة‬‫على‬‫الطريقة‬‫التي‬‫تناسب‬ ‫جميع‬‫هذه‬‫الجزاء‬‫معا‬،‫عن‬‫طريق‬‫تصميم‬‫وكتابة‬‫البرنامج‬‫الذي‬‫شيئا‬ ‫يفعل‬ً‫مفيدا‬. ‫المشكلة‬ ‫المشكلة‬‫هي‬‫أنني‬‫أريد‬‫برنامجا‬‫يقوم‬‫بعمل‬‫نسخة‬‫احتياطية‬‫من‬‫جميع‬‫ملفاتي‬‫ورغم‬‫أن‬‫هذا‬ ‫بمثابة‬‫مشكلة‬‫بسيطة‬،‫ليست‬‫هناك‬‫معلومات‬‫كافية‬‫بالنسبة‬‫لنا‬‫لنبدأ‬‫عملية‬‫الحل‬.‫مزيدا‬ ‫نحتاج‬ ‫من‬‫التحليل‬.‫على‬‫سبيل‬‫المثال‬،‫كيف‬‫يمكننا‬‫أن‬‫نحدد‬‫الملفات‬‫التي‬‫سيتم‬‫نسخها‬‫احتياطيا‬‫؟‬ ‫أين‬‫ستوضع‬‫النسخة‬‫الحتياطية‬‫المخزنة‬‫؟‬‫كيف‬‫يتم‬‫تخزينها‬‫في‬‫النسخة‬‫الحتياطية؟‬ ‫بعد‬‫تحليل‬‫المشكلة‬‫بشكل‬‫صحيح‬،‫نصمم‬‫برنامجنا‬.‫نقوم‬‫بتجهيز‬‫قائمة‬‫من‬‫المور‬‫حول‬‫كيفية‬ ‫عمل‬‫برنامجنا‬.‫وفي‬‫هذه‬‫الحالة‬،‫قمت‬‫بإنشاء‬‫القائمة‬‫التالية‬‫بشأن‬‫كيفية‬‫قيامها‬‫بالعمل‬‫إ‬ .‫ذا‬ ‫قمت‬‫بعمل‬‫التصميم‬،‫لعلك‬‫ل‬‫تواجه‬‫نفس‬‫النوع‬‫من‬‫المشاكل‬--‫كل‬‫شخص‬‫له‬‫طريقته‬ ‫الخاصة‬‫لتسيير‬‫المور‬،‫وهذا‬‫أمر‬‫طيب‬. 1.‫الملفات‬‫والدلة‬‫التي‬‫نعمل‬‫لها‬‫نسخة‬‫احتياطية‬‫محددة‬‫في‬‫قائمة‬. 2.‫النسخة‬‫الحتياطية‬‫يجب‬‫أن‬‫تكون‬‫مخزنة‬‫في‬‫الدليل‬‫الرئيس‬‫للنسخ‬‫الحتياطي‬. 3.‫الملفات‬ ‫ستحزم‬‫في‬‫ملف‬‫مضغوط‬. 4.‫اسم‬‫الرشيف‬‫المضغوط‬‫يتضمن‬‫التاريخ‬‫والوقت‬‫الحالي‬. 5.‫نستخدم‬‫المر‬‫القياسي‬zip‫المتاح‬‫بشكل‬‫افتراضي‬‫في‬‫أي‬‫توزيعة‬‫قياسية‬‫من‬‫لينكس‬/ ‫يونكس‬.‫ويمكن‬‫لمستخدمي‬‫ويندوز‬‫استخدام‬‫برنامج‬Info-Zip program–‫علما‬‫بأ‬‫نه‬ ‫يمكنك‬‫استخدام‬‫أ‬‫ي‬‫أمر‬‫لبرنامج‬‫أرشفة‬‫تريده‬‫طالما‬‫ان‬‫واجهة‬ ‫له‬‫سطر‬‫الوامر‬،‫حتى‬‫يتسنى‬ ‫للفهرس‬ ‫عودة‬‫المشكلة‬|83
  • 85.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫لنا‬‫تمرير‬‫القيم‬‫إليه‬‫من‬‫السكربت‬‫الخاص‬‫بنا‬. ‫الحـل‬: ‫وبما‬‫أن‬‫تصميم‬‫برنامجنا‬‫اﻵن‬‫مستقر‬،‫يمكننا‬‫أن‬‫نكتب‬‫الكود‬‫الذي‬‫يُعتبر‬‫أداتنا‬‫لتنفيذ‬‫الحل‬. ‫الول‬ ‫الصدار‬ ‫مثال‬10.1‫الول‬ ‫الصدار‬ – ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ #!/usr/bin/python # Filename: backup_ver1.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you are using Windows, use source = [r'C:Documents', r'D:Work'] or something like that # 2. The backup must be stored in a main backup directory target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using # 3. The files are backed up into a zip file. # 4. The name of the zip archive is the current date and time target = target_dir + time.strftime('%Y%m%d%H%M%S') + '.zip' # 5. We use the zip command (in Unix/Linux) to put the files in a zip archive zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) # Run the backup if os.system(zip_command) == 0: ‫للفهرس‬ ‫عودة‬‫الول‬ ‫الصدار‬|84
  • 86.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ print 'Successful backup to', target else: print 'Backup FAILED' ‫الخرج‬ $ python backup_ver1.py Successful backup to /mnt/e/backup/20041208073244.zip ‫نحن‬‫اﻵن‬‫في‬‫مرحلة‬‫الختبار‬‫؛‬‫حيث‬‫إننا‬‫نختبر‬‫كون‬‫برنامجنا‬‫يعمل‬‫بشكل‬‫سليم‬.‫فإذا‬‫لم‬ ‫يتصرف‬‫كما‬‫هو‬‫متوقع‬،‫فسيكون‬‫علينا‬‫النتقال‬‫إ‬‫لى‬‫مرحلة‬/‫تصحيح‬debug‫برنامجنا‬‫؛‬‫أ‬‫ي‬‫إ‬‫زالة‬ ‫الخطاء‬bugs‫من‬‫البرنامج‬. ‫كيف‬‫يعمل‬ ‫ستلحظ‬‫كيف‬‫قمنا‬‫بتحويل‬‫ما‬‫لدينا‬‫من‬‫تصميم‬‫إ‬‫لى‬‫شفرة‬‫خطوة‬‫فخطوة‬.‫ونحن‬‫نستخدم‬ ‫الوحدة‬os‫و‬time‫ولذا‬‫قمنا‬‫باستيرادها‬.‫ثم‬،‫نحدد‬‫الملفات‬‫والدلة‬‫التي‬‫سيتم‬‫نسخها‬ ‫احتياطيا‬‫في‬" ‫قائمة‬source“.‫الوجهة‬ ‫الدليل‬‫يعني‬‫مكان‬‫تخزين‬‫جميع‬‫الملفات‬‫الحتياطية‬، ‫وهذا‬‫هو‬‫المحدد‬‫في‬‫المتغير‬"target_dir"‫اسم‬‫الرشيف‬‫المضغوط‬‫الذي‬‫سنقوم‬‫بإنشائه‬‫هو‬ ‫التاريخ‬‫الحالي‬‫والوقت‬‫الذي‬‫يجلب‬‫لنا‬‫باستخدام‬() ‫الدالة‬time.strftime.‫وسوف‬‫يكون‬ ‫أ‬‫يضا‬.‫بامتداد‬.zip‫وسيخزن‬‫في‬‫الدليل‬target_dir () ‫الدالة‬time.strftime‫تأخذ‬‫مواصفات‬‫مثل‬‫التي‬‫استخدمناها‬‫في‬‫البرنامج‬‫المذكور‬‫أ‬‫عله‬. ‫الصفة‬%Y‫سيحل‬‫محلها‬‫السنة‬‫بدون‬‫القرن‬،‫والصفة‬%m‫سيحل‬‫محلها‬‫الشهر‬‫بوصفها‬‫رقم‬ ‫عشري‬‫بين‬01‫و‬12‫وهلم‬‫جرا‬.‫والقائمة‬‫الكاملة‬‫لهذه‬‫المواصفات‬‫يمكن‬‫العثور‬‫عليها‬‫في‬ ]‫الدليل‬‫المرجعي‬‫لبايثون‬[]Python Reference Manual[‫الذي‬‫يأتي‬‫مع‬‫بيثون‬‫في‬ ‫التوزيعة‬‫الخاصة‬‫بك‬.‫لحظ‬‫أ‬‫ن‬‫هذا‬‫مشابه‬)‫ولكن‬‫ليس‬‫على‬‫النحو‬‫نفسه‬(‫للمواصفات‬ ‫المستخدمة‬‫في‬‫إفادة‬print)‫باستخدام‬٪-‫بصف‬ ‫متبوعة‬tuple( ‫قمنا‬‫بعمل‬‫اسم‬‫الدليل‬‫المضغوط‬target‫باستخدام‬‫عامل‬‫الضافة‬‫الذي‬‫يشبك‬‫الجمل‬‫أ‬‫ي‬‫يربط‬ ‫بين‬‫اثنين‬‫معا‬‫ويعيدها‬‫إلينا‬‫واحدة‬‫جديدة‬.‫ثم‬،‫ننشئ‬‫سلسلة‬‫نصية‬:zip_command، ‫والتي‬‫تتضمن‬‫المر‬‫الذي‬‫سنقوم‬‫بتنفيذه‬.‫يمكنك‬‫معرفة‬‫ما‬‫إ‬‫ذا‬‫كان‬‫هذا‬‫المر‬‫يعمل‬‫عن‬‫طريق‬ ‫تشغيله‬‫في‬‫الصدفة‬)‫طرفية‬‫لينكس‬‫أو‬‫محث‬‫دوس‬( ‫المر‬zip‫الذي‬‫نستخدمه‬‫يحتوي‬‫بعض‬‫الخيارات‬‫الممررة‬ ‫والمعاملت‬–‫الخيار‬q‫يستخدم‬ ‫للشارة‬‫إلى‬‫أ‬‫ن‬‫المر‬zip‫ينبغي‬‫أن‬‫يعمل‬‫بهدوء‬‫تماما‬–‫الخيار‬r‫يحدد‬‫أ‬‫ن‬‫المر‬zip‫يجب‬ ‫أ‬‫ن‬‫ي‬‫عمل‬‫بشكل‬‫تتابعيا‬)recursively‫الدلة‬ ‫في‬ (‫أ‬‫ي‬‫ينبغي‬‫أ‬‫ن‬‫تشمل‬‫الدلة‬‫الفرعية‬‫والملفات‬ ‫للفهرس‬ ‫عودة‬‫الول‬ ‫الصدار‬|85
  • 87.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫داخل‬‫الدلة‬‫الفرعية‬‫كذلك‬.‫وقد‬‫تم‬‫الجمع‬‫بين‬‫خيارين‬‫ل‬‫ثالث‬‫لهما‬‫مختصر‬ ‫بشكل‬‫وهما‬qr– ‫هذه‬‫الخيارات‬‫متبوعة‬‫باسم‬‫الرشيف‬‫المضغوط‬‫المراد‬‫إنشاؤه‬‫متبوعا‬‫بقائمة‬‫الملفات‬‫والدلة‬ ‫التي‬‫سنقوم‬‫بنسخها‬‫احتياطيا‬.‫نحن‬‫نحول‬‫قائمة‬source‫داخل‬‫الجملة‬‫باستخدام‬‫طريقة‬ join‫لضم‬‫الجمل‬‫والتي‬‫شاهدنا‬‫بالفعل‬‫كيفية‬‫استخدامها‬. ‫وأخيرا‬‫نشغل‬‫المر‬‫باستخدام‬‫الدالة‬os.system‫المر‬ ‫تشغل‬ ‫التي‬‫كما‬‫لو‬‫كان‬‫يعمل‬‫من‬ ‫داخل‬‫النظام‬‫في‬‫الصدفة‬–‫وهو‬‫يعيد‬‫لنا‬0‫إذا‬‫تمت‬‫العملية‬‫بنجاح‬،‫وإل‬‫فانه‬‫يعيد‬‫إلينا‬‫رقم‬ ‫الخطأ‬. ‫واعتمادا‬‫على‬‫نتيجة‬‫المر‬،‫نقوم‬‫بطباعة‬‫رسالة‬‫مناسبة‬‫بأن‬‫النسخة‬‫الحتياطية‬‫فشلت‬‫أو‬‫نجحت‬ ،‫وهذا‬‫هو‬‫كل‬‫ما‬‫في‬‫الموضوع‬،‫لقد‬‫قمنا‬‫بإنشاء‬‫سكربت‬‫لعمل‬‫نسخة‬‫احتياطية‬‫من‬‫الملفات‬ ‫المهمة‬! : ‫ويندوز‬ ‫لمستخدمي‬ ‫ملحظة‬ ‫القائمة‬ ‫تحدد‬ ‫أن‬ ‫يمكنك‬source‫والدليل‬target‫أن‬ ‫يجب‬ ‫ولكن‬ ،‫دليل‬ ‫أو‬ ‫ملف‬ ‫اسم‬ ‫لي‬ ) ‫يستخدم‬ ‫ويندوز‬ ‫أن‬ ‫هي‬ ‫والمشكلة‬ .‫ويندوز‬ ‫في‬ ‫قليل‬ ‫حذرا‬ ‫تكون‬‫الخلفية‬ ‫المائلة‬ ‫الشرطة‬ ( ‫الخلوص‬ ‫تتابعات‬ ‫لتمثيل‬ ‫الخلفية‬ ‫المائلة‬ ‫الشرطة‬ ‫تستخدم‬ ‫بيثون‬ ‫ولكن‬ ،‫الدلة‬ ‫كفاصل‬ )escape sequences.( ‫تستخدم‬ ‫أن‬ ‫عليك‬ ‫أو‬ ‫خلوص‬ ‫تتابع‬ ‫ذاتهاباستخدام‬ ‫الخلفية‬ ‫الشرطة‬ ‫تمثل‬ ‫أن‬ ‫عليك‬ ،‫لذلك‬raw strings‫استخدم‬ ،‫المثال‬ ‫سبيل‬ ‫على‬ .'C:Documents'‫أو‬r'C:Documents'‫ولكن‬‫ل‬ ‫تستخدم‬'C:Documents'‫مجهول‬ ‫خلوص‬ ‫تتابع‬ ‫تستخدم‬ ‫هكذا‬ ‫فأنت‬D. ‫نأخهذ‬ ‫أن‬ ‫نريهد‬ ‫ا‬‫ه‬‫حينم‬ ‫اسهتخدامه‬ ‫يمكننها‬ ،‫الحتيهاطي‬ ‫للنسهخ‬ ‫سهكربت‬ ‫بعمهل‬ ‫ا‬‫ه‬‫قمن‬ ‫أننها‬ ‫وحيهث‬ ،‫اﻵهن‬ ‫باسهتخدام‬ ‫لينكهس/يهونكس‬ ‫مسهتخدمو‬ ‫وينصهح‬ .‫الملفهات‬ ‫مهن‬ ‫احتياطيهة‬ ‫نسهخة‬‫الملف‬‫ه‬‫طريقةه‬ ‫التنفيذي‬‫في‬ ‫الحتياطي‬ ‫النسخ‬ ‫برنامج‬ ‫تشغيل‬ ‫من‬ ‫يتمكنوا‬ ‫حتى‬ ،‫مناقشته‬ ‫سبق‬ ‫الذي‬ ‫النحو‬ ‫على‬ ‫مرحلة‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫مكان‬ ‫أي‬ ‫وفي‬ ‫وقت‬ ‫أي‬‫التشغيل‬‫مرحلة‬ ‫أو‬‫نشر‬.‫البرمجيات‬ ‫على‬ .‫تتوقع‬ ‫كنت‬ ‫كما‬ ‫تماما‬ ‫تعمل‬ ‫ل‬ ‫الولى‬ ‫البرامج‬ (‫)عادة‬ ‫ولكن‬ ،‫صحيح‬ ‫بشكل‬ ‫أعله‬ ‫البرنامج‬ ‫يعمل‬ ‫أخطأت‬ ‫قد‬ ‫كنت‬ ‫إذا‬ ‫أو‬ ،‫صحيح‬ ‫بشكل‬ ‫البرنامج‬ ‫تصمم‬ ‫لم‬ ‫كنت‬ ‫إذا‬ ‫مشاكل‬ ‫هناك‬ ‫تكون‬ ‫قد‬ ،‫المثال‬ ‫سبيل‬ .‫برنامجك‬ ‫علل‬ ‫لتتبع‬ ‫ستضطر‬ ‫أو‬ ‫التصميم‬ ‫مرحلة‬ ‫إلى‬ ‫العودة‬ ‫عليك‬ ‫سيتعين‬ .‫إلخ‬ ،‫الكود‬ ‫كتابه‬ ‫في‬ ‫الثاني‬ ‫الصدار‬: ‫أن‬ ‫يمكنه‬ ‫حتى‬ ‫عليه‬ ‫التحسينات‬ ‫بعض‬ ‫يمكنناإدخال‬ ،‫ولكن‬ .‫يعمل‬ ‫برنامجنا‬ ‫من‬ ‫الول‬ ‫الصدار‬ ‫مرحلة‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫يومى‬ ‫أساس‬ ‫على‬ ‫أفضل‬ ‫نحو‬ ‫على‬ ‫يعمل‬‫صيانة‬.‫البرمجيات‬ ‫للفهرس‬ ‫عودة‬‫الثاني‬ ‫الصدار‬:|86
  • 88.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫باستخدام‬ - ‫الملفات‬ ‫لتسمية‬ ‫أفضل‬ ‫ميكانيكية‬ ‫هي‬ ‫بفائدتها‬ ‫شعرت‬ ‫التي‬ ‫التحسينات‬ ‫هذه‬ ‫أحد‬ time‫الحالي‬ ‫التاريخ‬ ‫يحمل‬ ‫دليل‬ ‫بداخل‬ ‫للملف‬ ‫كاسم‬date‫النسخة‬ ‫دليل‬ ‫ضمن‬ ‫كدليل‬ ‫ولذا‬ ،‫هرمية‬ ‫بطريقة‬ ‫تخزينها‬ ‫سيتم‬ ‫الحتياطية‬ ‫نسخك‬ ‫أن‬ ‫هي‬ ‫الميزات‬ ‫أحد‬ .‫الرئيس‬ ‫الحتياطية‬ ‫بهذه‬ ‫بكثير‬ ‫أقصر‬ ‫الملفات‬ ‫أسماء‬ ‫طول‬ ‫أن‬ ‫وهي‬ ‫أخرى‬ ‫ميزة‬ ‫وهناك‬ .‫إدارتها‬ ‫السهل‬ ‫من‬ ‫سيكون‬ ‫ما‬ ‫إذا‬ ‫بسهولة‬ ‫تعرف‬ ‫أن‬ ‫ستساعدك‬ ‫المنفصلة‬ ‫الدلة‬ ‫أن‬ ‫هي‬ ‫أخرى‬ ‫ميزة‬ ‫هناك‬ ‫وأيضا‬ .‫الطريقة‬ ‫أخذت‬ ‫قد‬ ‫كنت‬ ‫إذا‬ ‫إل‬ ‫الدليل‬ ‫ينشأ‬ ‫لن‬ ‫حيث‬ ‫يوم‬ ‫كل‬ ‫عن‬ ‫احتياطية‬ ‫نسخة‬ ‫بعمل‬ ‫قمت‬ ‫قد‬ ‫كنت‬ .‫اليوم‬ ‫لذلك‬ ‫احتياطية‬ ‫نسخة‬ ‫مثال‬10.2‫الثاني‬ ‫الصدار‬ -‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ #!/usr/bin/python # Filename: backup_ver2.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you are using Windows, use source = [r'C:Documents', r'D:Work'] or something like that # 2. The backup must be stored in a main backup directory target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using # 3. The files are backed up into a zip file. # 4. The current day is the name of the subdirectory in the main directory today = target_dir + time.strftime('%Y%m%d') # The current time is the name of the zip archive now = time.strftime('%H%M%S') # Create the subdirectory if it isn't already there if not os.path.exists(today): ‫للفهرس‬ ‫عودة‬‫الثاني‬ ‫الصدار‬:|87
  • 89.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ os.mkdir(today) # make directory print 'Successfully created directory', today # The name of the zip file target = today + os.sep + now + '.zip' # 5. We use the zip command (in Unix/Linux) to put the files in a zip archive zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) # Run the backup if os.system(zip_command) == 0: print 'Successful backup to', target else: print 'Backup FAILED' ‫الخرج‬ $ python backup_ver2.py Successfully created directory /mnt/e/backup/20041208 Successful backup to /mnt/e/backup/20041208/080020.zip $ python backup_ver2.py Successful backup to /mnt/e/backup/20041208/080428.zip ‫يعمل‬ ‫كيف‬ ‫أجزاء‬ ‫معظم‬‫هذا‬‫البرنامج‬‫التغيير‬ ‫يعترها‬ ‫لم‬.‫والتغيرات‬‫هي‬‫أ‬‫ننا‬‫نتحقق‬‫إ‬‫ذا‬‫كان‬‫هناك‬‫دليل‬ ‫باسم‬‫اليوم‬‫الحالي‬‫داخل‬‫الدليل‬‫الرئيس‬‫للنسخة‬‫الحتياطية‬‫باستخدام‬‫الدالة‬os.exists.‫فإذا‬ ‫يكن‬ ‫لم‬‫موجودا‬،‫فنحن‬‫ننشئه‬‫مستخدمين‬‫الدالة‬os.mkdir. ‫لحظ‬‫استخدام‬‫المتغير‬os.sep-‫فهو‬‫للدلة‬ ‫يعطيفاصل‬‫وفقا‬‫لنظام‬‫التشغيل‬‫الخاص‬‫بك‬‫أ‬‫ي‬ ‫انه‬‫سيكون‬'/'‫في‬‫لينكس‬،‫و‬‫يونيكس‬،‫وسيكون‬' '‫في‬‫ويندوز‬‫و‬':'‫في‬‫نظام‬‫تشغيل‬ ‫ماكنتوش‬.‫استخدام‬Os.sep‫بدل‬‫من‬‫هذه‬‫الحروف‬‫بشكل‬‫مباشر‬‫ستجعل‬‫برنامجنا‬‫محمول‬ ‫ويعمل‬‫عبر‬‫هذه‬‫النظم‬. ‫للفهرس‬ ‫عودة‬‫الثاني‬ ‫الصدار‬:|88
  • 90.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الصدار‬: ‫الثالث‬ ‫كون‬‫ت‬ ‫ندما‬‫ع‬ ‫كن‬‫ول‬ ،‫ية‬‫الحتياط‬ ‫سخ‬‫الن‬ ‫من‬ ‫كثير‬‫ال‬ ‫مل‬‫بع‬ ‫قوم‬‫أ‬ ‫ندما‬‫ع‬ ‫يدا‬‫ج‬ ‫مل‬‫تع‬ ‫ية‬‫الثان‬ ‫سخة‬‫الن‬ ‫نسخة‬ ‫كل‬ ‫من‬ ‫الغرض‬ ‫بين‬ ‫التفريق‬ ‫في‬ ‫صعوبة‬ ‫وجدت‬ ،‫الحتياطية‬ ‫النسخ‬ ‫من‬ ‫كبير‬ ‫كم‬ ‫هناك‬ ‫فأريهد‬ ،‫عهرض‬ ‫أو‬ ‫برنامهج‬ ‫علهى‬ ‫الرئيسهة‬ ‫التغييهرات‬ ‫بعهض‬ ‫قمهت‬ ‫إذا‬ ،‫ال‬‫ه‬‫المث‬ ‫سهبيل‬ ‫فعلهى‬ ،‫احتياطيهة‬ ‫تعليق‬ ‫إرفاق‬ ‫طريق‬ ‫عن‬ ‫بسهولة‬ ‫تحقيقه‬ ‫يمكن‬ ‫وهذا‬ .‫المضغوط‬ ‫الملف‬ ‫باسم‬ ‫التغييرات‬ ‫هذه‬ ‫ربط‬ .‫المضغوط‬ ‫الرشيف‬ ‫باسم‬ ‫المستخدم‬ ‫من‬. ‫مثال‬10.3(‫يعمل‬ ‫)ل‬ ‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ #!/usr/bin/python # Filename: backup_ver2.py import os import time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you are using Windows, use source = [r'C:Documents', r'D:Work'] or something like that # 2. The backup must be stored in a main backup directory target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using # 3. The files are backed up into a zip file. # 4. The current day is the name of the subdirectory in the main directory today = target_dir + time.strftime('%Y%m%d') # The current time is the name of the zip archive now = time.strftime('%H%M%S') # Take a comment from the user to create the name of the zip file comment = raw_input('Enter a comment --> ') if len(comment) == 0: # check if a comment was entered ‫للفهرس‬ ‫عودة‬‫الثالث‬ ‫الصدار‬:|89
  • 91.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ target = today + os.sep + now + '.zip' else: target = today + os.sep + now + '_' + comment.replace(' ', '_') + '.zip' # Create the subdirectory if it isn't already there if not os.path.exists(today): os.mkdir(today) # make directory print 'Successfully created directory', today # 5. We use the zip command (in Unix/Linux) to put the files in a zip archive zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) # Run the backup if os.system(zip_command) == 0: print 'Successful backup to', target else: print 'Backup FAILED' ‫الخرج‬ $ python backup_ver3.py File "backup_ver3.py", line 25 target = today + os.sep + now + '_' + ^ SyntaxError: invalid syntax ‫كيف‬‫لم‬‫يعمل‬‫البرنامج‬‫؟‬ ‫هذا‬‫البرنامج‬‫ل‬‫يعمل‬.!‫بيثون‬‫ت‬‫قول‬‫إ‬‫ن‬‫ثمة‬‫خطأ‬‫صياغي‬‫مما‬‫يعني‬‫أ‬‫ن‬‫البرنامج‬‫ل‬‫يوفي‬ ‫التركيب‬‫الذي‬‫ت‬‫توقعه‬‫بيثون‬.‫عندما‬‫نلحظ‬‫الخطأ‬‫الذي‬‫قدمته‬‫بيثون‬،‫كذلك‬‫ت‬‫خبرنا‬‫عن‬ ‫المكان‬‫الذي‬‫اكتشفت‬‫الخطأ‬.‫ستبدأ‬ ‫لذا‬‫الخطأ‬ ‫تتبع‬.‫السطر‬ ‫هذا‬ ‫من‬ ‫أن‬ ‫نوضح‬ ‫لم‬ ‫ولكننا‬ ،‫ماديين‬ ‫سطرين‬ ‫الى‬ ‫انقسم‬ ‫قد‬ ‫منطقيا‬ ‫سطرا‬ ‫أن‬ ‫نرى‬ ،‫الدقيقة‬ ‫وبالملحظة‬ ‫للفهرس‬ ‫عودة‬‫الثالث‬ ‫الصدار‬:|90
  • 92.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ) ‫الضافة‬ ‫عامل‬ ‫أن‬ ‫بيثون‬ ‫وجدت‬ ‫فقد‬ ،‫ببساطة‬ .‫معا‬ ‫الماديين‬ ‫السطرين‬ ‫هذين‬+‫حدود‬ ‫بدون‬ ( ‫حسابية‬operand‫أن‬ ‫يمكن‬ ‫أننا‬ ‫تذكر‬ .‫العمل‬ ‫تواصل‬ ‫كيف‬ ‫تعرف‬ ‫ل‬ ‫وبالتالي‬ ،‫السطر‬ ‫هذا‬ ‫في‬ ‫المائلة‬ ‫الشرطة‬ ‫باستخدام‬ ‫القادم‬ ‫المادي‬ ‫السطر‬ ‫في‬ ‫متواصل‬ ‫يزال‬ ‫ل‬ ‫المنطقي‬ ‫السطر‬ ‫أن‬ ‫نحدد‬ ) ‫الخلفية‬backslash‫وهذا‬ .‫برنامجنا‬ ‫في‬ ‫التصحيح‬ ‫بهذا‬ ‫نقوم‬ ‫لذا‬ .‫المادي‬ ‫السطر‬ ‫نهاية‬ ‫في‬ ( ) ‫الخطأ‬ ‫إصلح‬ ‫يسمى‬ ‫ما‬bug fixing.( ‫ال‬‫صدار‬‫الرابع‬ ‫مثال‬10.4‫الحتياطي‬ ‫النسخ‬ ‫سكربت‬ #!/usr/bin/python # Filename: backup_ver2.py import os, time # 1. The files and directories to be backed up are specified in a list. source = ['/home/swaroop/byte', '/home/swaroop/bin'] # If you are using Windows, use source = [r'C:Documents', r'D:Work'] or something like that # 2. The backup must be stored in a main backup directory target_dir = '/mnt/e/backup/' # Remember to change this to what you will be using # 3. The files are backed up into a zip file. # 4. The current day is the name of the subdirectory in the main directory today = target_dir + time.strftime('%Y%m%d') # The current time is the name of the zip archive now = time.strftime('%H%M%S') ‫للفهرس‬ ‫عودة‬‫الرابع‬ ‫الصدار‬|91
  • 93.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ # Take a comment from the user to create the name of the zip file comment = raw_input('Enter a comment --> ') if len(comment) == 0: # check if a comment was entered target = today + os.sep + now + '.zip' else: target = today + os.sep + now + '_' + comment.replace(' ', '_') + '.zip' # Notice the backslash! # Create the subdirectory if it isn't already there if not os.path.exists(today): os.mkdir(today) # make directory print 'Successfully created directory', today # 5. We use the zip command (in Unix/Linux) to put the files in a zip archive zip_command = "zip -qr '%s' %s" % (target, ' '.join(source)) # Run the backup if os.system(zip_command) == 0: print 'Successful backup to', target else: print 'Backup FAILED' ‫الخرج‬ $ python backup_ver4.py Enter a comment --> added new examples Successful backup to /mnt/e/backup/20041208/082156_added_new_examples.zip $ python backup_ver4.py ‫للفهرس‬ ‫عودة‬‫الرابع‬ ‫الصدار‬|92
  • 94.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Enter a comment --> Successful backup to /mnt/e/backup/20041208/082316.zip ‫كيف‬‫يعمل‬‫البرنامج‬: ‫النسخه‬ ‫في‬ ‫بعملها‬ ‫قمنا‬ ‫التي‬ ‫الفعلية‬ ‫التحسينات‬ ‫نستعرض‬ ‫دعونا‬ !‫اﻵن‬ ‫يعمل‬ ‫البرنامج‬ ‫هذا‬3. ‫دالة‬ ‫باستخدام‬ ‫المستخدم‬ ‫تعليقات‬ ‫نأخذ‬raw_input‫قد‬ ‫المستخدم‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫نتحقق‬ ‫ثم‬ ‫الدالة‬ ‫باستخدام‬ ‫المدخلت‬ ‫طول‬ ‫باستوضاح‬ ‫بالفعل‬ ‫شيئا‬ ‫به‬ ‫أدخل‬len‫بمجرد‬ ‫المستخدم‬ ‫قام‬ ‫إذا‬ . ‫مفتاح‬ ‫على‬ ‫بالضغط‬enter‫أية‬ ‫تتم‬ ‫لم‬ ‫أو‬ ،‫روتينة‬ ‫نسخة‬ ‫مجرد‬ ‫كانت‬ ‫)لعلها‬ ‫ما‬ ‫لسبب‬ .‫قبل‬ ‫من‬ ‫فعلنا‬ ‫كما‬ ‫نواصل‬ ‫فإننا‬ ،(‫تغييرات‬ ‫المتداد‬ ‫قبل‬ ‫المضغوط‬ ‫الرشيف‬ ‫باسم‬ ‫يلحق‬ ‫التعليق‬ ‫فهذا‬ ،‫تعليق‬ ‫هناك‬ ‫كان‬ ‫إذا‬ ‫ولكن‬.zip. ‫أسماء‬ ‫مع‬ ‫التعامل‬ ‫لن‬ ‫وذلك‬ (_) ‫سفلية‬ ‫بشرط‬ ‫التعليق‬ ‫في‬ ‫المساحات‬ ‫نستبدل‬ ‫أننا‬ ‫ولحظ‬ .‫بكثير‬ ‫أسهل‬ ‫هكذا‬ ‫الملفات‬ ‫مزيد‬‫من‬‫التحسينات‬ ‫مجال‬ ‫دائما‬ ‫هناك‬ ‫ولكن‬ ،‫المستخدمين‬ ‫لمعظم‬ ‫مُرضية‬ ‫بصورة‬ ‫يعمل‬ ‫سكربت‬ ‫هي‬ ‫الرابعة‬ ‫الصدارة‬ ‫من‬ ‫مستوى‬ ‫إضافة‬ ‫يمكنك‬ ،‫مثل‬ .‫للتحسين‬‫الستفاضة‬‫الخيار‬ ‫تحديد‬ ‫يمكنك‬ ‫حيث‬ ،‫للبرنامج‬-v .‫تكلما‬ ‫أكثر‬ ‫يصبح‬ ‫برنامجك‬ ‫لجعل‬ ‫في‬ ‫البرنامج‬ ‫إلى‬ ‫الضافية‬ ‫والدلة‬ ‫الملفات‬ ‫بتمرير‬ ‫تسمح‬ ‫أن‬ ‫الخرى‬ ‫الممكنة‬ ‫التحسينات‬ ‫من‬ ‫قائمة‬ ‫من‬ ‫ذلك‬ ‫إلى‬ ‫وسنتوصل‬ .‫الوامر‬ ‫سطر‬sys.argv‫قائمة‬ ‫إلى‬ ‫نضيفها‬ ‫أن‬ ‫ونستطيع‬ source‫طريقة‬ ‫باستخدام‬ ‫لدينا‬ ‫التي‬extend‫الصنف‬ ‫يوفرها‬ ‫التي‬list. ‫المر‬ ‫استخدام‬ ‫أحبذها‬ ‫التي‬ ‫التحسينات‬ ‫من‬tar‫المر‬ ‫من‬ ‫بدل‬zip‫أنه‬ ‫المر‬ ‫ذلك‬ ‫مزايا‬ ‫أحد‬ . ‫استخدامك‬ ‫عند‬tar‫مع‬ ‫جنب‬ ‫إلى‬ ‫جنبا‬gzip‫والنسخة‬ ‫سرعة‬ ‫أكثر‬ ‫الحتياطي‬ ‫النسخ‬ ‫يصبح‬ ‫فإن‬ ‫ويندوز‬ ‫في‬ ‫الرشيف‬ ‫هذا‬ ‫استخدام‬ ‫أردت‬ ‫وإذا‬ .‫حجما‬ ‫أقل‬ ‫تكون‬ ‫الحتياطية‬WinZip‫يتعامل‬ ‫ملفات‬ ‫مع‬.tar.gz‫والمر‬ .‫بسهولة‬ ً‫أيضا‬tar‫أنظمة‬ ‫معظم‬ ‫في‬ ‫افتراضي‬ ‫بشكل‬ ‫متاح‬ ‫أيضا‬ ‫ويندوز‬ ‫لمستخدمي‬ ‫ويمكن‬ .‫لينكس/يونكس‬‫تنزيله‬.‫وتثبيته‬ ‫النترنت‬ ‫من‬ ‫اﻵن‬‫سيكون‬‫المر‬‫بالشكل‬‫التالي‬: tar = 'tar -cvzf %s %s -X /home/swaroop/excludes.txt' % (target, ' '.join(srcdir)) ‫والخيارات‬‫موضحة‬‫أدناه‬. ‫للفهرس‬ ‫عودة‬‫التحسينات‬ ‫من‬ ‫مزيد‬|93
  • 95.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ c-‫يشير‬‫إ‬‫لى‬creation‫إنشاء‬‫أرشيف‬. v-‫يشير‬‫إلى‬verbose‫أي‬‫أن‬‫المر‬‫يجب‬‫ان‬‫تكون‬‫اكثر‬‫تكلما‬‫وثرثرة‬talkative. z-‫يشير‬‫إلى‬‫مرشح‬gzip‫الذي‬‫ينبغي‬‫استخدامه‬. f-‫يشير‬‫إلى‬force‫أي‬‫الجبار‬‫في‬‫إ‬‫نشاء‬‫الرشيف‬‫أ‬‫ي‬‫إ‬‫نه‬‫ينبغي‬‫أن‬‫يحل‬‫محل‬‫ملف‬‫آخر‬‫إذا‬‫كان‬ ‫يحمل‬‫نفس‬‫السم‬‫بالفعل‬. x-‫يشير‬‫إلى‬‫الملف‬‫الذي‬‫يتضمن‬‫قائمة‬‫أ‬‫سماء‬‫الملفات‬‫التي‬‫يجب‬‫استبعادها‬excluded‫من‬‫النسخة‬ ‫الحتياطية‬.‫على‬‫سبيل‬‫المثال‬،‫يمكنك‬‫تحديد‬*~‫في‬‫هذا‬‫الملف‬‫لعدم‬‫إ‬‫دراج‬‫أ‬‫ي‬‫أ‬‫سماء‬‫للملفات‬ ‫المنتهية‬‫ب‬~‫في‬‫النسخة‬‫الحتياطية‬ * ‫*مهم‬ ‫الوحدة‬ ‫باستخدام‬ ‫سيكون‬ ‫الرشيف‬ ‫من‬ ‫النوع‬ ‫هذا‬ ‫مثل‬ ‫لنشاء‬ ‫المفضلة‬ ‫الطرق‬ ‫أكثر‬zipfile ‫أو‬tarfile‫استخدامها‬ ‫لك‬ ‫والمتاح‬ ‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫من‬ ‫جزءا‬ ‫تشكل‬ ‫إنها‬ .‫التوالي‬ ‫على‬ ‫استخدام‬ ‫تتجنب‬ ‫أيضا‬ ‫المكتبات‬ ‫هذه‬ ‫باستخدام‬ .‫بالفعل‬os.system‫ينصح‬ ‫ل‬ ‫والتي‬ .‫باستخدامها‬ ‫باهظة‬ ‫أخطاء‬ ‫تكلفك‬ ‫أن‬ ‫السهل‬ ‫من‬ ‫لنها‬ ،‫العموم‬ ‫وجه‬ ‫على‬ ‫باستخدامها‬ ‫طريقة‬ ‫أستخدم‬ ‫كنت‬ ‫فقد‬ ، ‫ذلك‬ ‫ومع‬os.system‫تعليمية‬ ‫لغراض‬ ‫احتياطية‬ ‫نسخ‬ ‫لعمل‬ ‫حقيقية‬ ‫ولكنها‬ ، ‫الجميع‬ ‫قبل‬ ‫من‬ ‫مفهوما‬ ‫ليكون‬ ‫كاف‬ ‫بشكل‬ ‫بسيط‬ ‫مثال‬ ‫ذلك‬ ‫يعتبر‬ ‫لذا‬ ، ‫بحتة‬ .‫يكفي‬ ‫بما‬ ‫أيضا‬ :‫البرمجيات‬ ‫تطوير‬ ‫عملية‬ ‫يمكن‬ ‫المراحل‬ ‫هذه‬ ‫فإن‬ .‫البرمجيات‬ ‫كتابة‬ ‫عملية‬ ‫في‬ ‫المختلفة‬ ‫المراحل‬ ‫باجتياز‬ ‫قمنا‬ ‫وقد‬ ‫اﻵن‬ : ‫التالي‬ ‫النحو‬ ‫على‬ ‫تلخيصها‬ 1( ‫)التحليل‬ ‫ماذا‬ . 2(‫)التصميم‬ ‫كيف‬ . 3(‫)التنفيذ‬ ‫افعلها‬ . 4(‫الخطاء‬ ‫وتصحيح‬ ‫)اختبار‬ ‫الختبار‬ . 5(‫النشر‬ ‫عملية‬ ‫)أو‬ ‫الستخدام‬ . 6( ‫)التحسين‬ ‫الصيانة‬ . *‫مهم‬* ‫للفهرس‬ ‫عودة‬‫البرمجيات‬ ‫تطوير‬ ‫عملية‬:|94
  • 96.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الطريقة‬‫الموصى‬‫بها‬‫لكتابة‬‫البرامج‬‫هي‬‫الجراء‬‫الذي‬‫اتبعناه‬‫في‬‫برنامج‬‫عمل‬‫النسخ‬‫الحتياطية‬ –‫قم‬‫بالتحليل‬‫ثم‬‫التصميم‬.‫ابدأ‬‫بتنفيذ‬‫صيغة‬‫بسيطة‬‫للبرنامج‬.‫الختبار‬‫والتصحيح‬.‫استخدام‬ ‫البرنامج‬‫للتأكد‬‫من‬‫أنه‬‫يعمل‬‫كما‬‫هو‬‫متوقع‬.‫واﻵن‬،‫أضف‬‫أية‬‫ميزات‬‫تريدها‬‫واستمر‬‫في‬ ‫تكرار‬‫هذه‬‫الدورة‬" :‫افعل‬-‫جرب‬-‫استخدم‬" "Do It-Test-Use"‫لي‬‫عدد‬‫من‬‫المرات‬‫على‬ ‫النحو‬‫المطلوب‬.‫وتذكر‬‫؛‬‫البرمجيات‬‫تنمو‬‫كالزرع‬،‫ول‬‫تبنى‬!"Software is grown, not built" ‫الخلصة‬ ‫ولقد‬‫رأينا‬‫كيفية‬‫عمل‬‫البرامج‬‫الخاصة‬‫في‬‫بيثون‬‫والمراحل‬‫المختلفة‬‫التي‬‫تشارك‬‫في‬‫كتابة‬ ‫مثل‬‫هذه‬‫البرامج‬.‫وربما‬‫تجد‬‫أ‬‫نه‬‫من‬‫المفيد‬‫إ‬‫نشاء‬‫برامجك‬‫بنفسك‬‫مثلما‬‫فعلنا‬‫في‬‫هذا‬ ‫الفصل‬‫حتى‬‫ت‬‫صبح‬‫مرتاحا‬‫مع‬‫بيثون‬‫فضل‬‫عن‬‫القدرة‬‫على‬‫حل‬‫المشاكل‬.‫وفيما‬‫يلي؛سوف‬ ‫نناقش‬‫البرمجة‬‫الكائنية‬"object-oriented” ‫للفهرس‬ ‫عودة‬‫الخلصة‬|95
  • 97.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫فصل‬11‫الموجهة‬ ‫الكائنية‬ ‫البرمجة‬ . ‫المحتويات‬ ‫جدول‬ ‫مقدمة‬ the self ‫الفئات‬ ‫إنشاء‬‫الفئة‬. ‫طرق‬‫الكائنات‬ ‫استخدام‬‫طرق‬‫الكائنات‬ _ ‫طريقة‬init_ _ ‫طريقة‬ ‫استخدام‬init_ ‫والكائن‬ ‫الفئة‬ ‫متغيرات‬ ‫استخدام‬‫متغيرات‬‫الفئة‬‫والكائن‬ ‫التوارث‬ ‫استخدام‬‫التوارث‬ ‫الخلصة‬ :‫مقدمــة‬ ‫التي‬ ‫الفادات‬ ‫من‬ ‫لبنات‬ ‫أو‬ ‫دوال‬ ‫حول‬ ‫برنامجنا‬ ‫بتصميم‬ ‫قمنا‬ ‫لقد‬ ،‫اﻵن‬ ‫وحتى‬ ‫برامجنا‬ ‫جميع‬ ‫في‬ ‫البرمجة‬ ‫طريقة‬ ‫هذا‬ ‫ويسمى‬ .‫بالبيانات‬ ‫تتلعب‬‫الموجهة‬ ‫الجرائية‬‫لتنظيم‬ ‫أخرى‬ ‫طريقة‬ ‫وهناك‬ . ‫بالكائن‬ ‫يسمى‬ ‫فيما‬ ‫معا‬ ‫وتغليفها‬ ‫والبيانات‬ ‫الوظيفة‬ ‫بين‬ ‫الجمع‬ ‫وهو‬ ‫برنامجك‬object‫وهذا‬ . ‫البرمجة‬ ‫نموذج‬ ‫يسمى‬ ‫ما‬‫الموجهة‬ ‫الكائنية‬‫البرمجه‬ ‫استخدام‬ ‫يمكنك‬ ‫الوقت‬ ‫معظم‬ ‫في‬ . ‫الحل‬ ‫هو‬ ‫ذلك‬ ‫يكون‬ ‫ان‬ ‫أو‬ ،‫كبيرة‬ ‫برامج‬ ‫كتابة‬ ‫تريد‬ ‫عندما‬ ‫الحيان‬ ‫بعض‬ ‫في‬ ‫ولكن‬ ‫الجراءيه‬ .‫التوجه‬ ‫كائنية‬ ‫البرمجة‬ ‫تقنيات‬ ‫استخدام‬ ‫يمكنك‬ ،‫لها‬ ‫النسب‬ ‫الفئة‬ ‫إن‬ ‫الموجهة.حيث‬ ‫الكائنية‬ ‫للبرمجه‬ ‫الرئيسيان‬ ‫الشكلن‬ ‫هما‬ ‫يعتبران‬ ‫والكائنات‬ ‫الفئات‬ class‫تنشئ‬ً‫نوعا‬‫تعتبر‬ ‫حيث‬ ‫جديدا‬‫الكائنات‬‫أمثلة‬‫هو‬ ‫ذلك‬ ‫على‬ ‫القيسة‬ ‫أحد‬ .‫الفئة‬ ‫من‬ ‫الصحيح‬ ‫العدد‬ ‫نوعية‬ ‫من‬ ‫متغيرات‬ ‫لديك‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫أنه‬int‫إن‬ ‫قولنا‬ ‫إلى‬ ‫تترجم‬ ‫والتي‬ ‫)أوكائنات‬ ‫حالت‬ ‫تعتبر‬ ‫التي‬ ‫المتغيرات‬ ‫هي‬ ‫الصحيحه‬ ‫العداد‬ ‫تخزن‬ ‫التي‬ ‫المتغيرات‬objects( ‫الفئة‬ ‫من‬int. ‫للفهرس‬ ‫عودة‬‫فصل‬.11.‫الموجهة‬ ‫الكائنية‬ ‫البرمجة‬| 96
  • 98.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫ملحظة‬‫لمبرمجي‬C/C++/Java/C:*# ‫نلحظ‬‫أن‬‫ه‬‫حتى‬‫الصحيحة‬ ‫العداد‬‫تعامل‬‫على‬‫أ‬‫نها‬‫كائنات‬)‫من‬‫الفئة‬int.(‫وهذا‬‫بخلف‬‫سي‬+ +‫وجافا‬)‫قبل‬‫الصدار‬1.5(‫حيث‬‫الصحيحة‬ ‫العداد‬‫هي‬‫أ‬‫نواع‬‫بدائية‬‫الصل‬.‫انظر‬ )help(int‫لمزيد‬‫من‬‫التفاصيل‬‫حول‬-‫الفئة‬class. ‫مبرمجو‬#‫سي‬‫و‬‫جافا‬1.5‫سيجدون‬‫ذلك‬‫المر‬‫مألوفا‬‫إليهم‬‫حيث‬‫إ‬‫نه‬‫يشبه‬‫مفهوم‬ boxing‫و‬unboxing ‫التي‬ ‫العاديه‬ ‫المتغيرات‬ ‫باستخدام‬ ‫البيانات‬ ‫تخزين‬ ‫للكائنات‬ ‫يمكن‬‫تنتمي‬.‫الكائن‬ ‫هذه‬ ‫إلى‬ ‫حقول‬ ‫تسمى‬ ‫الكائن‬ ‫أو‬ ‫الفئة‬ ‫إلى‬ ‫تنتمي‬ ‫التي‬ ‫والمتغيرات‬fields‫أن‬ ‫للكائنات‬ ‫يمكن‬ .‫الفئة‬ ‫لهذه‬ ‫التي‬ ‫الدوال‬ ‫باستخدام‬ ‫وظائف‬ ‫ايضا‬ ‫لها‬ ‫يكون‬‫تنتمي‬ً‫طرقا‬ ‫تسمى‬ ‫الدوال‬ ‫الفئة.هذه‬ ‫إلى‬ methods‫الدوال‬ ‫بين‬ ‫التفريق‬ ‫في‬ ‫تساعدنا‬ ‫لنها‬ ‫مهمة‬ ‫المصطلحات‬ ‫هذه‬ .‫الفئة‬ ‫لهذ‬ .‫ما‬ ‫كائن‬ ‫أو‬ ‫معينة‬ ‫فئة‬ ‫إلى‬ ‫تنتمي‬ ‫التي‬ ‫وتلك‬ ،‫ذاتها‬ ‫حد‬ ‫في‬ ‫مستقلة‬ ‫هي‬ ‫التي‬ ‫والمتغيرات‬ ‫أنها‬ ‫على‬ ‫اليها‬ ‫يشار‬ ‫ان‬ ‫يمكن‬ ‫والطرق‬ ‫الحقول‬ ‫جميعا‬ ‫وكلها‬‫مواصفات‬.‫الفئة‬ ‫لتلك‬ ‫تنتمي‬ ‫ان‬ ‫يمكنها‬ ‫أو‬ ،‫الفئة‬ ‫من‬ ‫حالة/كائن‬ ‫إلى‬ ‫تنتمي‬ ‫ان‬ ‫منهما‬ ‫لكل‬ ‫يمكن‬ – ‫نوعين‬ ‫من‬ ‫تتكون‬ ‫الحقول‬ ‫اﻵنية‬ ‫المتغيرات‬ ‫تسمي‬ ‫نفسها.فهي‬ ‫الفئة‬ ‫إلى‬instance variables‫الفئة‬ ‫ومتغيرات‬class variables.‫التوالي‬ ‫على‬ ‫المفتاحية‬ ‫الكلمة‬ ‫باستخدام‬ ‫إنشاؤها‬ ‫يتم‬ ‫الفئة‬class‫منظومة‬ ‫في‬ ‫مدرجة‬ ‫الفئة‬ ‫وطرق‬ ‫.الحقول‬ ‫لها‬ ‫تكون‬ ‫أن‬ ‫يجب‬ ‫انها‬ ‫وذلك‬ ،‫العادية‬ ‫الدوال‬ ‫يخالف‬ ‫الفئة‬ ‫لطرق‬ ‫محدد‬ ‫واحد‬ ‫فارق‬ ‫اللبنة.هناك‬ ‫ولكنك‬ ،‫القائمة‬ ‫باراميتر‬ ‫بداية‬ ‫إلى‬ ‫يضاف‬ ‫إضافي‬ ‫أول‬ ‫اسم‬‫ل‬‫عندما‬ ‫الباراميتر‬ ‫لهذا‬ ‫قيمة‬ ‫تعطي‬ ‫ال‬ ‫تستدعي‬method،‫ذاته‬ ‫الكائن‬ ‫إلى‬ ‫يشير‬ ‫المحدد‬ ‫المتغير‬ ‫هذا‬ .‫به‬ ‫تزودنا‬ ‫سوف‬ ‫وبيثون‬ ، ‫الذات‬ ‫باسم‬ ‫تحظى‬ ‫فإنها‬ ،‫التفاق‬ ‫وحسب‬self. The self ‫اسم‬ ‫لها‬ ‫تكون‬ ‫أن‬ ‫يجب‬ ‫انها‬ ‫العادية،وذلك‬ ‫الدوال‬ ‫يخالف‬ ‫الفئة‬ ‫لطرق‬ ‫محدد‬ ‫واحد‬ ‫فارق‬ ‫هناك‬ ‫ولكنك‬ ،‫القائمة‬ ‫باراميتر‬ ‫بداية‬ ‫إلى‬ ‫يضاف‬ ‫إضافي‬ ‫أول‬‫ل‬‫عندما‬ ‫الباراميتر‬ ‫لهذا‬ ‫قيمة‬ ‫تعطي‬ ‫ال‬ ‫تستدعي‬method،‫ذاته‬ ‫الكائن‬ ‫إلى‬ ‫يشير‬ ‫المحدد‬ ‫المتغير‬ ‫هذا‬ .‫به‬ ‫تزودنا‬ ‫سوف‬ ‫وبيثون‬ ، ‫الذات‬ ‫باسم‬ ‫تحظى‬ ‫فإنها‬ ، ‫التفاق‬ ‫وحسب‬self. ،‫الباراميتر‬ ‫لهذه‬ ‫اسم‬ ‫أي‬ ‫إعطاء‬ ‫يمكنك‬ ‫انه‬ ‫ورغم‬‫بشدة‬ ‫يوصى‬‫اسم‬ ‫تستخدم‬ ‫ان‬self‫اسم‬ ‫اي‬ - ‫وأي‬ -‫معياري‬ ‫اسم‬ ‫لستخدام‬ ‫المزايا‬ ‫من‬ ‫العديد‬ ‫وهناك‬ .‫العبوس‬ ‫إلى‬ ‫يؤدي‬ ‫بالتأكيد‬ ‫هو‬ ‫آخر‬ ‫التطوير‬ ‫)بيئة‬ ‫ل‬ ‫المخصصة‬ ‫برامج‬ ‫وحتى‬ ‫فورا‬ ‫به‬ ‫يعترف‬ ‫سوف‬ ‫لبرنامجك‬ ‫قارئ‬ ‫تستخدم‬ ‫كنت‬ ‫اذا‬ ‫تساعدك‬ ‫ان‬ ‫المتكامله(يمكن‬self. ‫للفهرس‬ ‫عودة‬The self|97
  • 99.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ C++/Java/C‫لمبرمجي‬ ‫ملحظة‬ # ‫الفادة‬self‫المؤشر‬ ‫تعادل‬ ‫بيثون‬ ‫في‬self‫لغة‬ ‫في‬C‫الشارة‬ ‫و‬ ++this‫سي‬ ‫و‬ ‫جافا‬ ‫في‬# ‫ل‬ ‫قيمة‬ ‫تعطي‬ ‫بيثون‬ ‫أن‬ ‫كيف‬ ‫مندهشا؛‬ ‫تكون‬ ‫أن‬ ‫عليك‬self‫إعطاء‬ ‫إلى‬ ‫بحاجة‬ ‫لست‬ ‫ولماذا‬ ، ‫قي‬‫تدعى‬ ‫فئة‬ ‫لديك‬ ‫أن‬ ‫مثل‬ ‫لنقل‬ .‫واضحا‬ ‫المر‬ ‫هذا‬ ‫سيجعل‬ ‫المثلة‬ ‫؟.أحد‬ ‫لها‬ ‫مة‬ MyClass‫يسمى‬ ‫الفئة‬ ‫هذه‬ ‫ومثال‬MyObject‫ال‬ ‫تستدعي‬ ‫فعندما‬ .method‫الكائن‬ ‫لهذا‬ : ‫يلي‬ ‫كهما‬MyObject.method(arg1, arg2(‫طريق‬ ‫عن‬ ‫تلقائيا‬ ‫تحويلها‬ ‫يتم‬ ‫فإنه‬ ، ‫إلى‬ ‫بيثون‬MyClass.method(MyObject, arg1, arg2(‫يخص‬ ‫ما‬ ‫كل‬ ‫،وهذا‬self. ‫لديك‬ ‫كان‬ ‫إذا‬ ‫انه‬ ‫أيضا‬ ‫يعني‬ ‫وهذا‬method‫أي‬ ‫تأخذ‬ ‫ل‬argument‫بحاجة‬ ‫تزال‬ ‫ل‬ ‫فإنك‬ ، ‫قيمة‬ ‫على‬ ‫للحصول‬ ‫طريقة‬ ‫تحديد‬ ‫إلى‬self. ‫الفئات‬ :‫التالي‬ ‫المثال‬ ‫خلل‬ ‫منن‬ ‫رؤيتها‬ ‫يمكن‬ ‫للفئة‬ ‫صورة‬ ‫أبسط‬ ‫الفئة‬ ‫إنشاء‬ ‫مثال‬11.1‫الفئة‬ ‫إنشاء‬ #!/usr/bin/python # Filename: simplestclass.py class Person: pass # An empty block p = Person() print p ‫الخرج‬ $ python simplestclass.py <__main__.Person instance at 0xf6fcb18c> ‫للفهرس‬ ‫عودة‬‫الفئة‬ ‫إنشاء‬|98
  • 100.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫يعمل‬ ‫كيف‬ ‫الفادة‬ ‫باستخدام‬ ‫جديدة‬ ‫فئة‬ ‫بإنشاء‬ ‫قمنا‬class‫من‬ ‫مزاحة‬ ‫لبنة‬ ‫تتبع‬ ‫وتلك‬ .‫الفئة‬ ‫باسم‬ ‫متبوعة‬ ‫إليها‬ ‫يشار‬ ‫الفادات‬ ‫من‬ ‫فارغة‬ ‫لبنة‬ ‫لدينا‬ ‫الحالة‬ ‫هذه‬ ‫وفي‬ . ‫الفئة‬ ‫هيكل‬ ‫تصوغ‬ ‫التي‬ ‫الفادات‬ ‫الفادة‬ ‫باستخدام‬pass. .‫الهللية‬ ‫القواس‬ ‫من‬ ‫بزوج‬ ‫متبوعا‬ ‫الفئة‬ ‫اسم‬ ‫باستخدام‬ ‫الفئة‬ ‫لهذه‬ ‫كائن/مثال‬ ‫بإنشاء‬ ‫قمنا‬ ‫ثم‬ ‫عن‬ ‫المزيد‬ ‫نتعلم‬ ‫وسوف‬instantiation‫بفحص‬ ‫نقوم‬ ، ‫التحقق‬ ‫أجل‬ ‫ومن‬ .‫التالي‬ ‫القسم‬ ‫في‬ ‫الفئة‬ ‫من‬ ‫مثال‬ ‫لدينا‬ ‫أن‬ ‫يخبرنا‬ ‫وهو‬ .‫طباعته‬ ‫بمجرد‬ ‫ببساطة‬ ‫المتغير‬ ‫نوع‬person‫في‬ __ ‫الوحدة‬main. __ ‫العنوان‬ ‫هذا‬ ‫وقيمة‬ .ً‫أيضا‬ ‫كتابته‬ ‫يتم‬ ‫للكائن‬ ‫تخزينك‬ ‫عند‬ ‫الحاسب‬ ‫ذاكرة‬ ‫عنوان‬ ‫أن‬ ‫لحظ‬ ‫مساحة‬ ‫تجد‬ ‫حالما‬ ‫الكائن‬ ‫تخزين‬ ‫تستطيع‬ ‫بيثون‬ ‫إن‬ ‫حيث‬ ‫حاسبك‬ ‫على‬ ‫مختلفة‬ ‫قيمة‬ ‫لها‬ ‫سيكون‬ .‫فارغة‬ ‫الكائن‬ ‫طرق‬ ‫لقد‬‫ناقشنا‬‫بالفعل‬‫أن‬‫ال‬‫فئات/الكائنات‬‫يمكنها‬‫أن‬‫تحتوي‬‫طرقا‬‫تشبه‬‫الدوال‬‫إل‬‫إذا‬‫كان‬‫لدينا‬ ‫متغير‬self‫إضافي‬.‫واﻵن‬‫سوف‬‫نرى‬‫مثال‬‫على‬‫ذلك‬. ‫استخدام‬‫الكائن‬ ‫طرق‬ ‫مثال‬11.2‫الكائن‬ ‫طرق‬ #!/usr/bin/python # Filename: method.py class Person: def sayHi(self): print 'Hello, how are you?' p = Person() p.sayHi() # This short example can also be written as Person().sayHi() ‫للفهرس‬ ‫عودة‬‫الكائن‬ ‫طرق‬ ‫استخدام‬|99
  • 101.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الخرج‬ $ python method.py Hello, how are you? ‫كيف‬‫يعمل‬: ‫عمل‬ ‫طريقة‬ ‫رأينا‬ ‫لقد‬self‫طريقة‬ ‫أن‬ ‫لحظ‬ .sayHi‫تظل‬ ‫ولكنها‬ ‫بارميتر‬ ‫أي‬ ‫تأخذ‬ ‫ل‬ ‫ب‬ ‫محتفظة‬self.‫الدالة‬ ‫تعريف‬ ‫في‬ __ ‫طريقة‬init__: ‫من‬ ‫المغزى‬ ‫نرى‬ ‫وسوف‬ .‫بيثون‬ ‫لغة‬ ‫فئات‬ ‫في‬ ‫خاصة‬ ‫أهمية‬ ‫لها‬ ‫الطرق‬ ‫أسماء‬ ‫من‬ ‫العديد‬ ‫هناك‬ ‫طريقة‬__init__.‫اﻵن‬ ‫طريقة‬ ‫تعمل‬__init__‫تهيئة‬ ‫أي‬ ‫لعمل‬ ‫مفيدة‬ ‫الطريقة‬ ‫هذه‬ .‫للفئة‬ ‫المنتمي‬ ‫الكائن‬ ‫عمل‬ ‫بمجرد‬ initialization.‫ونهايته‬ ‫السم‬ ‫بداية‬ ‫في‬ ‫السفليتين‬ ‫الشرطتين‬ ‫ولحظ‬ .‫الكائن‬ ‫مع‬ ‫عملها‬ ‫تريد‬ __ ‫طريقة‬ ‫استخدام‬init: __ ‫مثال‬11.3__ ‫استخدام‬init__ method: #!/usr/bin/python # Filename: class_init.py class Person: def __init__(self, name): self.name = name def sayHi(self): print 'Hello, my name is', self.name p = Person('Swaroop') p.sayHi() # This short example can also be written as Person('Swaroop').sayHi( ‫للفهرس‬ ‫عودة‬‫طريقة‬ ‫استخدام‬__init: __| 100
  • 102.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫الخرج‬ $ python class_init.py Hello, my name is Swaroop ‫كيف‬‫يعمل‬‫البرنامج‬: ‫الطريقة‬ ‫بتعريف‬ ‫قمنا‬ ‫هنا‬__init__‫المعامل‬ ‫بإعطائها‬__init__‫)مع‬self‫المعتاد(.وهنا؛‬ ‫يسمى‬ ‫كذلك‬ ‫جديد‬ ‫حقل‬ ‫بإنشاء‬ ‫فحسب‬ ‫قمنا‬name‫أنهما‬ ‫رغم‬ ‫مختلفان‬ ‫متغيران‬ ‫أنهما‬ ‫.ولحظ‬ .‫بينهما‬ ‫التفرقة‬ ‫لنا‬ ‫يتيح‬ ‫المنقوط‬ ‫السم‬ .‫السم‬ ‫نفس‬ ‫يحملن‬ ‫طريقة‬ ‫صراحة‬ ‫نستدعي‬ ‫ل‬ ‫أننا‬ ‫تلحظ‬ ‫أن‬ ،‫أهمية‬ ‫والكثر‬__init__‫قيم‬ ‫بتمرير‬ ‫نقوم‬ ‫ولكن‬ -‫عنصر‬ ‫ننشئ‬ ‫عندما‬ ‫الفئة‬ ‫اسم‬ ‫بعد‬ ‫القوسين‬ ‫بداخل‬instance‫هو‬ ‫وهذا‬ .‫الفئة‬ ‫هذه‬ ‫من‬ ‫جديد‬ .‫الطريقة‬ ‫هذه‬ ‫من‬ ‫الخاص‬ ‫المغزى‬ ‫حقل‬ ‫استخدام‬ ‫على‬ ‫قادرون‬ ‫نحن‬ ،‫اﻵن‬self.name‫طريقة‬ ‫في‬ ‫تتجلى‬ ‫التي‬ ‫طرقنا‬ ‫في‬sayHi. #‫سي++/جافا/سي‬ ‫لمبرمجي‬ ‫ملحظة‬ __ ‫طريقة‬init‫له‬ ‫مماثلة‬ __constructor#‫سي++/جافا/سي‬ ‫في‬ ‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫لقد‬‫سبق‬‫أن‬‫ناقشنا‬‫بالفعل‬‫الجزء‬‫المتعلق‬‫بوظيفة‬‫الفئات‬‫والكائنات‬،‫واﻵن‬‫سنرى‬‫جزء‬‫البيانات‬ ‫الخاص‬‫بها‬.‫في‬‫الواقع‬،‫إ‬‫نها‬‫ليست‬‫سوى‬‫متغيرات‬‫عادية‬‫مرتبطة‬‫بحيزات‬‫أسماء‬‫الفئات‬ ‫والكائنات‬.‫هذه‬‫السماء‬‫صالحة‬‫ضمن‬‫سياق‬‫هذه‬‫الفئات‬‫والكائنات‬‫فقط‬. ‫وهناك‬‫نوعان‬‫من‬‫الحقول‬--‫متغيرات‬‫الفئة‬class variables‫و‬‫متغيرات‬‫الكائن‬object variables‫والتي‬‫تصنف‬‫تبعا‬‫لما‬‫إذا‬‫كانت‬‫الفئة‬‫أو‬‫الكائن‬-‫على‬‫التوالي‬-‫تمتلك‬ ‫للمتغيرات‬. ‫متغيرات‬‫الفئة‬‫تشترك‬‫في‬‫معنى‬‫أ‬‫نها‬‫تعمل‬‫من‬‫خلل‬‫جميع‬‫الكائنات‬)‫العناصر‬(‫لهذه‬‫الفئة‬.‫ل‬ ‫يوجد‬‫سوى‬‫نسخة‬‫من‬‫متغير‬‫الفئة‬‫وعندما‬‫يقوم‬‫الكائن‬‫ما‬ ‫بعمل‬‫على‬‫متغير‬‫الفئة‬،‫ينعكس‬‫هذا‬ ‫التغيير‬‫في‬‫جميع‬(‫)الكائنات‬ ‫الحالت‬‫الخرى‬‫أيضا‬. ‫تختص‬‫الكائن‬ ‫متغيرات‬‫بالفئة‬ ‫الخاص‬ ‫العنصر‬ ‫في‬ ‫حدة‬ ‫على‬ ‫كائن‬ ‫بكل‬‫ل‬ ‫هم‬ ‫فمثل‬ . ‫ورؤية‬ .‫الفئة‬ ‫نفس‬ ‫في‬ ‫مختلف‬ ‫عنصر‬ ‫في‬ ‫السم‬ ‫بنفس‬ ‫طريقة‬ ‫بأي‬ ‫يرتبطون‬ ‫ول‬ ‫يشتركون‬ ‫والكائن‬ ‫الفئة‬ ‫متغيرات‬ ‫الفهماستخدام‬ ‫سهل‬ ‫المر‬ ‫سيجعل‬ ‫واحد‬ ‫مثال‬ ‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬|101
  • 103.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬ ‫مثال‬11.4.‫والطبقة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬ #!/usr/bin/python # Filename: objvar.py class Person: '''Represents a person.''' population = 0 def __init__(self, name): '''Initializes the person's data.''' self.name = name print '(Initializing %s)' % self.name # When this person is created, he/she # adds to the population Person.population += 1 def __del__(self): '''I am dying.''' print '%s says bye.' % self.name Person.population -= 1 if Person.population == 0: print 'I am the last one.' else: print 'There are still %d people left.' % Person.population ‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬| 102
  • 104.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ def sayHi(self): '''Greeting by the person. Really, that's all it does.''' print 'Hi, my name is %s.' % self.name def howMany(self): '''Prints the current population.''' if Person.population == 1: print 'I am the only person here.' else: print 'We have %d persons here.' % Person.population swaroop = Person('Swaroop') swaroop.sayHi() swaroop.howMany() kalam = Person('Abdul Kalam') kalam.sayHi() kalam.howMany() swaroop.sayHi() swaroop.howMany() ‫الخرج‬ $ python objvar.py (Initializing Swaroop) Hi, my name is Swaroop. I am the only person here. ‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬| 103
  • 105.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ (Initializing Abdul Kalam) Hi, my name is Abdul Kalam. We have 2 persons here. Hi, my name is Swaroop. We have 2 persons here. Abdul Kalam says bye. There are still 1 people left. Swaroop says bye. I am the last one. ‫كيف‬‫يعمل‬: ‫هذا‬‫مثال‬‫طويل‬‫ولكنه‬‫يساعد‬‫في‬‫تبيين‬‫طبيعة‬‫متغيرات‬‫الفئات‬‫والكائنات‬‫؛‬‫وهنا‬ population‫تنتمي‬‫إلى‬‫الفئة‬Person،‫ولذا‬‫تعتبر‬‫متغيرا‬‫للفئة‬.‫والمتغير‬name ‫ينتمي‬‫إلى‬‫الكائن‬)‫وهو‬‫مسند‬‫باستخدام‬self(‫وبالتالي‬‫هو‬‫متغير‬‫للكائن‬. ‫وهكذا‬‫نشير‬‫إلى‬‫متغير‬‫الفئة‬"population"‫كه‬Person.population‫وليس‬‫كه‬ self.population.‫لحظ‬‫أن‬‫متغير‬‫كائن‬‫يحمل‬‫نفس‬‫اسم‬‫متغير‬‫فئة‬‫سوف‬‫يخفي‬‫متغير‬ ‫الفئة‬!‫ونحن‬‫نشير‬‫إلى‬‫اسم‬‫متغير‬‫الكائن‬name‫باستخدام‬self.name‫في‬‫الطرق‬‫الخاصة‬ ‫بالكائن‬.‫تذكر‬‫أن‬‫هناك‬‫اختلف‬‫بسيط‬‫بين‬‫متغيرات‬‫الفئة‬‫ومتغيرات‬‫الكائن‬. ْ‫لحظ‬‫طريقة‬ ّ‫بأن‬__init__ُ‫تُستَعمل‬‫لعمل‬initializeِ‫للحالة‬Person‫مَع‬name. ‫وفي‬‫هذه‬،ِ‫الطريقة‬‫نزيد‬‫عدد‬population‫بمقدار‬1‫حيث‬‫ن‬‫حصل‬Person‫واحد‬‫مضافا‬. ‫كذلك‬‫نلحظ‬‫أن‬‫قيم‬self.name‫تحدد‬‫لكل‬‫كائن‬‫يشير‬‫إلى‬‫طبيعة‬‫متغيرات‬‫الكائن‬. ‫المتغير‬ ‫باستخدام‬ ‫الكائن‬ ‫بنفس‬ ‫الخاصة‬ ‫والطرق‬ ‫المتغيرات‬ ‫إلى‬ ‫تشير‬ ‫أن‬ ‫يجب‬ ‫أنه‬ ‫تذكر‬self ‫و‬‫فقط‬‫يدعى‬ ‫وذلك‬ .attribute reference. ‫استخدام‬ ‫أيضا‬ ‫نرى‬ ‫البرنامج‬ ‫هذا‬ ‫في‬docstrings‫الوصول‬ ‫يمكننا‬ .‫الطرق‬ ‫وكذلك‬ ‫للفئات‬ ‫إلى‬class docstring‫باستخدام‬ ‫التشغيل‬ ‫وقت‬ ‫في‬Person.__doc__‫والطريقة‬ docstring‫كه‬Person.sayHi.__doc__ ‫تشبه‬ ‫أخرى‬ ‫طريقة‬ ‫وهناك‬__init__‫مثل‬__del__‫على‬ ‫ما‬ ‫كائن‬ ‫يوشك‬ ‫عندما‬ ‫تستدعى‬ ‫،التي‬ ‫من‬ ‫الجزء‬ ‫هذا‬ ‫استعمال‬ ‫لعادة‬ ‫النظام‬ ‫إلى‬ ‫إعادته‬ ‫وستتم‬ ،‫ذلك‬ ‫بعد‬ ‫استخدامه‬ ‫يمكن‬ ‫.ول‬ ‫الموت‬ ‫ال‬ ‫حساب‬ ‫بإنقاص‬ ‫ببساطة‬ ‫نقوم‬ ‫الطريقة‬ ‫هذه‬ ‫وفي‬ .‫الذاكرة‬Person.population‫بمقدار‬ 1. ‫للفهرس‬ ‫عودة‬‫والفئة‬ ‫الكائن‬ ‫متغيرات‬ ‫استخدام‬| 104
  • 106.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫طريقة‬__del__‫ضمان‬ ‫هناك‬ ‫وليس‬ ،‫مستخدما‬ ‫الكائن‬ ‫يكون‬ ‫ل‬ ‫حين‬ ‫تعمل‬‫متى‬‫هذه‬ ‫ستعمل‬ ‫إفادة‬ ‫تستخدم‬ ‫أن‬ ‫فقط‬ ‫عليك‬ ‫بوضوح‬ ‫ذلك‬ ‫عمل‬ ‫أردت‬ ‫وإذا‬ .‫الطريقة‬del‫في‬ ‫استعملناها‬ ‫التي‬ .‫السابقة‬ ‫المثلة‬ ‫لمبرمجي‬ ‫ملحظة‬C++/Java/C: ‫تعتبر‬ (‫البيانات‬ ‫عناصر‬ ‫إلى‬ ‫الفئة)إضافة‬ ‫عناصر‬ ‫جميع‬‫عمومية‬‫تعتبر‬ ‫الطرق‬ ‫وجميع‬‫تخيلية‬‫في‬ .‫بيثون‬ ‫و‬‫باستخدام‬ ‫السماء‬ ‫مع‬ ‫البيانات‬ ‫عناصر‬ ‫تستخدم‬ ‫كنت‬ ‫إذا‬ ‫واحد؛‬ ‫استثناء‬ ‫هناك‬‫الشرطتين‬ ‫بادئة‬ ‫السفليتين‬‫مثل‬__privatevar.‫منفردة‬ ‫قيمة‬ ‫لها‬ ‫ليجعل‬ ‫بفاعلية‬ ‫السم‬ ‫صقل‬ ‫بيثون‬ ‫تستخدم‬ ‫؛‬ ‫يصبح‬ ‫أن‬ ‫يجب‬ ‫الكائن‬ ‫أو‬ ‫الفئة‬ ‫داخل‬ ‫فقط‬ ‫يستعمل‬ ‫متغير‬ ‫كل‬ ‫أن‬ ‫هي‬ ‫المتبعة‬ ‫التفاقية‬ ‫فإن‬ ‫هكذا‬ -‫عامة‬ ‫الخرى‬ ‫السماء‬ ‫وجميع‬ ،‫سفلية‬ ‫بشرطة‬public‫أي‬ ‫قبل‬ ‫من‬ ‫تستخدم‬ ‫أن‬ ‫ويمكن‬ ‫الشرطة‬ ‫بادئة‬ ‫عدا‬ ‫)ما‬ ‫بيثون‬ ‫من‬ ‫إجبارية‬ ‫وليست‬ ‫فحسب‬ ‫اتفاقية‬ ‫هذه‬ ‫أن‬ ‫.تذكر‬ ‫فئات/كائنات‬ .(‫المزدوجة‬ ‫السفلية‬ ‫الطريقة‬ ‫أن‬ ً‫أيضا‬ ‫لحظ‬__del__‫مفهوم‬ ‫تماثل‬destructor. ‫التوارث‬ ‫هو‬ ‫الموجهة‬ ‫الكائنية‬ ‫للبرمجة‬ ‫الرئيسة‬ ‫المنافع‬ ‫أحد‬‫استعمال‬ ‫عادة‬‫إ‬‫ذلك‬ ‫وسائل‬ ‫وأحد‬ ،‫الشفرة‬ ‫آلية‬ ‫خلل‬ ‫من‬ ‫عمله‬ ‫يتم‬‫التوارث‬‫بين‬ ‫علقة‬ ‫تطبيق‬ ‫أنه‬ ‫على‬ ‫افضل‬ ‫بشكل‬ ‫تخيله‬ ‫يمكن‬ ‫.التوارث‬ ‫فرعي‬ ‫ونوع‬ ‫رئيس‬ ‫نوع‬subtype. ‫الفئات‬ ‫بين‬ ‫بعض‬ ‫ولديهم‬ .‫كلية‬ ‫في‬ ‫والطلب‬ ‫المعلمين‬ ‫بمتابعة‬ ‫يقوم‬ ‫برنامج‬ ‫كتابة‬ ‫تريد‬ ‫انك‬ ‫لنفترض‬ ‫الراتب‬ ‫مثل‬ ‫معينة‬ ‫خصائص‬ ‫كذلك‬ ‫ولديهم‬ .‫والعنوان‬ ‫والسن‬ ‫السم‬ ‫مثل‬ ‫المشتركة‬ ‫الخصائص‬ .‫للطلبة‬ ‫ومصاريف‬ ‫ودرجات‬ ،‫للمعلمين‬ ‫وإجازات‬ ،‫العلمية‬ ‫والدورات‬ ‫خاصية‬ ‫بإضافة‬ ‫ولكن‬ ،‫وتعالجهما‬ ‫نوع‬ ‫لكل‬ ‫الفئات‬ ‫من‬ ‫مستقلين‬ ‫نوعين‬ ‫تنشئ‬ ‫أن‬ ‫يمكنك‬ . ‫جدا‬ ‫ثقيل‬ ‫المر‬ ‫هذا‬ ‫يصبح‬ ‫وسريعا‬ .‫حدة‬ ‫على‬ ‫فئة‬ ‫كل‬ ‫إلى‬ ‫إضافتها‬ ‫معناها‬ ،‫جديدة‬ ‫مشتركة‬ ‫تسمى‬ ‫مشتركة‬ ‫فئة‬ ‫بإنشاء‬ ‫تكون‬ ‫ان‬ ‫يمكن‬ ‫الفضل‬ ‫والطريقة‬SchoolMember‫وبعدها‬ ، ‫فئة‬ ‫تجعل‬teacher‫وفئة‬student‫ترث‬‫سيصبحان‬ ‫آخر‬ ‫وبمعنى‬ .‫الولى‬ ‫الفئة‬ ‫هذه‬ ‫من‬ .‫الفرعية‬ ‫النواع‬ ‫هذه‬ ‫خصائص‬ ‫نحدد‬ ‫أن‬ ‫يمكننا‬ ‫ذلك‬ ‫وبعد‬ .(‫)الفئة‬ ‫النوع‬ ‫لهذا‬ ‫فرعية‬ ‫أنواع‬ ‫في‬ ‫وظيفة‬ ‫اي‬ ‫أضفت/غيرت‬ ‫الطريقة.إذا‬ ‫هذه‬ ‫في‬ ‫مميزات‬ ‫عدة‬ ‫هناك‬SchoolMember، ‫تضيف‬ ‫ان‬ ‫يمكنك‬ ‫المثال؛‬ ‫سبيل‬ ‫على‬ .‫كذلك‬ ‫الفرعية‬ ‫النواع‬ ‫على‬ ‫تلقائيًا‬ ‫هذا‬ ‫ينعكس‬ ‫سوف‬ ‫جديدا‬ ‫هوية‬ ‫بطاقة‬ ‫حقل‬field card ID‫إضافة‬ ‫طريق‬ ‫عن‬ ‫ببساطة‬ ‫والطلب‬ ‫المعلمين‬ ‫من‬ ‫لكل‬ ،‫الفئة‬classname>SchoolMember‫النواع‬ ‫في‬ ‫الحادثة‬ ‫التغيرات‬ ‫حال‬ ‫أية‬ ‫وعلى‬ . ‫للفهرس‬ ‫عودة‬‫التوارث‬|105
  • 107.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫كائنات‬ ‫إلى‬ ‫تشير‬ ‫أن‬ ‫يمكنك‬ ‫انه‬ ‫الخرى‬ ‫.والميزة‬ ‫الخرى‬ ‫الفرعية‬ ‫النواع‬ ‫في‬ ‫تؤثر‬ ‫ل‬ ‫الفرعية‬ ‫كائن‬ ‫باعتبارها‬ ‫الطلبة‬ ‫أو‬ ‫المعلمين‬SchoolMember‫بعض‬ ‫في‬ ‫مفيدا‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫والذي‬ ‫الوجه‬ ‫تعدد‬ ‫يسمى‬ ‫وذلك‬ .‫المدرسة‬ ‫أعضاء‬ ‫عدد‬ ‫حساب‬ ‫مثل‬ ،‫الحالت‬‫الوجه‬ ‫تعدد‬‫ان‬ ‫حيث‬ ‫؛‬ ‫الكائن‬ ‫فمثل‬ .‫متوقعا‬ ‫الصل‬ ‫النوع‬ ‫يكون‬ ‫عندما‬ ‫حالة‬ ‫أي‬ ‫في‬ ‫يستبدل‬ ‫أن‬ ‫يمكن‬ ‫الفرعي‬ ‫النوع‬ .‫الصلية‬ ‫الفئة‬ ‫من‬ ‫حالة‬ ‫بصفته‬ ‫تكراره‬ ‫يمكن‬ ‫أننا‬ ‫كذلك‬ ‫ونلحظ‬‫استخدام‬ ‫نعيد‬‫فئات‬ ‫في‬ ‫تكرارها‬ ‫إلى‬ ‫بحاجة‬ ‫ولسنا‬ ،‫الصل‬ ‫الفئة‬ ‫شفرة‬ . ‫مستقلة‬ ‫فئات‬ ‫استخدمنا‬ ‫ما‬ ‫حالة‬ ‫في‬ ‫واجبا‬ ‫كان‬ ‫كما‬ ،‫مختلفة‬ ‫الفئة‬SchoolMember‫بأنها‬ ‫تعرف‬ ‫الحالة‬ ‫هذه‬ ‫في‬‫الساسية‬ ‫الفئة‬‫أو‬superclass‫وفئة‬ ، Teacher‫وفئة‬Student‫تسمى‬derived classes‫أو‬subclasses. .‫برنامج‬ ‫صورة‬ ‫في‬ ‫التالي‬ ‫المثال‬ ‫هذا‬ ‫اﻵن‬ ‫وسنرى‬ ‫استخدام‬‫التوارث‬ ‫مثال‬11.5‫التوارث‬ ‫استخدام‬ #!/usr/bin/python # Filename: inherit.py class SchoolMember: '''Represents any school member.''' def __init__(self, name, age): self.name = name self.age = age print '(Initialized SchoolMember: %s)' % self.name def tell(self): '''Tell my details.''' print 'Name:"%s" Age:"%s"' % (self.name, self.age), class Teacher(SchoolMember): '''Represents a teacher.''' ‫للفهرس‬ ‫عودة‬‫التوارث‬ ‫استخدام‬|106
  • 108.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ def __init__(self, name, age, salary): SchoolMember.__init__(self, name, age) self.salary = salary print '(Initialized Teacher: %s)' % self.name def tell(self): SchoolMember.tell(self) print 'Salary: "%d"' % self.salary class Student(SchoolMember): '''Represents a student.''' SchoolMember.__init__(self, name, age) self.marks = marks print '(Initialized Student: %s)' % self.name def tell(self): SchoolMember.tell(self) print 'Marks: "%d"' % self.marks t = Teacher('Mrs. Shrividya', 40, 30000) s = Student('Swaroop', 22, 75) print # prints a blank line members = [t, s] for member in members: member.tell() # works for both Teachers and Student ‫الخرج‬ $ python inherit.py (Initialized SchoolMember: Mrs. Shrividya) ‫للفهرس‬ ‫عودة‬‫التوارث‬ ‫استخدام‬|107
  • 109.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ (Initialized Teacher: Mrs. Shrividya) (Initialized SchoolMember: Swaroop) (Initialized Student: Swaroop) Name:"Mrs. Shrividya" Age:"40" Salary: "30000" Name:"Swaroop" Age:"22" Marks: "75" ‫كيف‬‫يعمل‬: ‫لستعمال‬‫التوارث‬‫في‬ ‫الساسية‬ ‫الفئة‬ ‫اسم‬ ‫بتحديد‬ ‫نقوم‬ ،‫التوارث‬ ‫لستخدام‬tuple‫باسم‬ ‫متبوعا‬ ‫الطريقة‬ ‫أن‬ ‫نلحظ‬ ‫ذلك‬ ‫بعد‬ .‫الفئة‬ ‫تعريف‬ ‫في‬ ‫الفئة‬__init__‫الساسية‬ ‫بالفئة‬ ‫الخاصة‬ ‫المتغير‬ ‫باستخدام‬ ‫واضح‬ ‫بشكل‬ ‫تستدعى‬self‫في‬ ‫الساسية‬ ‫الفئة‬ ‫جزء‬ ‫إعداد‬ ‫يمكننا‬ ‫ذلك‬ ‫أجل‬ ‫،من‬ ‫الدالة‬ ‫باستدعاء‬ ‫تلقائي‬ ‫تقوم‬ ‫ل‬ ‫بيثون‬ ‫إن‬ ،‫تتذكرها‬ ‫أن‬ ‫عليك‬ ‫التي‬ ‫المهمة‬ ‫المور‬ ‫من‬ .‫الكائن‬ .‫بنفسك‬ ‫واضح‬ ‫بشكل‬ ‫باستدعائها‬ ‫تقوم‬ ‫أن‬ ‫وعليك‬ ،‫الساسية‬ ‫للفئة‬ ‫المشيِّدة‬ ‫ال‬ ‫لستدعاء‬ ‫الفئة‬ ‫اسم‬ ‫تقديم‬ ‫طريق‬ ‫عن‬ ‫الساسية‬ ‫الفئة‬ ‫طرق‬ ‫استدعاء‬ ‫يمكننا‬ ‫أنه‬ ‫نلحظ‬ ‫كذلك‬ method‫المتغير‬ ‫إلى‬ ‫نمرر‬ ‫ذلك‬ ‫وبعد‬ ،self.‫قيمة‬ ‫أي‬ ‫مع‬ ‫الفئات‬ ‫معالجة‬ ‫يمكننا‬ ‫أنه‬ ‫نلحظ‬Teacher‫أو‬Student‫للفئة‬ ‫عناصر‬ ‫كمجرد‬ SchoolMember‫الطريقة‬ ‫نستخدم‬ ‫عندما‬ .tell‫للفئة‬SchoolMember. ‫الطريقة‬ ‫أن‬ ‫كذلك‬ ‫ونلحظ‬tell‫الطريقة‬ ‫وليست‬ ‫استدعاؤها‬ ‫يتم‬ ‫الفرعي‬ ‫بالنوع‬ ‫الخاصة‬ tell‫بالفئة‬ ‫الخاصة‬SchoolMember‫بيثون‬ ‫أن‬ ‫هو‬ ‫ذلك‬ ‫لفهم‬ ‫الطرق‬ ‫أحد‬ .ً‫دائما‬‫في‬ ‫تبدأ‬ ‫الطرق‬ ‫عن‬ ‫البحث‬methods‫إيجاد‬ ‫تستطع‬ ‫لم‬ ‫وإذا‬ .‫ذلك‬ ‫تفعل‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫وهي‬ ،‫النوع‬ ‫في‬ ‫ال‬method‫ال‬ ‫عن‬ ‫البحث‬ ‫في‬ ‫تبدأ‬ ‫فإنها‬methods‫تلو‬ ‫واحدة‬ ‫الساسية‬ ‫الفئات‬ ‫إلى‬ ‫المنتمية‬ ‫صف‬ ‫في‬ ‫تحديدها‬ ‫أجل‬ ‫من‬ ‫الخرى‬tuple. ‫الطبقة‬ ‫تعريف‬ ‫في‬ -‫صف‬ ‫في‬ ‫مندرجة‬ ‫فئة‬ ‫من‬ ‫أكثر‬ ‫هناك‬ ‫كان‬ ‫–إذا‬ ‫بالمصطلح‬ ‫خاصة‬ ‫ملحظة‬tuple،‫التوريث‬ ‫تسمى‬ ‫عندئذ‬‫المتعدد‬ ‫بالتوريث‬. ‫الخلصـة‬ ‫لقد‬‫قمنا‬‫اﻵن‬‫باستكشاف‬‫الجوانب‬‫المختلفة‬‫للفئات‬‫والكائنات‬‫فضل‬‫عن‬‫مختلف‬‫المصطلحات‬ ‫المرتبطة‬‫بها‬.‫وقد‬‫شاهدنا‬‫أيضا‬‫فوائد‬‫ومتطلبات‬‫البرمجة‬‫الكائنية‬‫الموجهة‬.‫بيثون‬‫تعتبر‬‫لغة‬ ‫برمجة‬‫عالية‬‫المستوى‬‫في‬‫مجال‬‫البرمجة‬‫الكائنية‬‫الموجهة‬‫وفهم‬‫هذه‬‫المفاهيم‬‫بعناية‬ ‫سيساعدك‬‫كثيرا‬‫في‬‫المدى‬‫البعيد‬. ‫وفيما‬‫يلي‬،‫سنتعلم‬‫كيفية‬‫التعامل‬‫مع‬‫المدخلت‬‫والمخرجات‬‫وكيفية‬‫الوصول‬‫إ‬‫لى‬‫الملفات‬‫في‬ ‫بيثون‬. ‫للفهرس‬ ‫عودة‬‫الخلصـة‬|108
  • 110.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ . ‫الفصل‬12‫الدخل/الخــرج‬ . ‫المحتويات‬ ‫قائمة‬ ‫ال‬‫ملفات‬ ‫استخدام‬‫الملف‬ Pickle Pickling‫و‬Unpickling ‫ال‬‫خلصة‬ ‫مهع‬ ‫التفاعهل‬ ‫علهى‬ ‫قهدرة‬ ‫برنامجهك‬ ‫إعطهاء‬ ‫فهي‬ ‫ترغهب‬ ‫عنهدما‬ ‫الهوقت‬ ‫مهن‬ ‫الكهثير‬ ‫لهديك‬ ‫سهيكون‬ ‫المسهتخدم‬)‫نفسهك‬ ‫أنهت‬ ‫يكهون‬ ‫ولعلهه‬.(‫تطبهع‬ ‫ثهم‬ ، ‫المسهتخدم‬ ‫مهن‬ ً‫مهدخل‬ ‫تأخهذ‬ ‫إن‬ ‫تريهد‬ ‫فهأنت‬ ‫السهابقة‬ ‫النتهائج‬ ‫بعهض‬.‫أن‬ ‫يمكننها‬ ‫ول‬‫الفهادات‬ ‫باسهتخدام‬ ‫ذلهك‬ ‫نحقهق‬raw_input‫و‬print ‫علهى‬‫التهوالي‬.‫بالنسهبة‬‫لل‬‫خهههرج‬‫يمكننها‬ ،‫أيضها‬‫اسهتخدام‬‫مختلهف‬‫الفئة‬ ‫طهرق‬)str (string ‫على‬‫سبيل‬‫المثال‬،‫يمكنك‬‫استخدام‬‫طريقة‬rjust‫إلى‬ ‫محاذاة‬ ‫ذات‬ ‫نصية‬ ‫سلسلة‬ ‫على‬ ‫لتحصل‬ ) ‫انظههههر‬ . ‫محههههدد‬ ‫لنطههههاق‬ ‫اليميههههن‬help(str. ‫صههههيل‬ ‫التفهههها‬ ‫مههههن‬ ‫لمزيههههد‬ ‫يوجد‬‫نوع‬‫شائع‬‫آخر‬‫من‬‫ت‬ ‫الدخل/الخههرج‬‫تعامل‬‫مع‬‫الملفات‬‫وقراءة‬ ،‫إنشاء‬ ‫على‬ ‫القدرة‬ ‫إن‬ . ‫الفصل‬ ‫هذا‬ ‫في‬ ‫الجانب‬ ‫هذا‬ ‫في‬ ‫سنبحث‬ ‫و‬ ، ‫البرامج‬ ‫من‬ ‫للعديد‬ ‫أساسي‬ ‫أمر‬ ‫الملفات‬ ‫وكتابة‬. ‫الملفات‬ ‫يمكنك‬‫فتح‬‫واستخدام‬‫الملفات‬‫ا‬ ‫بغرض‬‫لقراءة‬‫أو‬‫الكتابة‬‫عن‬‫طريق‬‫إنشاء‬‫كائن‬‫للفئة‬file ‫واستخدام‬‫طرق‬read, readline‫أو‬write‫بشكل‬‫مناسب‬‫للقراءة‬‫من‬‫الملف‬‫أو‬‫الكتابة‬‫إلى‬ ‫الملف‬‫قابلية‬ ‫إن‬ .‫القراءة‬‫أو‬‫الكتابة‬‫إلى‬‫ملف‬‫يتوقف‬‫على‬‫النمط‬‫الذي‬‫قمت‬‫بتحديده‬‫لفتح‬ ‫الملف‬.‫ثم‬‫أخيرا‬،‫وعندما‬‫تنتهي‬‫من‬‫الملف‬،‫يمكنك‬‫استدعاء‬‫طريقة‬close‫لتبلغ‬‫بيثون‬‫بأننا‬ ‫انتهينا‬‫من‬‫استخدام‬‫الملف‬. ‫مثال‬12.1‫الملف‬ ‫استخدام‬ #!/usr/bin/python # Filename: using_file.py poem = ''' Programming is fun When the work is done if you wanna make your work also fun: use Python! ''' ‫للفهرس‬ ‫عودة‬‫الملفات‬|109
  • 111.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ f = file('poem.txt', 'w') # open for 'w'riting f.write(poem) # write text to file f.close() # close the file f = file('poem.txt') # if no mode is specified, 'r'ead mode is assumed by default while True: line = f.readline() if len(line) == 0: # Zero length indicates EOF break print line, # Notice comma to avoid automatic newline added by Python f.close() # close the file ‫الخههرج‬ $ python using_file.py Programming is fun When the work is done if you wanna make your work also fun: use Python! ‫كيف‬‫يعمل‬‫البرنامج‬ ‫للفئة‬ ‫مثال‬ ‫بإنشاء‬ ‫قمنا‬ ،‫أول‬file‫الملف‬ ‫فتح‬ ‫نريد‬ ‫الذي‬ ‫والنمط‬ ‫الملف‬ ‫اسم‬ ‫تحديد‬ ‫طريق‬ ‫عن‬ ) ‫بواسطة‬ ‫للقراءة‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫النمط‬ .‫به‬'r') ‫للكتابة‬ ‫نمط‬ ‫أو‬ ‫و‬ ('w') ‫مشترك‬ ‫نمط‬ ‫(أو‬' a'‫تعطيك‬ ‫وسوف‬ ،‫المتاحة‬ ‫النماط‬ ‫من‬ ‫العديد‬ ‫الواقع‬ ‫في‬ ‫وهناك‬ ،(help(file(‫المزيد‬ .‫عنها‬ ‫التفاصيل‬ ‫من‬ ‫طريقة‬ ‫واستخدام‬ ‫الكتابة‬ ‫نمط‬ ‫في‬ ‫ملف‬ ‫نفتح‬ ‫أول‬write‫للفئة‬file‫غلق‬ ‫أخيرا‬ ‫الملف،ثم‬ ‫إلى‬ ‫للكتابة‬ close.‫الملف‬ ‫هذا‬ .‫الفتراضي‬ ‫هو‬ ‫القراءة‬ ‫نمط‬ ‫يكون‬ ،‫نمطا‬ ‫نحدد‬ ‫لم‬ ‫وإذا‬ .‫للقراءة‬ ‫أخرى‬ ‫مرة‬ ‫الملف‬ ‫نفس‬ ‫نفتح‬ ،‫ذلك‬ ‫بعد‬ ‫الطريقة‬ ‫باستخدام‬ ‫الملف‬ ‫من‬ ‫سطر‬ ‫كل‬ ‫في‬ ‫نقرأ‬readline‫إلينا‬ ‫ترجع‬ ‫الطريقة‬ ‫هذه‬ .‫حلقة‬ ‫في‬ ‫نصية‬ ‫سلسلة‬ ‫إلينا‬ ‫يرجع‬ ‫عندما‬ ‫السطر.ولذا‬ ‫نهاية‬ ‫في‬ ‫جديد‬ ‫لسطر‬ ‫حرف‬ ‫إلى‬ ‫بالضافة‬ ‫كامل‬ ‫سطرا‬ ‫فارغة‬.‫الحلقة‬ ‫وتتوقف‬ ‫إليها‬ ‫الوصول‬ ‫تم‬ ‫قد‬ ‫الملف‬ ‫نهاية‬ ‫أن‬ ‫إلى‬ ‫يشير‬ ‫فهو‬ ، ‫الفادة‬ ‫مع‬ ‫فاصلة‬ ‫نستخدم‬ ‫أننا‬ ‫ولحظ‬print‫إفادة‬ ‫تضيفه‬ ‫والذي‬ ،‫تلقائيا‬ ‫جديد‬ ‫سطر‬ ‫حدوث‬ ‫لمنع‬ print.‫جديد‬ ‫سطر‬ ‫إشارة‬ ‫مع‬ ‫ينتهي‬ ‫بالفعل‬ ‫الملف‬ ‫من‬ ‫يقرأ‬ ‫الذي‬ ‫السطر‬ ‫لن‬‫غلق‬ ‫أخيرا‬ ،‫ثم‬close .‫الملف‬ ‫هذا‬ ‫الملف‬ ‫محتويات‬ ‫على‬ ‫اطلع‬ ،‫اﻵن‬poem.txt.‫صحيح‬ ‫بشكل‬ ‫يعمل‬ ‫البرنامج‬ ‫أن‬ ‫من‬ ‫للتأكد‬ ‫للفهرس‬ ‫عودة‬‫الملفات‬|110
  • 112.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Pickle ‫تدعى‬ ‫معيارية‬ ‫وحدة‬ ‫بيثون‬ ‫لنا‬ ‫توفر‬pickle‫تخزين‬ ‫استخدامهافي‬ ‫يمكن‬ ‫،والتي‬‫أي‬‫في‬ ‫كائن‬ ‫الكائن‬ ‫تخزين‬ ‫يسمى‬ ‫ما‬ ‫وهذا‬ .‫مساس‬ ‫دون‬ ‫لحقا‬ ‫عليها‬ ‫تحصل‬ ‫ثم‬ ،‫ملف‬ ‫في‬ ‫بيثون‬‫الدائم‬. ‫تسمى‬ ‫أخرى‬ ‫وحدة‬ ‫وهناك‬cPickle‫الوحدة‬ ‫به‬ ‫تقوم‬ ‫ما‬ ‫نفس‬ ‫بالضبط‬ ‫وظيفتها‬ ‫والتي‬pickle‫ما‬ ‫؛‬ ‫بلغة‬ ‫انهامكتوبة‬ ‫عدا‬C)‫بمقدار‬ ‫أسرع‬ ‫وهي‬1000‫هذه‬ ‫من‬ ‫أي‬ ‫استخدام‬ ‫يمكنك‬ .(‫أكثر‬ ‫أو‬ ‫مرة‬ ‫الوحدات‬cPickle‫الوحدة‬ ‫تستخدم‬ ‫سوف‬ ‫أننا‬ ‫من‬ ‫الرغم‬ ‫على‬ ،cPickle‫إلى‬ ‫نشير‬ ‫نحن‬ ،‫تذكر‬ .‫هنا‬ ‫وحدة‬ ‫مجرد‬ ‫ببساطة‬ ‫الوحدات‬ ‫هذه‬ ‫من‬ ‫كل‬ ‫أن‬pickle Pickling and Unpickling ‫مثال‬12.2Pickling and Unpickling #!/usr/bin/python # Filename: pickling.py import cPickle as p #import pickle as p shoplistfile = 'shoplist.data' # the name of the file where we will store the object shoplist = ['apple', 'mango', 'carrot'] # Write to the file f = file(shoplistfile, 'w') p.dump(shoplist, f) # dump the object to a file f.close() del shoplist # remove the shoplist # Read back from the storage f = file(shoplistfile) storedlist = p.load(f) print storedlist ‫الخههرج‬ $ python pickling.py ['apple', 'mango', 'carrot'] ‫للفهرس‬ ‫عودة‬Pickling and Unpickling| 111
  • 113.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫كيف‬‫يعمل‬‫البرنامج‬ ‫الصيغة‬ ‫نستخدم‬ ‫أن‬ ‫نلحظ‬ ،‫أول‬import..as‫اسم‬ ‫استخدام‬ ‫يمكننا‬ ‫حيث‬ ‫يسير‬ ‫أمر‬ ‫هذا‬ ‫و‬ . ) ‫مختلفة‬ ‫وحدة‬ ‫إلى‬ ‫النتقال‬ ‫لنا‬ ‫يتيح‬ ‫فإنه‬ ،‫الحالة‬ ‫هذه‬ ‫في‬ ‫وحتى‬ .‫للوحدة‬ ‫اقصر‬cPickle‫أو‬ pickle‫هذه‬ ‫إلى‬ ‫نشير‬ ‫ببساطة‬ ‫ونحن‬ ،‫البرنامج‬ ‫بقية‬ ‫في‬ !‫واحد‬ ‫لسطر‬ ‫بسيط‬ ‫تغيير‬ ‫خلل‬ ‫(من‬ ‫كه‬ ،‫الوحدة‬p. ‫الكائن‬ ‫بفتح‬ ‫نقوم‬ ‫أول‬ ،‫ملف‬ ‫في‬ ‫كائن‬ ‫لتخزين‬file‫الملف‬ ‫في‬ ‫الكائن‬ ‫وتخزين‬ ‫الكتابة‬ ‫نمط‬ ‫في‬ ‫الدالة‬ ‫استدعاء‬ ‫طريق‬ ‫عن‬ ‫المفتوح‬dump‫الوحدة‬ ‫من‬pickle‫تسمى‬ ‫العملية‬ ‫هذه‬ .pickling. ‫الدالة‬ ‫باستخدام‬ ‫الكائن‬ ‫نسترجع‬ ‫ذلك؛‬ ‫بعد‬load‫للوحدة‬pickle‫تسمى‬ ‫العملية‬ ‫هذه‬ .‫الكائن‬ ‫ترجع‬ ‫التي‬ unpickling ‫الخلص‬‫ة‬ ‫لقد‬‫ناقشنا‬‫مختلف‬‫أنواع‬‫المدخلت‬‫والمخرجات‬‫وأيضا‬‫معالجة‬‫الملفات‬‫واستخدام‬‫الوحدة‬ pickle. ‫وفيما‬‫يلي‬‫سنبحث‬‫في‬‫مفهوم‬‫الستثناءات‬exceptions. ‫للفهرس‬ ‫عودة‬‫الخلصة‬|112
  • 114.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ . ‫فصل‬13‫الستثناءات‬ . ‫المحتويات‬ ‫قائمة‬ ‫الخطاء‬ Try..Except ‫الستثناءات‬ ‫معالجة‬ ‫الستثناءات‬ ‫رفع‬ ‫الستثناءات‬ ‫رفع‬ ‫كيفية‬ Try ..Finally ‫استخدام‬Finally ‫الخلصة‬ ‫،ماذا‬ ‫المثال‬ ‫سبيل‬ ‫على‬ .‫برنامجك‬ ‫في‬ ‫معينة‬ ‫استثنائية‬ ‫حالت‬ ‫تحدث‬ ‫عندما‬ ‫الستثناءات‬ ‫تقع‬ ‫بالمصادفة‬ ‫حذفت‬ ‫كنت‬ ‫إذا‬ ‫ما‬ ‫أو‬ ‫موجود؟‬ ‫غير‬ ‫والملف‬ ‫ما‬ ‫ملف‬ ‫لقراءة‬ ‫ذاهبا‬ ‫كنت‬ ‫لو‬ ‫يحدث‬ .‫الستثناءات‬ ‫باستخدام‬ ‫تعالج‬ ‫الحالت‬ ‫هذه‬ ‫مثل‬ ‫يعمل؟‬ ‫كان‬ ‫برنامجا‬ ‫والذي‬ ‫بيثون‬ ‫تتولها‬ ‫المور‬ ‫هذه‬ ‫؟‬ ‫الصالحة‬ ‫غير‬ ‫التصريحات‬ ‫بعض‬ ‫لبرنامجك‬ ‫كان‬ ‫لو‬ ‫ماذا‬ . ‫ما‬ ‫خطأ‬ ‫هناك‬ ‫أن‬ ‫وتخبرك‬ {‫لك‬ ‫}معلنة‬ ‫يديها‬ ‫ترفع‬ ‫الخطــاء‬ ‫إفادة‬ ‫إلى‬ ‫بسيطة‬ ‫نظرة‬print‫كتابة‬ ‫في‬ ‫إملئيا‬ ‫أخطأنا‬ ‫لو‬ ‫ماذا‬ .print‫كه‬ ‫وكتبناها‬ Print‫صياغة‬ ‫خطأ‬ ‫بيثون‬ ‫لنا‬ ‫ترفع‬ ، ‫الحالة‬ ‫هذه‬ ‫وفي‬ .‫الصغير‬ ‫والحرف‬ ‫الكبير‬ ‫الحرف‬ ‫لحظ‬ ‫؟‬ syntax error. >>> Print 'Hello World' File "<stdin>", line 1 Print 'Hello World' ^ SyntaxError: invalid syntax >>> print 'Hello World' Hello World ‫هذا‬ ‫أن‬ ‫نلحظ‬syntaxerror‫وهذا‬ .‫عنده‬ ‫الكتابة‬ ‫خطأ‬ ‫اكتشاف‬ ‫تم‬ ‫الذي‬ ‫المكان‬ ‫وأيضا‬ ، ‫يرفع‬ ‫الخطاء‬ ‫معالج‬ ‫يفعله‬ ‫ما‬ ‫هو‬error handler.‫الخطأ‬ ‫لهذا‬ ‫للفهرس‬ ‫عودة‬‫الخطــاء‬|113
  • 115.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Try..Except ‫اضغط‬ .‫المستخدمين‬ ‫من‬ ‫مدخلت‬ ‫قراءة‬ ‫سنحاول‬Ctrl-d.‫يحدث‬ ‫ماذا‬ ‫وانظر‬ >>> s = raw_input('Enter something --> ') Enter something --> Traceback (most recent call last): File "<stdin>", line 1, in ? EOFError ‫يدعى‬ ‫خطأ‬ ‫إلينا‬ ‫ترفع‬ ‫بيثون‬EOFError‫الملف‬ ‫نهاية‬ ‫على‬ ‫العثور‬ ‫تم‬ ‫أنه‬ ‫أساسا‬ ‫يعني‬ ‫والذي‬ ‫مفتاحي‬ ‫على‬ ‫الضغط‬ ‫خلل‬ ‫من‬ ‫يتمثل‬ ‫)الذي‬ ‫متوقعا‬ ‫ذلك‬ ‫يكن‬ ‫لم‬ ‫حيث‬Ctrl-d( .‫الخطاء‬ ‫هذه‬ ‫مثل‬ ‫مع‬ ‫التعامل‬ ‫كيفية‬ ‫سنرى‬ ، ‫يلي‬ ‫وفيما‬ ‫الستثناءات‬ ‫معالجة‬ ‫إفادة‬ ‫باستخدام‬ ‫الستثناءات‬ ‫معالجة‬ ‫يمكننا‬try..except‫المعتادة‬ ‫البيانات‬ ‫بالساس‬ ‫وضعنا‬ ‫.وقد‬ ‫لبنة‬ ‫ضمن‬try‫لبنة‬ ‫في‬ ‫لدينا‬ ‫التي‬ ‫الخطاء‬ ‫معالجات‬ ‫كل‬ ‫وضعنا‬ ‫،وكذلك‬except. ‫مثال‬13.1‫الستثناءات‬ ‫معالجة‬ #!/usr/bin/python # Filename: try_except.py import sys try: s = raw_input('Enter something --> ') except EOFError: print 'nWhy did you do an EOF on me?' sys.exit() # exit the program except: print 'nSome error/exception occurred.' # here, we are not exiting the program print 'Done' ‫الخرج‬ $ python try_except.py Enter something --> Why did you do an EOF on me? $ python try_except.py Enter something --> Python is exceptional! ‫للفهرس‬ ‫عودة‬‫الستثناءات‬ ‫معالجة‬|114
  • 116.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Done ‫البرنامج‬ ‫يعمل‬ ‫كيف‬ ‫اللبنة‬ ‫في‬ ‫خطأ‬ ‫تثير‬ ‫قد‬ ‫التي‬ ‫الفادات‬ ‫كل‬ ‫نضع‬try‫الخطاء‬ ‫جميع‬ ‫معالجة‬ ‫محاولة‬ ‫ثم‬ ‫ومن‬ ‫اللبنة‬ / ‫البند‬ ‫في‬ ‫والستثناءات‬except‫البند‬ .except‫واحد‬ ‫استثناء‬ ‫أو‬ ‫خطأ‬ ‫معالجة‬ ‫يمكنه‬ ‫من‬ ‫أسماء‬ ‫هناك‬ ‫يكن‬ ‫لم‬ ‫إذا‬ .‫للخطاء/الستثناءات‬ ‫العتراضية‬ ‫الجمل‬ ‫من‬ ‫قائمة‬ ‫أو‬ ، ‫محدد‬ ‫بند‬ ‫هناك‬ ‫يكون‬ ‫أن‬ ‫ويجب‬ .‫والستثناءات‬ ‫الخطاء‬ ‫جميع‬ ‫ستعالج‬ ، ‫معطاة‬ ‫الستثناءات‬ ‫أو‬ ‫الخطاء‬ except‫من‬ ‫بند‬ ‫كل‬ ‫مع‬ ‫مرتبط‬ ‫القل‬ ‫على‬ ‫واحد‬try. ‫البرنامج‬ ‫تنفيذ‬ ‫يوقف‬ ‫و‬ ‫يستدعي‬ ‫لبيثون‬ ‫الفتراضي‬ ‫المعالج‬ ‫فإن‬ ‫استثناء‬ ‫أو‬ ‫خطأ‬ ‫أي‬ ‫يعالج‬ ‫لم‬ ‫إذا‬ .‫العمل‬ ‫هذا‬ ‫في‬ ‫بالفعل‬ ‫رأينا‬ ‫وقد‬ .‫رسالة‬ ‫ويطبع‬ ‫بند‬ ‫على‬ ‫الحصول‬ ‫أيضا‬ ‫يمكنك‬else‫اللبنة‬ ‫مع‬ ‫مرتبطا‬try..catch‫البند‬ ‫تنفيذ‬ ‫ويتم‬ .else‫عند‬ ‫استثناء‬ ‫أي‬ ‫وجود‬ ‫عدم‬ ‫على‬ ‫الحصول‬ ‫كذلك‬ ‫نا‬ ‫يمكن‬‫الستثناء‬‫عن‬ ‫إضافية‬ ‫معلومات‬ ‫على‬ ‫الحصول‬ ‫يمكننا‬ ‫لذا‬‫الذي‬ ‫الستثناء‬ ‫حدث‬.‫التالي‬ ‫المثال‬ ‫في‬ ‫هذا‬ ‫ويتجلى‬. ‫الستثناءات‬ ‫رفع‬ ‫الفادة‬ ‫باستخدام‬ ‫الستثناءات‬ ‫رفع‬ ‫يمكنك‬raise‫الخطأ‬ ‫اسم‬ ‫تحدد‬ ‫أن‬ ‫أيضا‬ ‫عليك‬ ‫يجب‬ . ‫الستثناء‬ ‫أو‬ ‫الخطأ‬ .‫الستثناء‬ ‫مع‬ ‫جنب‬ ‫إلى‬ ‫جنبا‬ ‫موضوعا‬ ‫يكون‬ ‫الستثنائي‬ ‫والكائن‬ ، ‫/الستثناء‬ ‫عن‬ ‫مشتقة‬ ‫فئة‬ ‫مباشر‬ ‫غير‬ ‫أو‬ ‫مباشر‬ ‫بشكل‬ ‫تعتبر‬ ‫والتي‬ ‫فئة‬ ‫يكون‬ ‫أن‬ ‫ينبغي‬ ‫رفعه‬ ‫يمكنك‬ ‫الذي‬ ‫الفئة‬Error‫الفئة‬ ‫أو‬Exception.‫التوالي‬ ‫على‬ ‫الستثناءات‬ ‫رفع‬ ‫كيفية‬ ‫مثال‬13.2‫الستثناءات‬ ‫رفع‬ ‫كيفية‬ #!/usr/bin/python # Filename: raising.py class ShortInputException(Exception): '''A user-defined exception class.''' def __init__(self, length, atleast): Exception.__init__(self) self.length = length self.atleast = atleast try: ‫للفهرس‬ ‫عودة‬‫الستثناءات‬ ‫رفع‬ ‫كيفية‬|115
  • 117.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ s = raw_input('Enter something --> ') if len(s) < 3: raise ShortInputException(len(s), 3) # Other work can continue as usual here except EOFError: print 'nWhy did you do an EOF on me?' except ShortInputException, x: print 'ShortInputException: The input was of length %d, was expecting at least %d' % (x.length, x.atleast) else: print 'No exception was raised.' ‫الخهرج‬ $ python raising.py Enter something --> Why did you do an EOF on me? $ python raising.py Enter something --> ab ShortInputException: The input was of length 2, was expecting at least 3 $ python raising.py Enter something --> abc No exception was raised. ‫يعمل‬ ‫كيف‬ ‫استخدام‬ ‫يمكننا‬ ‫ل‬ ‫قد‬ ‫أننا‬ ‫من‬ ‫الرغم‬ ‫على‬ ‫بنا‬ ‫خاص‬ ‫الستثناء‬ ‫من‬ ‫نوع‬ ‫بإنشاء‬ ‫قمنا‬ ،‫هنا‬‫أي‬ ‫استثناء‬/‫إيضاحية‬ ‫لغراض‬ ‫سلفا‬ ‫محدد‬ ‫خطأ‬.‫الفئة‬ ‫هو‬ ‫الجديد‬ ‫الستثناء‬ ‫من‬ ‫النوع‬ ‫وهذا‬ ShortInputException‫هما‬ ‫حقلين‬ ‫على‬ ‫تحتوي‬ ‫وهي‬:length‫و‬ ،‫المدخلت‬ ‫طول‬ ‫وهو‬ atleast‫البرنامج‬ ‫يتوقعه‬ ‫طول‬ ‫أقل‬ ‫وهو‬.‫هو‬ ‫الجديد‬‫الفئة‬.‫حقلين‬ ‫على‬ ‫تحتوي‬ ‫وهي‬:‫هما‬ length،‫المدخلت‬ ‫طول‬ ‫وهو‬ ‫البند‬ ‫في‬، except‫بالفئة‬ ‫نذكرك‬error‫بإجراء‬ ‫يقوم‬ ‫الذي‬ ‫المتغير‬ ‫إلى‬ ‫إضافة‬ ‫أيضا‬ ‫مع‬ ‫المقارنة‬‫الخطأ‬ ‫الكائن‬/‫الستثناء‬.‫للقيم‬ ‫مماثلة‬ ‫تعتبر‬ ‫والتي‬‫والمعاملت‬‫في‬‫الدالة‬ ‫استدعاء‬. ‫الفئة‬ ‫داخل‬ ‫وفي‬except‫نستخدم‬ ‫الخاصة‬‫الحقل‬length‫والحقل‬atleast‫رسالة‬ ‫لطباعة‬ .‫للمستخدم‬ ‫مناسبة‬ ‫للفهرس‬ ‫عودة‬‫الستثناءات‬ ‫رفع‬ ‫كيفية‬|116
  • 118.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Try..Finally ‫يتم‬ ‫أن‬ ‫ويمكن‬ ‫؟‬ ‫ل‬ ‫أو‬ ‫استثناء‬ ‫رفع‬ ‫تم‬ ‫سواء‬ ‫الملف‬ ‫هذا‬ ‫إغلق‬ ‫وأردت‬ ‫الملف‬ ‫تقرأ‬ ‫كنت‬ ‫لو‬ ‫ماذا‬ ‫باستخدام‬ ‫ذلك‬finally‫بنود‬ ‫أحد‬ ‫استخدام‬ ‫يمكنك‬ ‫أنه‬ ‫علما‬ .‫اللبنة‬except‫جنب‬ ‫إلى‬ ‫جنبا‬ ‫لبنة‬ ‫مع‬finally‫اللبنة‬ ‫لنفس‬try‫كنت‬ ‫إذا‬ ‫اﻵخر‬ ‫بداخل‬ ‫واحد‬ ‫لتضمين‬ ‫ستضطر‬ .‫لها‬ ‫المقابلة‬ . ‫كليهما‬ ‫استخدام‬ ‫في‬ ‫ترغب‬ ‫استخدام‬Finally ‫مثال‬13.3‫استخدام‬Finally #!/usr/bin/python # Filename: finally.py import time try: f = file('poem.txt') while True: # our usual file-reading idiom line = f.readline() if len(line) == 0: break time.sleep(2) print line, finally: f.close() print 'Cleaning up...closed the file' ‫الخرج‬ $ python finally.py Programming is fun When the work is done Cleaning up...closed the file Traceback (most recent call last): File "finally.py", line 12, in ? time.sleep(2) KeyboardInterrupt : ‫يعمل‬ ‫كيف‬ ‫من‬ ‫اعتباطية‬ ‫طريقة‬ ‫أدخلت‬ ‫كنت‬ ‫ولكني‬ ،‫الملف‬ ‫بقراءة‬ ‫الخاصة‬ ‫العمل‬ ‫بمجموعة‬ ‫كالمعتاد‬ ‫نقوم‬ ‫لمدة‬ ‫السبات‬2‫الدالة‬ ‫طريقة‬ ‫باستخدام‬ ‫سطر‬ ‫كل‬ ‫طباعة‬ ‫قبل‬ ‫ثانية‬time.sleep‫السبب‬ . ‫ببطء‬ ‫يعمل‬ ‫البرنامج‬ ‫أن‬ ‫هو‬ ‫لذلك‬ ‫الوحيد‬‫العمل‬ ‫بطاقم‬ ‫نقوم‬) .‫بطبيعتها‬ ‫جدا‬ ‫سريعة‬ ‫بيثون‬.( ‫للفهرس‬ ‫عودة‬‫استخدام‬Finally|117
  • 119.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫اضغط‬ ،‫يعمل‬ ‫البرنامج‬ ‫يظل‬ ‫وعندما‬Ctrl+c‫البرنامج‬ ‫لمقاطعة/إلغاء‬ ‫الستثناء‬ ‫أن‬ ‫لحظ‬KeyboardInterrupt‫قبل‬ ‫ولكنه‬ ،‫للخروج‬ ‫طريقه‬ ‫في‬ ‫البرنامج‬ ‫و‬ ‫يلقى‬ ‫الملف‬ ‫إغلق‬ ‫ويتم‬ ‫البند‬ ‫ينفيذ‬ ‫النهاية‬ ‫وفي‬ ،‫البرنامج‬ ‫وجود‬. ‫الخلصة‬ ‫بيانات‬ ‫استخدام‬ ‫ناقشنا‬ ‫لقد‬try..except‫و‬try..finally‫ننشئ‬ ‫كيف‬ ‫رأينا‬ ‫ولقد‬ . .‫كذلك‬ ‫الستثناءات‬ ‫رفع‬ ‫وكيفية‬ ‫بنا‬ ‫خاصة‬ ‫استثناء‬ ‫أنواع‬ ‫منطقتنا‬ .‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫باستكشاف‬ ‫سنقوم‬ ‫المقبل‬ ‫الفصل‬ ‫وفي‬ ‫للفهرس‬ ‫عودة‬‫استخدام‬Finally|118
  • 120.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫فصل‬14‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ . .‫المحتويات‬ ‫قائمة‬ ‫مقدمة‬ ‫الوحدة‬sys ‫الوامر‬ ‫سطر‬ ‫معطيات‬ ‫عن‬ ‫المزيد‬sys ‫الوحدة‬os ‫الخلصة‬ ‫مقدمة‬: ‫مكتبهه‬‫بيثهون‬‫القياسهية‬‫متاحهة‬‫مهع‬‫كهل‬‫تركيهب‬‫لبهايثون‬.‫وههي‬‫تحتهوي‬‫علهى‬‫عهدد‬‫ههائل‬‫مهن‬ ‫الوحدات‬/modules‫المفيدة‬‫جدا‬.‫من‬‫و‬‫الهمية‬‫بمكان‬‫أن‬‫لى‬‫ع‬ ‫تاد‬‫تع‬‫بة‬‫مكت‬‫بيثون‬‫القياسية‬‫؛‬ ‫حيث‬‫إن‬‫معظم‬‫المشاكل‬‫يمكن‬‫حلها‬‫بسهولة‬‫وبسرعة‬‫إذا‬‫كنت‬‫المكتبة‬ ‫هذه‬ ‫على‬ ‫معتادا‬ ‫سنبحث‬‫بعضا‬‫من‬‫الوحدات‬‫المستخدمة‬‫في‬‫هذه‬‫المكتبة‬.‫يمكنك‬‫العثور‬‫على‬‫التفاصيل‬‫الكاملة‬ ‫لجميع‬‫الوحدات‬‫في‬‫مكتبة‬‫بيثون‬‫القياسية‬‫في‬‫قسم‬"Library Reference"‫في‬‫الوثائق‬ ‫التي‬‫تأتي‬‫مع‬‫تركيب‬‫بيثون‬‫الخاص‬‫بك‬. ‫الوحدة‬sys: " ‫الوحهدة‬ ‫ههذه‬ ‫تحتهوي‬sys‫قائمهة‬ ‫بالفعهل‬ ‫رأينها‬ ‫وقهد‬ .‫النظهام‬ ‫مهن‬ ‫محهددة‬ ‫وظيفهة‬ ‫علهى‬ " sys.argv. ‫الوامر‬ ‫سطر‬ ‫معطيات‬ ‫على‬ ‫تحتوي‬ ‫التي‬ ‫الوامر‬ ‫سطر‬ ‫معطيات‬ ‫مثال‬14.1‫الوحدة‬ ‫استخدام‬sys.argv #!/usr/bin/python # Filename: cat.py import sys def readfile(filename): '''Print a file to the standard output.''' ‫للفهرس‬ ‫عودة‬‫الوامر‬ ‫سطر‬ ‫معطيات‬|119
  • 121.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ f = file(filename) while True: line = f.readline() if len(line) == 0: break print line, # notice comma f.close() # Script starts from here if len(sys.argv) < 2: print 'No action specified.' sys.exit() if sys.argv[1].startswith('--'): option = sys.argv[1][2:] # fetch sys.argv[1] but without the first two characters if option == 'version': print 'Version 1.2' elif option == 'help': print ''' This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help''' else: print 'Unknown option.' sys.exit() else: for filename in sys.argv[1:]: readfile(filename) ‫الخرج‬ $ python cat.py No action specified. $ python cat.py --help This program prints files to the standard output. Any number of files can be specified. Options include: ‫للفهرس‬ ‫عودة‬‫الوامر‬ ‫سطر‬ ‫معطيات‬|120
  • 122.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ --version : Prints the version number --help : Display this help $ python cat.py --version Version 1.2 $ python cat.py --nonsense Unknown option. $ python cat.py poem.txt Programming is fun When the work is done if you wanna make your work also fun: use Python! ‫كيف‬‫يعمل‬ : ‫المر‬ ‫تقليد‬ ‫يحاول‬ ‫البرنامج‬ ‫هذا‬cat‫لينكس‬ ‫مستخدمي‬ ‫عند‬ ‫المألوف‬/‫يونكس‬.‫فقط‬ ‫عليك‬‫تح‬ ‫الخرج‬ ‫إلى‬ ‫بطباعتها‬ ‫المر‬ ‫يقوم‬ ‫وسوف‬ ‫النصية‬ ‫الملفات‬ ‫بعض‬ ‫أسماء‬ ‫ديد‬-output ‫في‬ ‫القل‬ ‫على‬ ‫واحد‬ ‫عنصر‬ ‫دائما‬ ‫هناك‬ ،‫تفاعلية‬ ‫غير‬ ‫بطريقة‬ ‫لبيثون‬ ‫برنامج‬ ‫يعمل‬ ‫عندما‬‫قائمة‬ sys.argv‫كه‬ ‫متاحا‬ ‫ويكون‬ ‫عامل‬ ‫يصبح‬ ‫الحالي‬ ‫البرنامج‬ ‫اسم‬ ‫هو‬sys.argv‫بيثون‬ ‫إن‬ ‫حيث‬ ‫الصفر‬ ‫من‬ ‫العد‬ ‫تبدأ‬.‫الوامر‬ ‫سطر‬ ‫ومعاملت‬‫العنصر‬ ‫ذلك‬ ‫تتبع‬ ‫الخرى‬. ‫تحهدد‬ ‫أنهها‬ ‫المؤكهد‬ ‫مهن‬ ‫الهتي‬ ‫الخيهارات‬ ‫ببعهض‬ ‫نمهده‬ ‫أن‬ ‫علينها‬ ‫السهتعمال‬ ‫سههل‬ ‫البرنامهج‬ ‫لجعهل‬ ‫البرنامج‬ ‫عن‬ ‫المزيد‬ ‫معرفة‬ ‫للمستخدم‬.‫أول‬ ‫نستخدم‬ ‫نحن‬argument‫أي‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫لمعرفة‬ ‫لبرنامجنا‬ ‫محددة‬ ‫الخيارات‬ ‫من‬.‫الخيار‬ ‫كان‬ ‫إذا‬--version‫رقم‬ ‫طباعة‬ ‫يتم‬ ،‫مستخدما‬‫إصدارة‬ ‫البرنامج‬.‫الخيار‬ ‫نحدد‬ ‫عندما‬ ،‫وبالمثل‬، -- help‫حول‬ ‫الشرح‬ ‫من‬ ‫قليل‬ ‫نعطي‬‫البرنامج‬.‫نحن‬ ‫دالهة‬ ‫اسهتعمال‬ ‫مهن‬ ‫نسهتفيد‬sys.exit‫البرنامهج‬ ‫مهن‬ ‫للخهروج‬.‫تعودنها‬ ‫وكمها‬‫انظهر‬ ،‫دائمها‬ help(sys.exit(‫التفاصيل‬ ‫من‬ ‫لمزيد‬. ‫ساطة‬‫بب‬ ‫تم‬‫ت‬ ،‫مج‬‫البرنا‬ ‫لى‬‫إ‬ ‫ها‬‫تمرير‬ ‫تم‬‫ي‬ ‫فات‬‫المل‬ ‫سماء‬‫وأ‬ ‫حددة‬‫م‬ ‫يارات‬‫خ‬ ‫ناك‬‫ه‬ ‫كون‬‫ي‬ ‫ل‬ ‫ندما‬‫ع‬ .‫الوامر‬ ‫سطر‬ ‫على‬ ‫محدد‬ ‫ترتيب‬ ‫في‬ ‫اﻵخر‬ ‫تلو‬ ‫واحدا‬ ،‫ملف‬ ‫كل‬ ‫من‬ ‫سطر‬ ‫كل‬ ‫طباعة‬ ‫المر‬ ،‫وبالمناسبة‬cat‫لكلمة‬ ‫اختصار‬concatenate‫هذا‬ ‫به‬ ‫يقوم‬ ‫ما‬ ‫الساس‬ ‫في‬ ‫وهي‬‫البرنا‬ ‫من‬ ‫أكثر‬ ‫أو‬ ‫اثنان‬ ،‫ملحقة‬ ‫أو‬ ‫مرتبطة‬ ‫ملفات‬ ‫سلسلة‬ ‫أو‬ ‫ملف‬ ‫طباعة‬ ‫يمكنه‬ ‫حيث‬ – ‫مج‬‫الملفات‬ ‫الخرج‬ ‫أو‬ ‫الشاشة‬ ‫على‬ ‫معا‬/.output ‫للفهرس‬ ‫عودة‬‫الوامر‬ ‫سطر‬ ‫معطيات‬|121
  • 123.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫عن‬ ‫المزيد‬sys: ‫سلة‬‫السل‬‫صية‬‫الن‬sys.version‫يك‬‫تعط‬‫مات‬‫معلو‬‫عن‬‫صدارة‬‫إ‬‫ثون‬‫بي‬‫لتي‬‫ا‬‫مت‬‫ق‬‫ها‬‫بتثبيت‬.‫و‬ -‫الصف‬tuple‫المسماة‬sys.version_info‫تعطيك‬‫طريقة‬‫أسهل‬‫لتاحة‬‫أجزاء‬‫محددة‬‫من‬ ‫إصدارة‬‫بيثون‬‫لبرنامجك‬. [swaroop@localhost code]$ python >>> import sys >>> sys.version '2.3.4 (#1, Oct 26 2004, 16:42:40) n[GCC 3.4.2 20041017 (Red Hat 3.4.2-6.fc3)]' >>> sys.version_info (2, 3, 4, 'final', 0) *‫للمبرمجين‬‫المحترفين‬: * ‫العناصر‬‫الخرى‬‫ذات‬‫الهمية‬‫في‬‫الوحدة‬sys‫تتضمن‬sys.stdin‫و‬sys.stdout‫و‬ sys.stderr. ‫التوالي‬ ‫على‬ ‫برنامجك‬ ‫في‬ ‫القياسي‬ ‫والخطأ‬ ‫والدخل‬ ‫الخرج‬ ‫سريان‬ ‫مع‬ ‫تتطابق‬ ‫الوحدة‬os ‫إذا‬ ‫خاصهة‬ ‫أهميهة‬ ‫لهها‬ ‫الوحهدة‬ ‫ههذه‬ . ‫التشهغيل‬ ‫ام‬‫ه‬‫لنظ‬ ‫عامهة‬ ‫وظيفهة‬ ‫تمثهل‬ ‫البرمجيهة‬ ‫الوحهدة‬ ‫ههذه‬ ‫يعمل‬ ‫لكي‬ ‫مكتوبا‬ ‫ليكون‬ ‫للبرنامج‬ ‫يسمح‬ ‫إنه‬ ‫أي‬ - ‫لبرامجك‬ ‫مستقلة‬ ‫منصات‬ ‫عمل‬ ‫تريد‬ ‫كنت‬ .‫تغييرات‬ ‫أي‬ ‫ذلك‬ ‫يتطلب‬ ‫أن‬ ‫ودون‬ ‫مشاكل‬ ‫أي‬ ‫دون‬ ‫من‬ ‫كذلك‬ ‫ويندوز‬ ‫على‬ ‫أو‬ ‫لينوكس‬ ‫على‬ ‫المتغير‬ ‫استخدام‬ ‫ذلك‬ ‫على‬ ‫المثلة‬ ‫ومن‬os.sep‫مستقلة‬ ‫بيئة‬ ‫أو‬ ‫مسار‬ ‫تحديد‬ ‫عملية‬ ‫من‬ ‫بدل‬ .‫محدد‬ ‫لنظام‬ ‫الموديل‬ ‫من‬ ‫فائدة‬ ‫الجزاء‬ ‫أكثر‬os.‫بذاته‬ ‫واضح‬ ‫ومعظمها‬ ‫أدناه‬ ‫مدرجة‬ •‫النصية‬ ‫السلسلة‬os.name" ‫فمثل‬ ، ‫تستخدمها‬ ‫التي‬ ‫المنصة‬ ‫تحدد‬nt' ‫و‬ ‫لويندوز‬ "posix' . ‫لينكس/يونيكس‬ ‫لمستخدمي‬ •() ‫الدالة‬os.getcwd‫عليه‬ ‫يعمل‬ ‫الذي‬ ‫الحالي‬ ‫الدليل‬ ‫مثل‬ ، ‫الحالي‬ ‫العمل‬ ‫دليل‬ ‫على‬ ‫للحصول‬ . ‫لبايثون‬ ‫سكريبت‬ •() ‫الدوال‬os.getenv() ‫و‬os.putenv‫على‬ ‫البيئة‬ ‫متغيرات‬ ‫إعداد‬ ‫أو‬ ‫على‬ ‫للحصول‬ ‫تستخدم‬ . ‫التوالي‬ •() ‫الدالة‬os.listdir‫الملفات‬ ‫كل‬ ‫أسماء‬ ‫تعيد‬. ‫الحالي‬ ‫الدليل‬ ‫في‬ ‫والمجلدات‬ •() ‫الدالة‬os.remove. ‫الملفات‬ ‫أحد‬ ‫لحذف‬ ‫تستخدم‬ ‫للفهرس‬ ‫عودة‬‫الوحدة‬os|122
  • 124.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ •() ‫الدالة‬os.system. ‫للصدفة‬ ‫أمر‬ ‫لتشغيل‬ ‫تستخدم‬ •‫النصهية‬ ‫السلسهلة‬os.linesep‫سهبيل‬ ‫علهى‬ ‫الحاليهة‬ ‫المنصهة‬ ‫علهى‬ ‫المسهتخدم‬ ‫السهطر‬ ‫اء‬‫ه‬‫إنه‬ ‫تفيهد‬ ' ‫وندوز‬ ‫يستخدم‬ ‫المثال‬rn' ‫لينكس‬ ‫ويستخدم‬ ، 'n' ‫ماك‬ ‫ويستخدم‬ ، 'r' •‫الدالة‬os.path.split‫المسار‬ ‫في‬ ‫الملف‬ ‫واسم‬ ‫الدليل‬ ‫اسم‬ ‫تعيد‬ (). >>> os.path.split('/home/swaroop/byte/code/poem.txt') ('/home/swaroop/byte/code', 'poem.txt') •() ‫الدوال‬os.path.isfile()‫و‬os.path.isdir‫المعطى‬ ‫المسار‬ ‫كان‬ ‫إذا‬ ‫ما‬ ‫لفحص‬ ‫تستخدم‬ () ‫الدالة‬ ، ‫وبالمثل‬ . ‫التوالي‬ ‫على‬ ‫مجلد‬ ‫أو‬ ‫ملف‬ ‫إلى‬ ‫يشير‬os.path.exists‫لمعرفة‬ ‫تستخدم‬ . ‫بالفعل‬ ‫موجودا‬ ‫المعطى‬ ‫المسار‬ ‫كان‬ ‫إذا‬ ‫ما‬ ) ‫تستخدم‬ ‫أن‬ ‫ويمكن‬ . ‫التفاصيل‬ ‫من‬ ‫لمزيد‬ ‫القياسية‬ ‫بيثون‬ ‫وثائق‬ ‫في‬ ‫البحث‬ ‫يمكنك‬ help(sys‫كذلك‬. ‫الخلصة‬ ‫الوحدة‬ ‫وظائف‬ ‫من‬ ‫بعضا‬ ‫رأينا‬ ‫قد‬sys‫في‬ ‫تبحث‬ ‫أن‬ ‫عليك‬ ‫ينبغي‬ . ‫القياسية‬ ‫بيثون‬ ‫مكتبة‬ ‫في‬ . ‫كذلك‬ ‫الوحدات‬ ‫من‬ ‫والمزيد‬ ‫حولها‬ ‫المزيد‬ ‫على‬ ‫لتحصل‬ ‫القياسية‬ ‫بيثون‬ ‫وثائق‬ ‫أكثر‬ ‫بيثون‬ ‫في‬ ‫جولتنا‬ ‫ستجعل‬ ‫،والتي‬ ‫بيثون‬ ‫من‬ ‫متنوعة‬ ‫جوانب‬ ‫نغطي‬ ‫سوف‬ ‫التالي‬ ‫الفصل‬ ‫وفي‬ . ً‫اكتمال‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬|123
  • 125.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫فصل‬15‫بيثون‬ ‫من‬ ‫المزيد‬ . ‫المحتويات‬ ‫جدول‬ . ‫الخاصة‬ ‫الطرق‬ ‫القائمة‬ ‫تضمين‬ ‫المفردة‬ ‫الفادات‬ ‫لبنات‬ ‫المضمنة‬ ‫القوائم‬ ‫استخدام‬ ‫استقبال‬‫الصفوف‬‫والقوائم‬‫في‬‫الدالة‬ ‫لمبدا‬ ‫نماذج‬ ‫لمبدا‬ ‫نماذج‬ ‫استخدام‬ ‫إفادات‬exec‫و‬eval ‫إفادة‬assert ‫دالة‬repr ‫الخلصة‬ ‫اﻵن‬‫وقد‬‫قمنا‬‫بنجاح‬‫بتغطية‬‫جوانب‬‫رئيسة‬‫ومتنوعة‬‫من‬‫بيثون‬‫والتي‬‫سوف‬‫تستخدمها‬،‫في‬‫هذا‬ ‫الفصل‬‫سنغطي‬‫المزيد‬‫من‬‫الجوانب‬‫التي‬‫تجعل‬‫معرفتنا‬‫بلغة‬‫بيثون‬‫أكثر‬‫اكتمال‬ ‫الخاصة‬ ‫الطرق‬ ‫هنهاك‬‫بعهض‬‫السهاليب‬‫الخاصهة‬‫الهتي‬‫لهها‬‫أهميهة‬‫خاصهة‬‫فهي‬‫الفئات‬/classes‫مثهل‬‫طهرق‬ __init__‫و‬__del__‫والتي‬‫لها‬‫أهمية‬‫قد‬‫شهدناها‬‫بالفعل‬. ‫عموما‬،‫الطرق‬‫الخاصة‬‫تستخدم‬‫لتقليد‬‫سلوك‬‫معين‬.‫فعلى‬‫سبيل‬‫المثال‬،‫إذا‬‫أردت‬‫أ‬‫ن‬‫تستعمل‬ ]x[key‫ية‬‫لعمل‬‫الفهرسهة‬‫الخاصهة‬‫بهك‬‫من‬‫جل‬‫أ‬‫فئة‬‫لديك‬)‫ثل‬‫م‬‫الهتي‬‫ستخدمها‬‫ت‬‫في‬‫القهوائم‬ ‫والصفوف‬tuples(‫ثم‬‫مجرد‬‫تنفيذ‬‫طريقة‬()__getitem__‫ويتم‬‫عملك‬.‫إذا‬‫كنت‬‫تفكر‬ ‫في‬‫ذلك‬،‫فهذا‬‫ما‬‫ت‬‫قوم‬‫بيثون‬‫بعمله‬‫مع‬‫الفئة‬list‫نفسها‬! ‫بعض‬‫هذه‬‫الطرق‬/Methods‫المفيدة‬‫الخاصة‬‫مدرجة‬‫في‬‫الجدول‬‫التالي‬.‫إذا‬‫كنت‬‫تريد‬‫أن‬ ‫تتعرف‬‫على‬‫كل‬‫الطرق‬‫الخاصة‬،‫هناك‬‫قائمة‬‫ضخمة‬‫متاحة‬‫في‬‫الدليل‬‫المرجعي‬‫لبايثون‬. ‫جدول‬15.1‫الخاصة‬ ‫الساليب‬ ‫بعض‬ ‫السم‬‫الشرح‬ __init__(self, ...)‫للستعمال‬ ‫حديثا‬ ‫المنشأ‬ ‫الكائن‬ ‫يعود‬ ‫عندما‬ ‫فقط‬ ‫تستدعى‬ ‫الطريقة‬ ‫وهذه‬ __del__(self)‫الكائن‬ ‫تدمير‬ ‫يتم‬ ‫أن‬ ‫قبل‬ ‫فقط‬ ‫تستدعى‬ ‫للفهرس‬ ‫عودة‬‫فصل‬.15.‫بيثون‬ ‫من‬ ‫المزيد‬|124
  • 126.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫السم‬‫الشرح‬ __str__(self)‫الفادة‬ ‫نستخدم‬ ‫عندما‬ ‫تستدعى‬print‫عندما‬ ‫أو‬ ‫كائن‬ ‫مع‬‫نستخدم‬()str __lt__(self, other) ‫وبالمثل‬‫يوجد‬‫أساليب‬‫خاصة‬‫لجميع‬‫العوامل‬+"،>‫،إلخ‬""> "Less than ‫تستدعى‬‫عند‬‫استخدام‬‫العامل‬ __getitem__(self, key) ] ‫الفهرسة‬ ‫عملية‬ ‫استخدام‬ ‫عند‬ ‫تستدعى‬x[key __len__(self)() ‫المدمجة‬ ‫الدالة‬ ‫استعمال‬ ‫عند‬ ‫تستدعى‬len‫المتسلسلة‬ ‫لكائن‬ ‫لبنات‬‫الفادات‬‫المفردة‬ ‫لها‬ ‫الجزاء‬ ‫من‬ ‫مجموعة‬ ‫تمثل‬ ‫الفادات‬ ‫من‬ ‫لبنة‬ ‫كل‬ ‫أن‬ ‫راسخ‬ ‫فهم‬ ‫لديك‬ ‫يكون‬ ‫أن‬ ‫ينبغي‬ ،‫واﻵن‬ ‫نى‬‫مع‬ ‫جع‬‫ها}را‬‫ب‬ ‫خاص‬‫ال‬ ‫حة‬‫الزا‬ ‫من‬ ‫ستوى‬‫م‬‫الزاحة‬‫صحيح‬ ‫هذا‬ ، ‫سنا‬‫ح‬ .{‫بع‬‫الرا‬ ‫صل‬‫الف‬ ‫في‬ ‫قة‬‫دقي‬ ‫ست‬‫لي‬ ‫ها‬‫ولكن‬ ، ‫لجزاء‬‫ا‬ ‫ظم‬‫لمع‬ ‫سبة‬‫بالن‬100‫سوى‬ ‫ضمن‬‫تت‬ ‫ل‬ ‫فادات‬‫ال‬ ‫نة‬‫لب‬ ‫كانت‬ ‫إذا‬ .٪ ، ‫مثل‬ ‫لنقل‬ ، ‫السطر‬ ‫نفس‬ ‫لى‬‫ع‬ ‫حدده‬‫ت‬ ‫أن‬ ‫يمكنك‬ ‫حينئذ‬ ، ‫واحدة‬ ‫إفادة‬‫إفادة‬conditional ‫أو‬looping. : ‫بوضوح‬ ‫ذلك‬ ‫يشرح‬ ‫التالي‬ ‫والمثال‬ >>> flag = True >>> if flag: print 'Yes' ... Yes .‫اللبنة‬ ‫من‬ ‫مستقل‬ ‫كبند‬ ‫وليس‬ - ‫المكان‬ ‫ذات‬ ‫داخل‬ ‫في‬ ‫تستخدم‬ ‫الواحدة‬ ‫الفادة‬ ‫فإن‬ ، ‫نرى‬ ‫كما‬ ‫برنامجك‬ ‫لجعل‬ ‫هذا‬ ‫استخدام‬ ‫يمكنك‬ ، ‫ذلك‬ ‫من‬ ‫الرغم‬ ‫على‬‫أصغر‬‫أل‬ ‫بشدة‬ ‫أوصي‬ ‫وإنني‬ ، ‫المختصر‬ ‫الرمز‬ ‫طريقة‬ ‫تستخدم‬short-cut، ‫الخطاء‬ ‫من‬ ‫التحقق‬ ‫حالة‬ ‫باستثناء‬ ‫هذه‬ ‫تستخدم‬ ‫كنت‬ ‫إذا‬ ‫إضافية‬ ‫إفادة‬ ‫إضافة‬ ‫بكثير‬ ‫السهل‬ ‫من‬ ‫سيكون‬ ‫أنه‬ ‫الرئيسية‬ ‫السباب‬ ‫الخ.أحد‬ ‫الزاحة‬. ‫السليمة‬ ‫إدخال‬ ‫في‬ ‫يساعدك‬ ‫ذلك‬ ‫فإن‬ ، ‫التفاعلي‬ ‫النمط‬ ‫في‬ ‫بيثون‬ ‫مفسر‬ ‫استخدام‬ ‫عند‬ ‫أنه‬ ‫لحظ‬ ‫أيضا‬ ‫المؤشرات‬ ‫تغيير‬ ‫طريق‬ ‫عن‬ ‫البيانات‬‫حالة‬ ‫وفي‬ .‫ملئم‬ ‫بشكل‬aboe‫الكلمة‬ ‫تدخل‬ ‫أن‬ ‫بعد‬ ، ‫المفتاحية‬if‫عندما‬ .‫بعد‬ ‫منها‬ ‫النتهاء‬ ‫يتم‬ ‫لم‬ ‫الفادة‬ ‫أن‬ ‫إلى‬ ‫لتشير‬ ... ‫إلى‬ ‫المؤشر‬ ‫تغير‬ ‫فإنها‬ ، ‫مفتاح‬ ‫نضغط‬ ، ‫الطريقة‬ ‫بهذه‬ ‫الفادة‬ ‫نكمل‬enter، ‫ذلك‬ ‫بعد‬ .‫اكتملت‬ ‫قد‬ ‫البيانات‬ ‫أن‬ ‫لتأكيد‬ .‫التالية‬ ‫المدخلت‬ ‫وانتظار‬ ‫القديم‬ ‫المؤشر‬ ‫إلى‬ ‫والعودة‬ ‫كلها‬ ‫الفادة‬ ‫تنفيذ‬ ‫بيثون‬ ‫ينهي‬ ‫المضمنة‬ ‫القوائم‬ ‫قائمة‬ ‫لديك‬ ، ‫المثال‬ ‫سبيل‬ ‫على‬ .‫الحالية‬ ‫القائمة‬ ‫من‬ ‫جديدة‬ ‫قائمة‬ ‫لستخلص/اشتقاق‬ ‫تستخدم‬ ‫للفهرس‬ ‫عودة‬‫المضمنة‬ ‫القوائم‬|125
  • 127.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫في‬ ‫مضروبة‬ ‫الرقام‬ ‫جميع‬ ‫مع‬ ‫مناظرة‬ ‫قائمة‬ ‫على‬ ‫تحصل‬ ‫أن‬ ‫تريد‬ ‫و‬ ، ‫العداد‬ ‫من‬2‫فقط‬ ‫ولكن‬ ‫من‬ ‫أكبر‬ ‫تكون‬ ‫عندما‬2.‫تكون‬ ‫المضمنة‬ ‫فالقائمة‬‫نموذجية‬.‫الحالت‬ ‫هذه‬ ‫لمثل‬ ‫المضمنة‬ ‫القوائم‬ ‫استخدام‬ ‫مثال‬15.1‫المضمنة‬ ‫القوائم‬ ‫استخدام‬ #!/usr/bin/python # Filename: list_comprehension.py listone = [2, 3, 4] listtwo = [2*i for i in listone if i > 2] print listtwo ‫الخرج‬ $ python list_comprehension.py [6, 8] ‫يعمل‬ ‫كيف‬ ) ‫بها‬ ‫القيام‬ ‫ينبغي‬ ‫التي‬ ‫التغيرات‬ ‫تحديد‬ ‫خلل‬ ‫من‬ ‫جديدة‬ ‫قائمة‬ ‫نشتق‬ ، ‫هنا‬2*i‫تتحقق‬ ‫عندما‬ ( ‫الشروط‬ ‫بعض‬)if i > 2(‫من‬ ‫الكثير‬ ‫في‬ .‫معدلة‬ ‫غير‬ ‫تزال‬ ‫ل‬ ‫الصلية‬ ‫القائمة‬ ‫أن‬ ‫لحظ‬ . /‫الحلقات‬ ‫نستخدم‬ ‫المرات‬loops‫الشيء‬ ‫ونفس‬ ، ‫القائمة‬ ‫عناصر‬ ‫من‬ ‫عنصر‬ ‫كل‬ ‫إلى‬ ‫للوصول‬ ‫باستخدام‬ ‫يتحقق‬ ‫أن‬ ‫يمكن‬list comprehensions، ‫وإحكاما‬ ، ‫دقة‬ ‫أكثر‬ ‫طريقة‬ ‫وهي‬ . ‫ووضوحا‬ ‫الدوال‬ ‫في‬ ‫والقوائم‬ ‫الصفوف‬ ‫استقبال‬ ‫الصف‬ ‫مثل‬ ‫الدالة‬ ‫معاملت‬ ‫لستقبال‬ ، ‫خاصة‬ ‫طريقة‬ ‫وهناك‬tuple‫بادئة‬ ‫باستخدام‬ ‫قاموس‬ ‫أو‬ *‫أو‬**. ‫الدالة‬ ‫في‬ ‫المعاملت‬ ‫من‬ ‫عدديا‬ ‫متغيرا‬ ‫نأخذ‬ ‫عندما‬ ‫مفيد‬ ‫أمر‬ ‫وهذا‬ .‫التوالي‬ ‫على‬ >>> def powersum(power, *args): ... '''Return the sum of each argument raised to specified power.''' ... total = 0 ... for i in args: ... total += pow(i, power) ... return total ... >>> powersum(2, 3, 4) 25 ‫للفهرس‬ ‫عودة‬‫الدوال‬ ‫في‬ ‫والقوائم‬ ‫الصفوف‬ ‫استقبال‬| 126
  • 128.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ >>> powersum(2, 10) 100 ‫بادئة‬‫ال‬ ‫لى‬‫إ‬ ‫بالنظر‬‫و‬*‫ير‬‫المتغ‬ ‫مام‬‫أ‬args‫في‬ ‫لة‬‫الدا‬ ‫لى‬‫إ‬ ‫ضافة‬‫الم‬ ‫عاملت‬‫الم‬ ‫كل‬ ‫ين‬‫تخز‬ ‫تم‬‫،ي‬ args** ‫البادئة‬ ‫استخدام‬ ‫تم‬ ‫وإذا‬ .‫تيوبل‬ ‫باعتباره‬ ‫مفتهاح/قيمهة‬ ‫مهن‬ ‫أزواج‬ ‫لتكهون‬ ‫المعهاملت‬ ‫إلهى‬ ‫ينظهر‬ ‫أن‬ ‫يجهب‬ ، * ‫مهن‬ ‫بهدل‬ ‫اسهتخدمت‬ ‫قهد‬ key/value.‫للقاموس‬ ‫لمدا‬ ‫نماذج‬ ‫تستخدم‬‫الفادة‬lambda‫لنشاء‬‫كائنات‬‫دالة‬‫جديدة‬‫ثم‬‫إرجاعها‬‫أثناء‬‫وقت‬‫التشغيل‬ ‫لمدا‬ ‫نماذج‬ ‫استخدام‬ ‫مثال‬15.2‫لمبدا‬ ‫نماذج‬ ‫استخدام‬ #!/usr/bin/python # Filename: lambda.py def make_repeater(n): return lambda s: s * n twice = make_repeater(2) print twice('word') print twice(5) ‫الخرج‬ $ python lambda.py wordword 10 : ‫يعمل‬ ‫كيف‬ ‫الدالهة‬ ‫اسهتخدمنا‬ ‫؛‬ ‫هنها‬make_repeater‫فهي‬ ‫جديهدة‬ ‫دالهة‬ ‫كائنهات‬ ‫لنشهاء‬‫وقهت‬‫التشهغيل‬/ runtime. ‫وإرجاعها‬ ‫الفادة‬lambda‫تأخذ‬ ، ‫الساس‬ ‫في‬ . ‫للدالة‬ ‫كائن‬ ‫لنشاء‬ ‫تستخدم‬lambda‫متبوعا‬ ‫معامل‬ ‫بتعبير‬‫واحد‬‫فقط‬‫والذي‬‫يصبح‬‫الجسم‬‫لهذه‬‫الدالة‬،‫وقيمة‬‫هذا‬‫التعبير‬‫يتم‬‫إرجاعها‬‫من‬‫خلل‬ ‫الدالة‬‫الجديدة‬.‫لحظ‬‫أنه‬‫حتى‬‫الفادة‬print‫ل‬‫يمكن‬‫تستخدم‬ ‫أن‬‫نموذج‬ ‫داخل‬‫لمدا‬‫ولكن‬ . .‫فقط‬ ‫كعبارات‬ ‫تستخدم‬ ‫للفهرس‬ ‫عودة‬‫لمدا‬ ‫نماذج‬|127
  • 129.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫إفادات‬exec‫و‬eval ‫ستخدم‬‫ت‬‫يذ‬‫لتنف‬‫فادات‬‫إ‬‫ثون‬‫بي‬‫لتي‬‫ا‬‫تم‬‫ي‬‫ها‬‫تخزين‬‫في‬‫بارة‬‫ع‬‫صية‬‫ن‬‫أو‬‫لف‬‫م‬.‫لى‬‫ع‬‫سبيل‬‫ثال‬‫الم‬، ‫يمكننا‬‫توليد‬‫سلسلة‬‫نصية‬‫تحتوي‬‫شفرة‬‫لبايثون‬‫عند‬‫وقت‬‫التشغيل‬/runtime‫ومن‬َّ‫ثم‬‫تنفيذ‬ ‫هذه‬‫الفادات‬‫باستخدام‬‫الفادات‬exec.‫وهذا‬‫مثال‬‫بسيط‬‫تراه‬‫بأسفهل‬: >>> exec 'print "Hello World"' Hello World ‫إفادة‬eval ‫المثال‬ ‫في‬ ‫يتضح‬ ‫كما‬ ‫النصية‬ ‫السلسلة‬ ‫في‬ ‫تخزن‬ ‫التي‬ ‫الصالحة‬ ‫بيثون‬ ‫تعابير‬ ‫لحساب‬ ‫تستخدم‬ :‫بأسفل‬ >>> eval('2*3') 6 ‫إفادة‬assert ‫إفهادة‬ ‫تسهتخدم‬assert‫بهأن‬ ‫متأكهدا‬ ‫كنهت‬ ‫إذا‬ ‫المثهال‬ ‫سهبيل‬ ‫مهاعلى‬ ‫شهيء‬ ‫تحقهق‬ ‫مهن‬ ‫للتأكهد‬ ‫لم‬ ‫إذا‬ ‫خطأ‬ ‫وترفع‬ ‫ذلك‬ ‫من‬ ‫التحقق‬ ‫وتريد‬ ‫قائمة‬ ‫في‬ ‫تستخدمه‬ ‫القل‬ ‫على‬ ً‫واحدا‬ ً‫عنصرا‬ ‫لديك‬ ‫الفادة‬ ‫تبر‬‫تع‬ ‫حينئذ‬ ً‫قا‬‫متحق‬ ‫يكن‬assert‫الفادة‬ ‫تفشل‬ ‫وعندما‬ ‫الحالة‬ ‫هذه‬ ‫في‬ ‫ية‬‫مثال‬ ‫إفادة‬ assert‫لنا‬ ‫يرتفع‬classname>AssertionError >>> mylist = ['item'] >>> assert len(mylist) >= 1 >>> mylist.pop() 'item' >>> assert len(mylist) >= 1 Traceback (most recent call last): File "<stdin>", line 1, in ? AssertionError ‫الدالة‬repr ‫الدالة‬ ‫تستخدم‬reprt‫ما‬ ‫لكائن‬ ‫نصية‬ ‫لسلسلة‬ ‫قانوني‬ ‫تمثيل‬ ‫على‬ ‫للحصول‬.‫وتقوم‬Backticks‫)وقد‬ ‫ت‬ ‫يسههمى‬‫القتبههاس‬ ‫علمههات‬ ‫عكههس‬ ‫أو‬ ‫حويههل‬(‫الههمر‬ ‫بنفههس‬.‫سههيكون‬ ‫أنههه‬ ‫لحههظ‬‫لههديك‬ eval(repr(object)) == object‫الحيان‬ ‫أغلب‬ ‫في‬ >>> i = [] >>> i.append('item') >>> `i` "['item']" ‫للفهرس‬ ‫عودة‬‫الدالة‬repr|128
  • 130.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ >>> repr(i) "['item']" ‫لة‬‫الدا‬ ‫ستخدم‬‫ت‬ ، ‫ساطة‬‫وبب‬repr‫او‬backticks.‫بع‬‫للط‬ ‫لة‬‫قاب‬ ‫كائن‬‫لل‬ ‫يل‬‫تمث‬ ‫لى‬‫ع‬ ‫صول‬‫للح‬ ‫للدالهة‬ ‫بهك‬ ‫الخاصهة‬ ‫الكائنهات‬ ‫تعيهده‬ ‫فيمها‬ ‫التحكهم‬ ‫يمكنهك‬repr__ ‫طريقهة‬ ‫تحديهد‬ ‫خلل‬ ‫مهن‬ repr.‫بك‬ ‫الخاصة‬ ‫الفئة‬ ‫في‬ __ : ‫الخلصة‬ ‫بعد‬ َّ‫نغط‬ ‫لم‬ ‫أننا‬ ‫من‬ ‫التأكد‬ ‫يمكنك‬ ‫و‬ ،‫الفصل‬ ‫هذا‬ ‫في‬ ‫بيثون‬ ‫مميزات‬ ‫من‬ ‫المزيد‬ ‫تناولنا‬ ‫لقد‬ ‫في‬ ‫تستخدمه‬ ‫سوف‬ ‫ما‬ ‫معظم‬ ‫غطينا‬ ‫قد‬ ‫نكون‬ ،‫المرحلة‬ ‫هذه‬ ‫في‬ ،‫ولكن‬ .‫بيثون‬ ‫ملمح‬ ‫كل‬ .‫ستنشئها‬ ‫أنت‬ ‫البرامج‬ ‫من‬ ‫أيا‬ ‫لتبدأ‬ ‫لك‬ ‫الكفاية‬ ‫فيه‬ ‫المر‬ ‫وهذا‬ . ‫تطبيقاتك‬ .‫بيثون‬ ‫من‬ ‫المزيد‬ ‫استكشاف‬ ‫كيفية‬ ‫نناقش‬ ‫سوف‬ ،‫المقبل‬ ‫الفصل‬ ‫في‬ ‫للفهرس‬ ‫عودة‬‫الخلصة‬:|129
  • 131.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫فصل‬16‫بعد؟‬ ‫وماذا‬ . ‫المحتويات‬ ‫قائمة‬ ‫الرسومية‬ ‫البرمجيات‬ ‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬ ‫المزيد‬ ‫استكشف‬ ‫الخلصة‬ ‫أنك‬ ‫فلبد‬ ،‫البرامج‬ ‫من‬ ‫العديد‬ ‫كتابة‬ ‫ومارست‬ ،‫اﻵن‬ ‫حتى‬ ‫بعناية‬ ‫الكتاب‬ ‫هذا‬ ‫قرأت‬ ‫قد‬ ‫كنت‬ ‫إذا‬ ‫عض‬‫ب‬ ‫شاف‬‫لستك‬ ‫مج‬‫البرا‬ ‫عض‬‫ب‬ ‫شأت‬‫أن‬ ‫كون‬‫ت‬ ‫ما‬‫ورب‬ .‫ﻵن‬‫ا‬ ‫ثون‬‫بي‬ ‫مع‬ ‫ستريحا‬‫وم‬ ‫فا‬‫متآل‬ ‫صبحت‬‫أ‬ .‫تفعل‬ ‫أن‬ ‫فعليك‬ ،‫بالفعل‬ ‫بذلك‬ ‫تقم‬ ‫لم‬ ‫إذا‬ .‫بيثون‬ ‫في‬ ‫اكتسبتها‬ ‫التي‬ ‫المهارات‬ ‫وتطبيق‬ ‫الشياء‬ .'‫بعد؟‬ ‫'ماذا‬ ‫هو‬ ‫اﻵن‬ ‫والسؤال‬ ‫برنامج‬ ‫لنفسك‬ ‫اصنع‬ :‫المشكلة‬ ‫هذه‬ ‫معالجة‬ ‫عليك‬ ‫اقترح‬ ‫أن‬ ‫وأود‬‫عناوين‬ ‫دفتر‬‫بسطر‬ ‫يعمل‬ ‫الصدقاء‬ ‫مثل‬ ‫معارفك؛‬ ‫عن‬ ‫البحث‬ ‫أو‬ ،‫حذف‬ ‫أو‬ ‫تعديل‬ ‫أو‬ ‫إضافة‬ ‫يمكنك‬ ‫باستخدامه‬ - ‫الوامر‬ ‫يجب‬ ‫التفاصيل‬ .‫الهاتف‬ ‫رقم‬ ‫و/أو‬ ‫اللكتروني‬ ‫البريد‬ ‫عنوان‬ ‫مثل‬ ‫ومعلوماتهم‬ ،‫والزملء‬ ‫والسرة‬ .‫لحق‬ ‫وقت‬ ‫في‬ ‫لسترجاعها‬ ‫تخزينها‬ ‫كنت‬ ‫وإذا‬ .‫اﻵن‬ ‫حتى‬ ‫بها‬ ‫مررنا‬ ‫التي‬ ‫المختلفة‬ ‫العناصر‬ ‫تذكرت‬ ‫إذا‬ ،‫ما‬ ‫حد‬ ‫إلى‬ ‫سهل‬ ‫أمر‬ ‫هذا‬ .‫التلميحة‬ ‫هذه‬ ‫فإليك‬ ،‫قدما‬ ‫المضي‬ ‫كيفية‬ ‫بشأن‬ ‫توجيهات‬ ‫تريد‬ ‫تلميحة‬)‫هذا‬ ‫تقرأ‬ ‫أن‬ ‫عليك‬ ‫يجب‬ ‫ل‬.( .‫اسمه‬ ‫جعل‬ ‫مع‬ ‫الشخص‬ ‫كائنات‬ ‫لتخزين‬ ‫قاموسا‬ ‫استخدم‬ .‫الشخص‬ ‫معلومات‬ ‫لتمثيل‬ ‫فئة‬ ‫أنشئ‬ ‫وحدة‬ ‫استخدم‬ .‫المفتاح‬cPickle‫الساليب‬ ‫استخدم‬ .‫الصلب‬ ‫القرص‬ ‫على‬ ‫الكائنات‬ ‫لحفظ‬ .‫الشخاص‬ ‫وتعديل‬ ‫وحذف‬ ‫لضافة‬ ‫القاموس‬ ‫في‬ ‫المدمجة‬ ‫لي‬ ‫أرسل‬ ‫الفور‬ ‫وعلى‬ ،‫واﻵن‬ .‫بيثون‬ ‫مبرمج‬ ‫أنك‬ ‫تدعي‬ ‫أن‬ ‫يمكنك‬ ،‫هذا‬ ‫فعل‬ ‫تستطيع‬ ‫عندما‬ .‫بها‬ ‫أوصيك‬ ‫ولكني‬ ‫اختيارية‬ ‫الخطوة‬ ‫هذه‬ .(-; ‫العظيم‬ ‫الكتاب‬ ‫لهذا‬ ‫شكر‬ ‫بريد‬ :‫بيثون‬ ‫مع‬ ‫رحلتك‬ ‫لمواصلة‬ ‫الطرق‬ ‫بعض‬ ‫إليك‬ ‫الرسومية‬ ‫البرمجيات‬ ‫مكتبات‬‫الرسومية‬ ‫الواجهة‬‫بيثون‬ ‫باستخدام‬-‫باستخدام‬ ‫الرسومية‬ ‫برامجك‬ ‫لعمل‬ ‫تحتاجها‬ ‫بيثون‬.‫مثل‬ ‫برامج‬ ‫إنشاء‬ ‫يمكنك‬IrfanView‫أو‬Kuickshow‫ذلك‬ ‫مثل‬ ‫شيء‬ ‫أي‬ ‫أو‬ ‫بها‬ ‫الخاصة‬ ‫الرتباطات‬ ‫مع‬ ‫بيثون‬ ‫في‬ ‫الرسومية‬ ‫الواجهة‬ ‫مكتبات‬ ‫باستعمال‬.‫ما‬ ‫هي‬ ‫الرتباطات‬ ‫بلغة‬ ‫ذاتها‬ ‫حد‬ ‫في‬ ‫كتابتها‬ ‫تمت‬ ‫التي‬ ‫المكتبات‬ ‫استخدام‬ ‫مع‬ ‫ببايثون‬ ‫البرامج‬ ‫بكتابة‬ ‫لك‬ ‫يسمح‬C ‫للفهرس‬ ‫عودة‬‫الرسومية‬ ‫البرمجيات‬|130
  • 132.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫أو‬C++‫اللغات‬ ‫من‬ ‫غيرها‬ ‫أو‬. ‫بيثون‬ ‫باستخدام‬ ‫الرسومية‬ ‫للواجهة‬ ‫الخيارات‬ ‫من‬ ‫الكثير‬ ‫هناك‬: PyQt.‫الدوات‬ ‫بعُدة‬ ‫بيثون‬ ‫ارتباطات‬ ‫هذه‬Qt)‫كيدي‬ ‫عليه‬ ‫بنيت‬ ‫الذي‬ ‫الساس‬ ‫وهي‬.(Qt ‫لمصمم‬ ‫نظرا‬ ‫خصوصا‬ ‫جدا‬ ‫وقوية‬ ،‫للغاية‬ ‫الستعمال‬ ‫سهلة‬Qt‫المذهلة‬ ‫ووثائقها‬.‫يمكنك‬ ‫حرة‬ ‫بصورة‬ ‫استخدامها‬/‫تريد‬ ‫كنت‬ ‫إذا‬ ‫ثمنها‬ ‫لدفع‬ ‫ستضطر‬ ‫ولكن‬ ،‫لينكس‬ ‫على‬ ‫مجانية‬ ‫ويندوز‬ ‫على‬ ‫استخدامها‬.PyQt‫حرة‬/‫حرة‬ ‫برمجيات‬ ‫إنشاء‬ ‫أردت‬ ‫إذا‬ ‫مجانية‬)GPL(‫على‬ ‫لينكس‬/‫مملوكة‬ ‫برمجيات‬ ‫إنشاء‬ ‫أردت‬ ‫إذا‬ ‫وبمقابل‬ ،‫يونكس‬.‫مصادر‬ ‫من‬PyQt‫الجيدة‬'GUI Programming with Python: Qt Edition'‫طالع‬‫الرسمية‬ ‫الصفحة‬‫من‬ ‫لمزيد‬ ‫التفاصيل‬. PyGTK.‫جتهك‬ ‫الهدوات‬ ‫بعُهدة‬ ‫بيثهون‬ ‫ات‬‫ه‬‫ارتباط‬ ‫ههذه‬" +GTK) "+‫بنيهت‬ ‫الهذي‬ ‫اس‬‫ه‬‫الس‬ ‫وههي‬ ‫نوم‬‫ج‬ ‫يه‬‫عل‬.(‫تك‬‫ج‬+‫سومية‬‫ر‬ ‫قات‬‫تطبي‬ ‫شاء‬‫إن‬ ‫سيمكنك‬ ‫ها‬‫تعتاد‬ ‫أن‬ ‫جرد‬‫بم‬ ‫لك‬‫و‬ ،‫ها‬‫غرابت‬ ‫ها‬‫ل‬ ‫بسهرعة‬.‫هة‬‫الواج‬ ‫صمم‬‫بم‬ ‫مرور‬‫ال‬"‫جلد‬"‫نه‬‫ع‬ ‫نى‬‫غ‬ ‫ل‬ ‫مر‬‫أ‬.‫سين‬‫للتح‬ ‫جة‬‫بحا‬ ‫تهزال‬ ‫ما‬ ‫ثائق‬‫الو‬. ‫جتك‬ ‫تعمل‬+‫مكتمل‬ ‫غير‬ ‫ويندوز‬ ‫إلى‬ ‫نقلها‬ ‫ولكن‬ ‫لينكس‬ ‫على‬ ‫جيدا‬.‫برمجيات‬ ‫إنشاء‬ ‫يمكنك‬ ‫جتك‬ ‫مستخدما‬ ‫مملوكة‬ ‫أو‬ ‫حرة‬.+‫طالع‬‫الرسمية‬ ‫الصفحة‬‫التفاصيل‬ ‫من‬ ‫للمزيد‬. wxPython.‫الهدوات‬ ‫بعُهدة‬ ‫بيثهون‬ ‫ارتباطهات‬ ‫ههذه‬wxWidgets.‫ل‬wxPython‫منحنهى‬ ‫وحتى‬ ،‫ماك‬ ‫و‬ ،‫ويندوز‬ ‫و‬ ،‫لينكس‬ ‫على‬ ‫وتعمل‬ ‫جدا‬ ‫محمولة‬ ‫فهي‬ ‫ذلك‬ ‫ورغم‬ ،‫بها‬ ‫مرتبط‬ ‫تعليمي‬ ‫هة‬‫ه‬‫المدمج‬ ‫هات‬‫ه‬‫المنص‬ ‫هى‬‫ه‬‫عل‬)embedded platforms.(‫هوير‬‫ه‬‫تط‬ ‫بيئات‬ ‫مهن‬ ‫العديهد‬ ‫هد‬‫ه‬‫يوج‬ wxPython‫مثل‬ ‫رسومية‬ ‫واجهة‬ ‫مصممات‬ ‫تشمل‬ ‫التي‬SPE (Stani's Python Editor( ‫هات‬‫الواجهه‬ ‫همم‬‫مصه‬ ‫و‬wxGlade.‫هتخدما‬‫مسه‬ ‫هة‬‫مملوكه‬ ‫أو‬ ‫هرة‬‫حه‬ ‫هات‬‫برمجيه‬ ‫هاء‬‫إنشه‬ ‫هك‬‫يمكنه‬ wxPython.‫طالع‬‫الرسمية‬ ‫الصفحة‬‫التفاصيل‬ ‫من‬ ‫للمزيد‬. TkInter.‫الموجودة‬ ‫الرسومية‬ ‫الواجهة‬ ‫أدوات‬ ‫عُدد‬ ‫أقدم‬ ‫من‬ ‫واحدو‬ ‫هذه‬.‫استخدمت‬ ‫و‬ ‫سبق‬ ‫إذا‬ IDLE‫برنامهههج‬ ‫رأيهههت‬ ‫فقهههد‬TkInter‫يعمهههل‬.‫وثهههائق‬TkInter‫موقهههع‬ ‫علهههى‬ PythonWare.org‫شهاملة‬.TkInter‫لينكهس‬ ‫مهن‬ ‫كهل‬ ‫علهى‬ ‫وتعمهل‬ ‫محمولهة‬/‫و‬ ‫يهونكس‬ ‫سواء‬ ‫حد‬ ‫على‬ ‫وندوز‬.‫أن‬ ‫والهم‬TkInter‫القياسية‬ ‫بيثون‬ ‫توزيعة‬ ‫من‬ ‫جزء‬. ‫راجع‬ ،‫الخيارات‬ ‫من‬ ‫للمزيد‬‫في‬ ‫الرسومية‬ ‫البرمجة‬ ‫ويكي‬ ‫صفحة‬Python.org ‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬ ‫بيثهون‬ ‫علهى‬ ‫سومية‬‫الر‬ ‫للبرمجهة‬ ‫حدة‬‫وا‬ ‫سية‬‫قيا‬ ‫أداة‬ ‫جد‬‫تو‬ ‫ل‬ ‫للسهف‬.‫مهن‬ ‫واحهدة‬ ‫ار‬‫ه‬‫تخت‬ ‫أن‬ ‫اقهترح‬ ‫حالتك‬ ‫حسب‬ ،‫أعله‬ ‫المذكورة‬ ‫الدوات‬ ‫تلك‬.‫استعدادك‬ ‫هو‬ ‫اختيارك‬ ‫تحديد‬ ‫في‬ ‫الول‬ ‫العامل‬‫للدفع‬ ‫ل‬ ‫أو‬ ‫الرسهومية‬ ‫الهدوات‬ ‫مهن‬ ‫أي‬ ‫اسهتخدام‬ ‫مقابهل‬.‫عليهها‬ ‫يعمهل‬ ‫أن‬ ‫تريهد‬ ‫الهتي‬ ‫المنصهة‬ ‫ههو‬ ‫الثهاني‬ ‫العامهل‬ ‫كليهما‬ ‫أم‬ ‫ويندوز‬ ‫أم‬ ‫لينكس‬ ‫برنامجك؛‬.‫مستخدمي‬ ‫من‬ ‫كونك‬ ‫هو‬ ‫الثالث‬ ‫العامل‬‫كيدي‬ ‫أو‬ ‫جنوم‬. ‫للفهرس‬ ‫عودة‬‫الرسومية‬ ‫الدوات‬ ‫عن‬ ‫ملخص‬|131
  • 133.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫المستقبلية‬ ‫الفصول‬ ‫الرسومية‬ ‫الواجهات‬ ‫برمجة‬ ‫عن‬ ‫الكتاب‬ ‫لهذا‬ ‫فصلين‬ ‫أو‬ ‫فصل‬ ‫كتابة‬ ‫في‬ ‫فكرت‬ ‫لقد‬.‫سأختار‬ ‫غالبا‬ wxPython‫المختارة‬ ‫الدوات‬ ‫كعُدّة‬.‫الموضوع‬ ‫هذا‬ ‫حول‬ ‫نظرك‬ ‫وجهة‬ ‫تعرض‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫فهي‬ ‫اشهترك‬ ‫فضهلك‬ ‫فمهن‬‫قائمةه‬byte-of-python‫البريدية‬‫حهول‬ ‫معهي‬ ‫القهراء‬ ‫يتنهاقش‬ ‫حيهث‬ ‫الكتاب‬ ‫لهذا‬ ‫المحتملة‬ ‫التحسينات‬. ‫المزيد‬ ‫استكشف‬ ‫سية‬ ‫القيا‬ ‫ثون‬ ‫بي‬ ‫بة‬ ‫مكت‬.‫عنهه‬ ‫تبحهث‬ ‫ما‬ ‫المكتبهة‬ ‫ههذه‬ ‫فهي‬ ‫سهتجد‬ ،‫الهوقت‬ ‫أغلهب‬ .‫املة‬‫ه‬‫ش‬ ‫بة‬‫مكت‬ ‫خلل‬ ‫تتجول‬ ‫بأن‬ ‫بشدة‬ ‫أوصى‬ ‫أنا‬ .‫بيثون‬ ‫في‬ '‫مضمّنة‬ ‫'البطاريات‬ ‫فلسفة‬ ‫بوصفه‬ ‫إليه‬ ‫يشار‬ ‫وهذا‬ ‫لبايثون‬ ‫القياسية‬ ‫الوثائق‬.‫بيثون‬ ‫بلغة‬ ‫كبيرة‬ ‫برامج‬ ‫كتابة‬ ‫بدء‬ ‫في‬ ‫المتابعة‬ ‫قبل‬ Python.org‫؛‬‫ومفسر‬ ‫بيثون‬ ‫لغة‬ ‫من‬ ‫الصدارات‬ ‫أحدث‬ ‫ستجد‬ .‫بيثون‬ ‫البرمجة‬ ‫للغة‬ ‫الرسمي‬ ‫الموقع‬ ‫جوانب‬ ‫مختلف‬ ‫حول‬ ‫النشطة‬ ‫المناقشات‬ ‫تجري‬ ‫حيث‬ ‫البريدية‬ ‫القوائم‬ ‫مختلف‬ ‫أيضا‬ ‫وهناك‬ .‫اللغة‬ .‫بيثون‬ comp.lang.python‫أخبهار‬ ‫مجموعهة‬ ‫ههي‬usenet‫ههذه‬ ‫حهول‬ ‫النقهاش‬ ‫يجهري‬ ‫حيهث‬ ‫إلى‬ ‫الوصول‬ ‫يمكنك‬ .‫تلك‬ ‫الخبار‬ ‫مجموعة‬ ‫إلى‬ ‫واستفساراتك‬ ‫رسائلك‬ ‫إرسال‬ ‫يمكنك‬ .‫اللغة‬ ‫باسهتخدام‬ ‫الهنترنت‬ ‫علهى‬ ‫المجموعهات‬ ‫ههذه‬‫جوجل‬ ‫مجموعات‬‫إلهى‬ ‫النضهمام‬ ‫أو‬‫البريديهة‬ ‫القائمهة‬ .‫الخبار‬ ‫لمجموعة‬ ‫مرآة‬ ‫سوى‬ ‫ليست‬ ‫والتي‬ ‫بيثون‬ ‫طبخ‬ ‫كتاب‬‫كيفية‬ ‫حول‬ ‫النصائح‬ ‫أو‬ ‫الوصفات‬ ‫من‬ ‫مجموعة‬ ‫جمع‬ ‫حيث‬ ‫للغاية‬ ‫قيم‬ ‫كتاب‬ .‫بيثون‬ ‫مستخدم‬ ‫كل‬ ‫يقرأه‬ ‫أن‬ ‫بد‬ ‫ل‬ ‫الكتاب‬ ‫هذا‬ .‫بيثون‬ ‫باستخدام‬ ‫المشاكل‬ ‫من‬ ‫معينة‬ ‫أنواع‬ ‫حل‬ ‫الساحرة‬ ‫بيثون‬.‫مرتز‬ ‫يد‬ ‫دا‬ ‫بقلم‬ ‫بيثون‬ ‫حول‬ ‫الرائعة‬ ‫المقالت‬ ‫من‬ ‫سلسلة‬ ‫هي‬‫ڤ‬ ‫بيثون‬ ‫في‬ ‫غص‬‫الحالي‬ ‫الكتاب‬ ‫تماما‬ ‫قرأت‬ ‫إذا‬ .‫بيثون‬ ‫مبرمجي‬ ‫من‬ ‫الخبرة‬ ‫لذوي‬ ‫جدا‬ ‫جيد‬ ‫كتاب‬ ‫المواضيع‬ ‫من‬ ‫مجموعة‬ ‫يغطي‬ .‫ذلك‬ ‫بعد‬ '‫بيثون‬ ‫في‬ ‫'غص‬ ‫تقرأ‬ ‫أن‬ ‫بشدة‬ ‫فأرجح‬ ،‫اﻵن‬ ‫تقرأه‬ ‫الذي‬ ‫معالجة‬ ‫ذلك‬ ‫في‬ ‫بما‬XML.‫والوظيفية‬ ‫والبرمجة‬ ،‫الوحداتية‬ ‫والختبارات‬ ، Jython‫بلغهة‬ ‫مج‬‫برا‬ ‫كتابهة‬ ‫بإمكانهك‬ ‫أن‬ ‫يعنهي‬ ‫وههذا‬ .‫ا‬‫ه‬‫جاف‬ ‫لغهة‬ ‫فهي‬ ‫بيثهون‬ ‫لمفسهر‬ ‫تطهبيق‬ ‫ههو‬ !‫كهذلك‬ ‫ا‬‫ه‬‫جاف‬ ‫ات‬‫ه‬‫مكتب‬ ‫واسهتخدام‬ ‫بيثهون‬ ‫بيثهون‬Jython‫كنهت‬ ‫إذا‬ .‫وناضهجة‬ ‫مسهتقرة‬ ‫برمجيهة‬ ‫تجرب‬ ‫بأن‬ ‫بشدة‬ ‫فأنصحك‬ ،‫جافا‬ ‫مبرمج‬Jython. IronPython/ ‫نهت‬ ‫منصهة‬ ‫علهى‬ ‫يعمهل‬ ‫أن‬ ‫ويمكهن‬ #‫سهي‬ ‫لغهة‬ ‫فهي‬ ‫بيثهون‬ ‫لمفسهر‬ ‫تطهبيق‬ ‫ههو‬ ‫ات‬‫ه‬‫مكتب‬ .‫واسهتخدام‬ ‫بيثهون‬ ‫بلغهة‬ ‫برامهج‬ ‫كتابهة‬ ‫بإمكانهك‬ ‫أن‬ ‫يعنهي‬ ‫ههذا‬ .‫دوتجنهو‬ / ‫مونهو‬NET .‫كذلك‬ ‫الثلث‬ ‫المنصات‬ ‫هذه‬ ‫توفرها‬ ‫التي‬ ‫الخرى‬ ‫والمكتبات‬Iron python‫برمجية‬ ‫تزال‬ ‫ما‬ ‫تب‬‫ك‬ ‫لذي‬‫ا‬ ،‫جونن‬‫هو‬ ‫ِم‬‫ج‬ .‫يا‬‫حال‬ ‫يب‬‫للتجر‬ ‫سوى‬ ‫صلح‬‫ت‬ ‫ول‬ "‫فا‬‫أل‬ ‫بل‬‫"ق‬IronPython‫ضم‬‫ان‬ ‫من‬ ‫كاملة‬ ‫إصدارة‬ ‫على‬ ‫وسيعمل‬ ،‫ميكروسوفت‬ ‫شركة‬ ‫إلى‬IronPython.‫المستقبل‬ ‫في‬ ‫للفهرس‬ ‫عودة‬‫المزيد‬ ‫استكشف‬|132
  • 134.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Lython) ‫المشهتركة‬ ‫ليسهب‬ ‫تشهبه‬ ‫وههي‬ .‫بيثهون‬ ‫للغهة‬ ‫ليسهب‬ ‫واجههة‬ ‫ههو‬Common Lisp( ‫لى‬‫إ‬ ‫شرة‬‫مبا‬ ‫وتترجم‬bytecode‫بيثون‬ ‫كود‬ ‫مع‬ ‫عل‬‫تتفا‬ ‫سوف‬ ‫ها‬‫أن‬ ‫ني‬‫يع‬ ‫لذي‬‫ا‬ ‫لمر‬‫ا‬ ،‫ثون‬‫بي‬ .‫المعتاد‬ ‫منهها‬ ‫المهمهة‬ .‫بيثهون‬ ‫عهن‬ ‫المهوارد‬ ‫مهن‬ ‫والكهثير‬ ‫الكهثير‬ ‫هنهاك‬Daily Python-URL!‫الهذي‬ ،‫الحهداث‬ ‫بهآخر‬ ‫دائم‬ ‫اطلع‬ ‫علهى‬ ‫يجعلهك‬Vaults of Parnassus‫و‬ ،ONLamp. com Python DevCenter‫و‬ ،dirtSimple.org‫و‬ ،Python Notes.‫الكثير‬ ‫وغيرها‬ ‫الخلصــة‬ ‫يقولون‬ ‫كما‬ ،‫ولكن‬ ‫الكتاب‬ ‫هذا‬ ‫نهاية‬ ‫إلى‬ ‫وصلنا‬ ‫لقد‬‫النهاية‬ ‫بداية‬ ‫هذه‬‫مستخدما‬ ‫تعتبر‬ ‫اﻵن‬ ‫أنت‬ . ‫البدء‬ ‫يمكنك‬ .‫بيثون‬ ‫باستخدام‬ ‫المشاكل‬ ‫من‬ ‫العديد‬ ‫لحل‬ ‫مستعد‬ ‫شك‬ ‫بل‬ ‫وأنت‬ ،‫لبيثون‬ ‫نهِما‬ ‫بة‬‫كتا‬ ‫أو‬ ،‫ها‬‫تخيل‬ ‫كن‬‫يم‬ ‫ل‬ ‫مورا‬‫أ‬ ‫ضي‬‫الما‬ ‫في‬ ‫كانت‬ ‫لتي‬‫ا‬ ‫شياء‬‫ال‬ ‫كل‬‫ب‬ ‫يام‬‫للق‬ ‫هازك‬‫ج‬ ‫تة‬‫أتم‬ ‫في‬ .‫ابدأ‬ ‫ولذا‬ .‫الكثير‬ ‫والكثير‬ ‫الخاصة‬ ‫ألعابك‬ ‫للفهرس‬ ‫عودة‬‫الخلصــة‬|133
  • 135.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫م‬‫لحق‬A‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ . ) ‫المصهدر‬ ‫مفتوحهة‬ ‫الحهرة‬ ‫البرمجيهات‬Free/Libré and Open Source Software، FLOSS‫وخاصهة‬ ‫المشهاركة‬ ‫مبهدأ‬ ‫علهى‬ ‫مبنيهة‬ ‫بهدورها‬ ‫وههي‬ ،‫الجماعهة‬ ‫مبهدأ‬ ‫علهى‬ ‫مبنيهة‬ ( .‫والتوزيع‬ ‫والتعديل‬ ،‫الستخدام‬ ‫حرة‬ ‫الحرة‬ ‫البرمجيات‬ .‫المعرفة‬ ‫في‬ ‫المشاركة‬ ‫كنت‬ ‫أنك‬ ‫بما‬ ‫الحرة‬ ‫بالبرمجيات‬ ‫معرفة‬ ‫على‬ ‫فأنت‬ ،‫بالفعل‬ ‫الكتاب‬ ‫هذا‬ ‫قرأت‬ ‫قد‬ ‫كنت‬ ‫إذا‬ ‫تستخدم‬‫بيثون‬.‫الوقت‬ ‫طوال‬ ‫كرت‬‫ذ‬ ‫قد‬‫ل‬ .‫ية‬‫التال‬ ‫مة‬‫القائ‬ ‫شاف‬‫استك‬ ‫نك‬‫فيمك‬ ،‫حرة‬‫ال‬ ‫يات‬‫البرمج‬ ‫عن‬ ‫يد‬‫المز‬ ‫فة‬‫معر‬ ‫أردت‬ ‫إذا‬ ‫و‬ ‫كس‬‫لين‬ ‫لى‬‫ع‬ ‫مل‬‫تع‬ ‫)أي‬ ‫صات‬‫المن‬ ‫عددة‬‫مت‬ ‫حرة‬ ‫يات‬‫برمج‬ ‫مع‬ ‫كبيرة‬‫ال‬ ‫حرة‬‫ال‬ ‫يات‬‫البرمج‬ ‫عض‬‫ب‬ ‫لينكهس‬ ‫إلهى‬ ‫للنتقهال‬ ‫الحاجهة‬ ‫دون‬ ‫البرمجيهات‬ ‫ههذه‬ ‫اسهتخدام‬ ‫تجربهة‬ ‫ليمكنهك‬ ( .‫إلهخ‬ ‫وينهدوز‬ ‫مباشرة‬(-; ‫آجل‬ ‫أم‬ ‫عاجل‬ ‫ستفعل‬ ‫كنت‬ ‫وإن‬ ‫كس‬‫لين‬‫لينوس‬ ‫بدأه‬ ‫قد‬ ‫كان‬ ، ‫ببطء‬ ‫العالم‬ ‫كل‬ ‫يحتضنه‬ ‫المصدر‬ ‫ومفتوح‬ ‫حر‬ ‫تشغيل‬ ‫نظام‬ ‫.هو‬ ‫نواة‬ ‫آخر‬ ‫وتعد‬ .‫ويندوز‬ ‫مايكروسوفت‬ ‫لنظام‬ ‫منافس‬ ‫هو‬ ‫فإنه‬ ، ‫واﻵن‬ .‫كطالب‬ ‫تورفالدز‬2.6 ] .‫للتطوير‬ ‫,قابلة‬ ‫والستقرار‬ ‫بالسرعة‬ ‫تتمتع‬ ‫رئيسية‬ ‫إصدارة‬Linux Kernel[ ‫نوبكس‬‫قرص‬‫ال‬ ‫لى‬‫ع‬ ‫ثبيت‬‫الت‬ ‫لب‬‫تتط‬ ‫ول‬ ‫مج‬‫المد‬ ‫قرص‬‫ال‬ ‫خلل‬ ‫من‬ ‫مل‬‫تع‬ ‫كس‬‫لين‬ ‫عة‬‫توزي‬ ‫هذه‬. ‫باستخدام‬ ‫والبدء‬ ‫المشغل‬ ‫في‬ ‫السطوانة‬ ‫وضع‬ ‫ثم‬ ‫حاسبك‬ ‫تشغيل‬ ‫إعادة‬ ‫فقط‬ ‫يمكنك‬ -- ‫الصلب‬ ‫مع‬ ‫تأتي‬ ‫التي‬ ‫المصدر‬ ‫مفتوحة‬ ‫البرامج‬ ‫جميع‬ ‫استخدام‬ ‫ويمكنك‬ !‫لينكس‬ ‫توزيعة‬ ‫مميزات‬ ‫جميع‬ )‫تصريف‬ ‫وعمل‬ ، ‫بيثون‬ ‫برامج‬ ‫تشغيل‬ ‫مثل‬ ‫القياسية‬ ‫لينكس‬ ‫توزيعة‬compiling‫سي‬ ‫لبرامج‬ ( ‫السطوانة‬ ‫وإخراج‬ ‫حاسبك‬ ‫تشغيل‬ ‫إعادة‬ ‫يمكنك‬ ‫ذلك‬ ‫وبعد‬ ، ‫ذلك‬ ‫وغير‬ ، ‫الفلم‬ ‫ومشاهدة‬ ، ].‫يحدث‬ ‫لم‬ ‫وكأنشيئا‬ ، ‫بك‬ ‫الخاص‬ ‫الحالي‬ ‫التشغيل‬ ‫نظام‬ ‫لستخدام‬ ‫والعودة‬Knoppix[ ‫يدورا‬ ‫ف‬.‫أكهثر‬ ‫مهن‬ ‫وههي‬ ‫ههات‬ ‫رد‬ ‫قبهل‬ ‫مهن‬ ‫ورعايتهها‬ ‫توجيههها‬ ‫يتهم‬ ‫ومجتمهع‬ ‫توزيعهة‬ ‫تلهك‬ ‫وجنوم‬ ، ‫كيدي‬ ‫مكتب‬ ‫،وأسطح‬ ‫لينكس‬ ‫نواة‬ ‫على‬ ‫تحتوي‬ ‫وهي‬ ‫شعبية‬ .‫لينكس‬ ‫توزيعات‬XFCE ‫وسهلة‬ ‫الستعمال‬ ‫سهلة‬ ‫صورة‬ ‫في‬ ‫هذا‬ ‫وكل‬ ‫المتاحة‬ ‫المصدر‬ ‫مفتوحة‬ ‫البرامج‬ ‫من‬ ‫كبير‬ ‫وعدد‬ ‫لينكس‬ ‫استخدام‬ ‫تجرب‬ ‫بأن‬ ‫بشدة‬ ‫أوصيك‬ ‫فإني‬ ‫لينكس‬ ‫استخدام‬ ‫في‬ ‫مبتدئا‬ ‫كنت‬ ‫التركيب.وإذا‬ ‫مانهدريك‬ ‫منهها‬ ‫إصهدارة‬ ‫وأحهدث‬ ‫مانهدريك‬10٫1] ‫رائعهة‬ ‫توزيعهة‬ ‫وههي‬Fedora Linux, Mandrake Linux[ ‫بن‬ ‫أو‬‫يس‬ ‫أوف‬.‫برنامهج‬ ‫علهى‬ ‫ائم‬‫ه‬‫ق‬ ‫از‬‫ه‬‫ممت‬ ‫مكتهبي‬ ‫برنامهج‬ ‫ههذا‬StarOffice‫صهن‬ ‫شهركة‬ ‫مهن‬ ‫ويمكنه‬ . ‫أخرى‬ ‫وأمور‬ ‫والشرائح‬ ‫والجداول‬ ‫والرسم‬ ‫للكتابة‬ ‫برامج‬ ‫على‬ ‫ويحتوي‬ ‫ميكروسيستمز‬ ‫كهل‬ ‫علهى‬ ‫تعمهل‬ ‫وههي‬ ‫بسههولة‬ ‫بهوينت‬ ‫وبهاور‬ ‫وورد‬ ‫ميكروسهوفت‬ ‫ملفهات‬ ‫وتحريهر‬ ‫فتهح‬ ‫أيضها‬ ]‫هة‬‫ه‬‫الجذري‬ ‫هينات‬‫ه‬‫التحس‬ ‫هض‬‫ه‬‫بع‬ ‫هى‬‫ه‬‫عل‬ ‫هوي‬‫ه‬‫يحت‬ ‫هس‬‫ه‬‫أوفي‬ ‫هن‬‫ه‬‫أوب‬ ‫هن‬‫ه‬‫م‬ ‫هادم‬‫ه‬‫الق‬ ‫هدار‬‫ه‬‫والص‬ ‫هات‬‫ه‬‫المنص‬ ‫للفهرس‬ ‫عودة‬‫ملحق‬A.‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ ‫المصدر‬|134
  • 136.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ OpenOffice[ ‫فايرفوكس‬‫موزيل‬.‫إنترنت‬ ‫على‬ ‫تغلبه‬ ‫يتوقع‬ ‫الذي‬ ‫الويب‬ ‫متصفح‬ ‫من‬ ‫القادم‬ ‫الجيل‬ ‫هو‬ ‫هذا‬ ‫السرعة‬ ‫غاية‬ ‫في‬ ‫ومن‬ .‫قليلة‬ ‫سنوات‬ ‫غضون‬ ‫في‬ (-‫؛‬ ‫فقط‬ ‫السوقية‬ ‫الحصة‬ ‫حيث‬ ‫)من‬ ‫اكسبلورر‬ ‫نوع‬ ‫بأي‬ ‫يسمح‬ ‫مفهوم‬ ‫تمديد‬ .‫للعجاب‬ ‫والمثيرة‬ ‫المعتبرة‬ ‫لخصائصه‬ ‫النقاد‬ ‫من‬ ‫الشادة‬ ‫نال‬ ‫وقد‬ ‫اليها‬ ‫تضاف‬ ‫ان‬ ‫يمكن‬ ‫التي‬ ‫الوظائف‬ ‫من‬‫أي‬ ‫بإضافة‬ ‫تسمح‬ ‫الضافات‬ ‫من‬ ‫العديد‬ ‫إليه‬ ‫أضيفت‬ ‫وقد‬ ‫يجعهل‬ ‫ممتهاز‬ ‫إلكهتروني‬ ‫بريهد‬ ‫عميهل‬ (‫)ثنهدربيرد‬ ‫لهه‬ ‫المصهاحب‬ ‫إليهه.والمنتهج‬ ‫الوظهائف‬ ‫مهن‬ ‫نهوع‬ ] . ‫السرعة‬ ‫في‬ ‫غاية‬ ‫أمرا‬ ‫البريد‬ ‫قراءة‬Mozilla Firefox, Mozilla Thunderbird[ ‫نو‬ ‫مو‬.‫إنشاء‬ ‫تتيح‬ ‫وهي‬ . ‫نت‬ .‫مايكروسوفت‬ ‫منصة‬ ‫برامج‬ ‫لتشغيل‬ ‫المصدر‬ ‫مفتوح‬ ‫تطبيق‬ ‫هذا‬ ، ‫وينهدوز‬ ، ‫لينكهس‬ ‫بيئة‬ ‫فهي‬ ‫للعمهل‬ ‫نهت‬ ‫دوت‬ ‫تطبيقهات‬ ‫وتشهغيل‬FreeBSD‫مهاكنتوش‬ ‫و‬ ، ‫معايير‬ ‫لتنفذ‬ .‫ضا‬‫أي‬ ‫الخرى‬ ‫المنصات‬ ‫من‬ ‫وغيرها‬ECMA‫الوامر‬ ‫سطر‬ ‫هة‬‫لواج‬CLI‫ولغة‬ ‫مفتوحة‬ ‫اﻵن‬ ‫وأصبحت‬ ‫موحدة‬ ‫كمعايير‬ ‫بي‬ ‫وإتش‬ ، ‫وإنتل‬ ، ‫مايكروسوفت‬ ‫اعتمدتها‬ ‫التي‬ #‫سي‬ ‫معايير‬ ‫توحيد‬ ‫اتجاه‬ ‫في‬ ‫خطوة‬ ‫وهذه‬ .‫المعايير‬ISO.‫نفسه‬ ‫الوقت‬ ‫في‬ ‫برمجيهات‬ ‫يوجهد‬ ‫وحاليها‬C# mcs‫نفسهها(،ومهزودات‬ #‫سهي‬ ‫بلغهة‬ ‫)كتبهت‬ASP.NET‫و‬ ADO.NET‫تطويرها‬ ‫يتم‬ ‫التي‬ ‫المزايا‬ ‫من‬ ‫والعديد‬ ‫والعديد‬ ‫البيانات‬ ‫لقواعد‬ ،‫الخصائص‬ ‫كاملة‬ ].‫يوم‬ ‫كل‬ ‫وإضافتها‬Mono, ECMA, Microsoft .NET[ ‫شي‬‫أبات‬ ‫لويب‬‫ا‬ ‫خادم‬.‫أشهر‬ ‫هو‬ ‫الواقع‬ ‫وفي‬ ‫شعبية‬ ‫المصدر‬ ‫مفتوحة‬ ‫الويب‬ ‫خوادم‬ ‫أكثر‬ ‫هو‬ ‫من‬ ‫قريب‬ ‫عليه‬ ‫يعمل‬ ‫إنه‬ ‫حيث‬ !‫العالم‬ ‫في‬ ‫ويب‬ ‫خادم‬60‫هذه‬ ‫نعم‬ . ‫اللكترونية‬ ‫المواقع‬ ‫من‬ % ‫ادم‬‫ه‬‫خ‬ ‫فيههم‬ ‫ا‬‫ه‬‫بم‬ ‫المنافسهين‬ ‫مهن‬ ‫بكهثير‬ ‫أكهثر‬ ‫إلكترونيهة‬ ‫مواقهع‬ ‫مهع‬ ‫أباتشهي‬ ‫يتعامهل‬ ‫حيهث‬ ‫حقيقهة‬ ] .‫ميكروسوفت‬Apache[ MySQL.‫في‬ ‫غاية‬ ‫وهو‬ ، ‫المصدر‬ ‫مفتوح‬ ‫البيانات‬ ‫قواعد‬ ‫خوادم‬ ‫أشهر‬ ‫من‬ ‫واحد‬ ‫هو‬ ] .‫إصداراته‬ ‫أحدث‬ ‫إلى‬ ‫المزايا‬ ‫من‬ ‫العديد‬ ‫إضافة‬ ‫تم‬ ‫السرعةوقد‬MySQL[ ‫بلير‬ ‫إم‬‫ب‬ ‫بدءا‬ ‫شيء‬ ‫أي‬ ‫تشغيل‬ ‫يمكنه‬ ‫فيديو‬ ‫مشغل‬ ‫هو‬DivX‫و‬MP3‫و‬Ogg‫و‬VCD ‫وحتى‬DVDs] (‫الفكاهة؟‬ ‫بروح‬ ‫تتمتع‬ ‫ل‬ ‫المفتوحة‬ ‫المصادر‬ ‫إن‬ ‫يقول‬ ‫ذا‬ ‫)من‬MPlayer[ Movix‫المدمهج‬ ‫القهرص‬ ‫خلل‬ ‫مهن‬ ‫وتعمهل‬ ‫كنهوبكس‬ ‫توزيعهة‬ ‫علهى‬ ‫تقهوم‬ ‫لينكهس‬ ‫توزيعهة‬ ‫ههي‬ . ،‫موفيكس‬ ‫إسطوانات‬ ‫عمل‬ ‫ويمكنك‬ . ‫القلع‬ ‫ذاتية‬ ‫الفلم‬ ‫إسطوانات‬ ‫لتشغيل‬ ‫تصميمها‬ ‫تم‬ ‫ولكن‬ ‫القهرص‬ ‫وتضهع‬ ‫الحاسهب‬ ‫تشهغيل‬ ‫بإعهادة‬ ‫تقهوم‬ ‫فعنهدما‬ ‫التشهغيل‬ ‫ذاتيهة‬ ‫أفلم‬ ‫إسهطوانات‬ ‫إل‬ ‫ههي‬ ‫ا‬‫ه‬‫وم‬ ‫صلب‬ ‫قرص‬‫ل‬ ‫حتى‬ ‫تاج‬‫تح‬ ‫ل‬ ‫نت‬‫وأ‬ ،‫يا‬‫ذات‬ ‫لم‬‫الفي‬ ‫شغل‬‫ت‬ ‫بدأ‬‫ي‬ ‫عدها‬‫وب‬ ‫لقراص‬‫ا‬ ‫شغل‬‫م‬ ‫في‬ ‫مج‬‫المد‬ ] .‫موفيكس‬ ‫باستخدام‬ ‫الفيلم‬ ‫لمشاهدة‬Movix[ ‫المفتوحهة‬ ‫البرمهج‬ ‫مهن‬ ‫العديهد‬ ‫وهنهاك‬ ،‫مهوجزة‬ ‫فكهرة‬ ‫إعطهائك‬ ‫إلهى‬ ‫فقهط‬ ‫تههدف‬ ‫القائمهة‬ ‫ههذه‬ ‫للمواقع‬ ‫المحتوي‬ ‫إدارة‬ ‫نظام‬ ‫و‬ ،‫بي‬ ‫إتش‬ ‫بي‬ ‫ولغة‬ ،‫بيرل‬ ‫لغة‬ ‫مثل‬ ،‫ذلك‬ ‫غير‬ ‫الممتازة‬ ‫المصدر‬ ‫للفهرس‬ ‫عودة‬‫ملحق‬A.‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ ‫المصدر‬|135
  • 137.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ Drupal‫هات‬‫ه‬‫بيان‬ ‫هد‬‫ه‬‫قواع‬ ‫هادم‬‫ه‬‫وخ‬ ،PostgreSQL‫هيارات‬‫ه‬‫الس‬ ‫هباق‬‫ه‬‫س‬ ‫هة‬‫ه‬‫،ولعب‬TORCS‫وبيئة‬ ، ‫المتكاملة‬ ‫التطوير‬Kdevelop‫،و‬Anjuta‫الفلم‬ ‫ومشغل‬ ،Xine‫النصوص‬ ‫ومحرر‬ ،VIM‫و‬ Quanta‫الصوتيات‬ ‫ومشغل‬ ،+XMMS‫قدما‬ ‫المضي‬ ‫ويمكننا‬ ،‫جيمب‬ ‫الصور‬ ‫تحرير‬ ‫وبرنامج‬ ، ‫نهاية‬ ‫ل‬ ‫ما‬ ‫إلى‬ :‫الحرة‬ ‫البرمجيات‬ ‫عن‬ ‫المعلومات‬ ‫من‬ ‫لمزيد‬ ‫المواقع‬ ‫هذه‬ ‫زر‬ ‫فورج‬ ‫سورس‬ FreshMeat ‫كدي‬ ‫جنوم‬ :‫المواقع‬ ‫هذه‬ ‫طالع‬ ،‫الحرة‬ ‫البرمجيات‬ ‫عالم‬ ‫أخبار‬ ‫آخر‬ ‫لتعرف‬ OSNews LinuxToday NewsForge .‫ه‬ .‫س‬ ‫سوارو‬ ‫مدونة‬‫پ‬ .‫المصدر‬ ‫مفتوحة‬ ‫الحرة‬ ‫للبرمجيات‬ ‫الواسع‬ ‫العالم‬ ‫واستكشف‬ ‫اذهب‬ ،‫واﻵن‬ ‫للفهرس‬ ‫عودة‬‫ملحق‬A.‫مفتوحة‬ ‫الحرة‬ ‫البرمجيات‬ ‫المصدر‬|136
  • 138.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫ملحق‬B.ْ‫عن‬ ‫المحتويات‬ ‫قائمة‬ ‫الطبع‬ ‫بيانات‬ ‫المؤلف‬ ‫عن‬ ‫الطبع‬ ‫بيانات‬ ‫المصدر‬ ‫ومفتوحة‬ ‫حرة‬ ‫الكتاب‬ ‫هذا‬ ‫لبناء‬ ‫استخدمتها‬ ‫التي‬ ‫البرمجيات‬ ‫كل‬ ‫تقريبا‬.‫مسودة‬ ‫أول‬ ‫في‬ ‫لينكس‬ ‫ردهات‬ ‫استخدمت‬ ‫الكتاب‬ ‫من‬9.0‫السادسة‬ ‫المسودة‬ ‫هذه‬ ‫في‬ ‫واﻵن‬ ،‫العمل‬ ‫لبيئة‬ ‫كقاعدة‬ ‫كور‬ ‫فيدورا‬ ‫لينكس‬ ‫أستخدم‬3‫كأساس‬. ‫استخدم‬ ‫البداية‬ ‫في‬KWord‫الكتاب‬ ‫لكتابة‬)‫في‬ ‫وضحت‬ ‫كما‬‫التاريخ‬ ‫درس‬‫التمهيد‬ ‫في‬.(‫لحقا‬ ‫إلى‬ ‫تحولت‬DocBook XML‫مستخدما‬Kate‫إلى‬ ‫انتقلت‬ ‫لذا‬ ،‫كبيرة‬ ‫مشقة‬ ‫وجدتها‬ ‫لكن‬ ‫ملفات‬ ‫وتوليد‬ ‫للتنسيق‬ ‫يوفره‬ ‫الذي‬ ‫التحكم‬ ‫مستوى‬ ‫بفضل‬ ‫رائعا‬ ‫كان‬ ‫والذي‬ ‫أوفيس‬ ‫أوبن‬PDF، ‫أنتج‬ ‫لكنه‬HTML‫المستند‬ ‫من‬ ‫جدا‬ ‫سيء‬.‫اكتشفت‬ ‫النهاية‬ ‫في‬XEmacs‫كتابة‬ ‫وأعدت‬ ‫مستخدما‬ ‫الصفر‬ ‫من‬ ‫الكتاب‬DocBook XML)‫الثانية‬ ‫للمرة‬(‫التنسيق‬ ‫هذا‬ ‫أن‬ ‫قررت‬ ‫أن‬ ‫بعد‬ ‫المدى‬ ‫بعيد‬ ‫حل‬ ‫هو‬.‫استخدام‬ ‫قررت‬ ‫الجديدة‬ ‫السادسة‬ ‫المسودة‬ ‫هذه‬ ‫في‬Quanta+‫بكل‬ ‫للقيام‬ ‫التحرير‬. ‫كور‬ ‫فيدورا‬ ‫مع‬ ‫تأتي‬ ‫التي‬ ‫القياسية‬ ‫الطرز‬ ‫صفحات‬ ‫تستخدم‬3.‫الخطوط‬ ‫تستخدم‬ ‫كما‬ ‫أيضا‬ ‫القياسية‬.‫مستند‬ ‫كتبت‬ ‫فقد‬ ،‫هذا‬ ‫مع‬CSS‫صفحات‬ ‫وتنسيق‬ ‫لتلوين‬HTML.‫كما‬ ‫بدائي‬ ‫نحوي‬ ‫محلل‬ ‫كتبت‬-‫طبعا‬ ‫بيثون‬ ‫بلغة‬-‫البرامج‬ ‫نماذج‬ ‫كل‬ ‫في‬ ‫آليا‬ ‫التراكيب‬ ‫لبراز‬. ‫المؤلف‬ ‫عن‬ ‫اهتماماته‬ .‫الهند‬ ‫في‬ ‫بنجالور‬ ‫بمكتب‬ !‫ياهو‬ ‫في‬ ‫برمجيات‬ ‫كمطور‬ ‫عمله‬ .‫ه‬ .‫س‬ ‫سوارو‬ ‫يحب‬‫پ‬ ‫و‬ ‫دوتجنو‬ ،‫لينكس‬ ‫مثل‬ ‫الحرة‬ ‫البرمجيات‬ ‫تشمل‬ ‫التقني‬ ‫المجال‬ ‫في‬Qt‫و‬MySQL‫واللغات‬ ، ‫في‬ ‫إنشائها‬ ‫يستطيع‬ ‫برمجية‬ ‫وأي‬ ‫الكتاب‬ ‫هذا‬ ‫مثل‬ ‫أشياء‬ ‫وكتابة‬ ،#‫سي‬ ‫و‬ ‫بيثون‬ ‫مثل‬ ‫الرائعة‬ ،‫لودلم‬ ‫روبرت‬ ‫روايات‬ ‫وقرائة‬ ،‫القهوة‬ ‫تشمل‬ ‫الخرى‬ ‫اهتماماه‬ .‫مدونته‬ ‫في‬ ‫والكتابة‬ ،‫فراغه‬ ‫وقت‬ .‫والسياسة‬ ‫والرحلت‬ ‫مدونته‬ ‫في‬ ‫فانظر‬ ،‫الرجل‬ ‫هذا‬ ‫عن‬ ‫المزيد‬ ‫بمعرفة‬ ‫تهتم‬ ‫كنت‬ ‫إذا‬www.swaroopch.info. ‫للفهرس‬ ‫عودة‬‫المؤلف‬ ‫عن‬|137
  • 139.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ ‫ملحق‬C.‫المراجعة‬ ‫تأريخ‬ ‫المحتويات‬ ‫قائمة‬ ‫الزمني‬ ‫الختم‬ ‫الزمني‬ ‫الختم‬ ‫في‬ ‫المستند‬ ‫هذا‬ ‫وُلِّد‬13‫يناير‬2005‫الساعة‬04:43 ‫المراجعة‬ ‫تاريخ‬ ‫مراجعة‬1.2013/01/2005 ‫باستخدام‬ ‫شاملة‬ ‫كتابة‬ ‫إعادة‬Quanta‫فيدورا‬ ‫على‬ +3‫التصحيحات‬ ‫من‬ ‫الكثير‬ ‫إلى‬ ‫بالضافة‬ ‫بيئة‬ ‫كتابة‬ ‫إعادة‬ .‫الجديدة‬ ‫المثلة‬ ‫من‬ ‫الكثير‬ .‫والتحديثات‬DocBook.‫البداية‬ ‫من‬ ‫الخاصة‬ ‫مراجعة‬1.1528/03/2004 ‫طفيفة‬ ‫مراجعات‬ ‫مراجعة‬1.1216/03/2004 ‫وتصحيحات‬ ‫إضافات‬ ‫مراجعة‬1.1009/03/2004 .‫والمخلصين‬ ‫المتحمسين‬ ‫القراء‬ ‫من‬ ‫الكثير‬ ‫بفضل‬ ،‫الملئية‬ ‫الخطاء‬ ‫تصحيح‬ ‫من‬ ‫المزيد‬ ‫مراجعة‬1.0008/03/2004 ‫تصحيح‬ ‫مع‬ ‫المحتوى‬ ‫على‬ ‫كبيرة‬ ‫بمراجعات‬ ‫قمت‬ ،‫القراء‬ ‫من‬ ‫الكثيرة‬ ‫والقتراحات‬ ‫للمردود‬ ‫كنتيجة‬ .‫الملئية‬ ‫للخطاء‬ ‫مراجعة‬0.9922/02/2004 .‫للدوال‬ ‫المتغير‬ ‫المعاملت‬ ‫عدد‬ ‫عن‬ ‫تفاصيل‬ ‫إضافة‬ .‫الوحدات‬ ‫عن‬ ‫جديد‬ ‫فصل‬ ‫إضافة‬ ‫مراجعة‬0.9816/02/2004 ‫طرز‬ ‫صفحات‬ ‫و‬ ‫بيثون‬ ‫مخطوط‬ ‫كتبت‬CSS‫ناتج‬ ‫لتحسين‬XHTML‫بدائي‬ ‫نحوي‬ ‫محلل‬ ‫شامل‬ ، ‫طريقة‬ ‫على‬ ‫البرامج‬ ‫نماذج‬ ‫في‬ ‫للتراكيب‬ ‫بإبراز‬ ‫للقيام‬ -‫يعمل‬ ‫-لكن‬VIM. ‫مراجعة‬0.9713/02/2004 ‫بتنسيق‬ ،‫بالكامل‬ ‫كتابتها‬ ‫معاد‬ ‫جديدة‬ ‫مسودة‬DocBook XML‫أصبح‬ ،‫كثيرا‬ ‫الكتاب‬ ‫تحسن‬ .(‫)ثانيا‬ .‫ومقروئية‬ ‫تناسقا‬ ‫أكثر‬ ‫مراجعة‬0.9325/01/2004 ‫عن‬ ‫الحديث‬ ‫إضافة‬IDLE‫بويندوز‬ ‫الخاصة‬ ‫المسائل‬ ‫من‬ ‫المزيد‬ ‫مع‬ ‫مراجعة‬0.9205/01/2004 ‫للفهرس‬ ‫عودة‬‫ملحق‬C.‫المراجعة‬ ‫تأريخ‬|138
  • 140.
    ‫بيثون‬ ‫طريق‬ ‫على‬‫خطوة‬ .‫المثلة‬ ‫بعض‬ ‫على‬ ‫تعديلت‬ ‫مراجعة‬0.9130/12/2003 .‫مرتجلة‬ ‫عديدة‬ ‫مواضيع‬ .‫الملئية‬ ‫الخطاء‬ ‫بعض‬ ‫تصحيح‬ ‫مراجعة‬0.9018/12/2003 .‫مراجعات‬ ‫مع‬ ‫أوفيس‬ ‫أوبن‬ ‫تنسيق‬ .‫جديدين‬ ‫فصلين‬ ‫إضافة‬ ‫مراجعة‬0.6021/11/2003 .‫توسع‬ ‫مع‬ ‫بالكامل‬ ‫كتابة‬ ‫إعادة‬ ‫مراجعة‬0.2020/11/2003 .‫الملئية‬ ‫الخطاء‬ ‫بعض‬ ‫تصحيح‬ ‫مراجعة‬0.1520/11/2003 ‫إلى‬ ‫التحويل‬DocBook XML. ‫مراجعة‬0.1014/11/2003 ‫باستخدام‬ ‫الولى‬ ‫المسودة‬KWord. ‫الصالحات‬ ‫تتم‬ ‫بنعمته‬ ‫الذي‬ ‫ل‬ ‫الحمد‬ ‫الحد‬ ‫يوم‬ ‫ضحى‬ ‫في‬ ‫الكتاب‬ ‫هذا‬ ‫مراجعة‬ ‫من‬ ‫النتهاء‬ ‫تم‬21‫الخرة‬ ‫جمادى‬ ‫من‬ 1430‫الموافق‬ ‫ه‬14‫يونيو‬ ‫من‬2009‫م‬ ‫خلف‬ ‫علي‬ ‫أشرف‬ : ‫ترجمه‬ ‫مصر‬ – ‫السكندرية‬ ashrafkhalaf@gmail.com sharaf969@yahoo.com ‫للفهرس‬ ‫عودة‬‫ملحق‬C.‫المراجعة‬ ‫تأريخ‬|139