‫ﻣﻮﻗﻊ‬ ‫ﻣﻦ‬ ‫اﻟﻤﻠﻒ‬ ‫ﺗﺤﻤﻴﻞ‬ ‫ﺗﻢ‬
‫اﻟﺘﻘﻨﻴﺔ‬ ‫اﻟﺒﻮﺻﻠﺔ‬
www.boosla.com
‫سهولة‬ ‫بكل‬ ‫بايثون‬ ‫تعلم‬
:‫بقلم‬
‫السعيدي‬ ‫عامر‬ ‫بن‬ ‫فهد‬
OMLX
2005
1
‫مقدمة‬
‫التركيب‬ ‫حيث‬ ‫ومن‬ ‫القراءة‬ ‫و‬ ‫الكتابة‬ ‫حيث‬ ‫من‬ ‫بالسهولة‬ ‫تتميز‬ ‫بايثون‬ ‫لغة‬
‫فهي‬ ،‫اﻵن‬ ‫المعروفة‬ ‫المنصات‬ ‫كل‬ ‫في‬ ‫بها‬ ‫تبرمج‬ ‫أن‬ ‫تستطيع‬ ‫و‬ ،‫لها‬ ‫النحوي‬
‫لغة‬ ‫تضارع‬
Java
.‫تقريبا‬ ‫اﻷغراض‬ ‫لكل‬ ‫تصلح‬ ‫و‬ ،‫العريقة‬
‫علي‬ ‫يممن‬ ‫أن‬ ‫ال‬ ‫أسمأل‬ ‫التمي‬ ،‫القليلة‬ ‫الورقات‬ ‫هذه‬ ‫كتابمة‬ ‫على‬ ‫شجعنمي‬ ‫ولقمد‬
‫اللغمة‬ ‫هذه‬ ‫وكأن‬ ،‫اللغمة‬ ‫هذه‬ ‫عمن‬ ‫تتكلم‬ ‫التمي‬ ‫العربيمة‬ ‫المصمادر‬ ‫قلة‬ ‫بإتمامهما‬
.‫الورقات‬ ‫هذه‬ ‫كتابة‬ ‫عناء‬ ‫فتجشمت‬ ،‫التقنية‬ ‫عالم‬ ‫في‬ ‫موجودة‬ ‫ليست‬
:‫الكتاب‬ ‫حول‬ ‫ملحظات‬
‫لرخصة‬ ‫خاضع‬ )‫(حر‬ ‫مفتوح‬ ‫الكتاب‬ ‫هذا‬
GNU FDL
‫(أي‬
GNU Free
Documentation License
ً‫مخالفا‬ ‫يعد‬ ‫ل‬ ‫الكتاب‬ ‫هذا‬ ‫من‬ ‫القتباس‬ ‫أو‬ ‫تصوير‬ ‫أو‬ ‫نسخ‬ )
‫فإنه‬ )... ‫الشبكة‬ ‫من‬ ‫تنزيل‬ ‫أو‬ ‫استعارة‬ ‫أو‬ ‫هدية‬ ‫أو‬ ‫(شراء‬ ‫طريقه‬ ‫بأي‬ ‫عليه‬ ‫حصلت‬ ‫إذا‬ ‫للقانون‬
‫مشتق‬ ‫منتج‬ ‫عمل‬ ‫في‬ ‫استخدمته‬ ‫إذا‬ ‫ولكن‬ .ً‫مجانا‬ ‫تنزيله‬ ‫ويمكنك‬ ، ‫فيه‬ ‫والتعديل‬ ‫نسخه‬ ‫لك‬ ‫يحق‬
‫لرخصة‬ ً‫خاضعا‬ ‫يصبح‬ ‫فإنه‬
FDL
‫وعليك‬ ‫العمل‬ ‫بهذا‬ ‫قام‬ ‫من‬ ‫بأنك‬ ‫الدعاء‬ ‫يمكنك‬ ‫ل‬ ‫كما‬
‫لسنا‬ ‫لمحتوياته‬ ‫ضمان‬ ‫أو‬ ‫كفالة‬ ‫أي‬ ‫دون‬ ‫من‬ ‫هو‬ ‫كما‬ ‫الكتاب‬ ‫هذا‬ ‫يقدم‬ ‫الصلي‬ ‫لمؤلفه‬ ‫الشارة‬
‫على‬ ‫أو‬ ‫جهازك‬ ‫على‬ ‫و‬ ‫عليك‬ ‫يقع‬ )‫ضمني‬ ‫ول‬ ‫مباشر‬ ‫بشكل‬ ‫(ل‬ ‫سلبي‬ ‫أثر‬ ‫أي‬ ‫عن‬ ‫مسؤولين‬
.‫قطتك‬
‫أرابيان‬ ‫منصة‬ ‫على‬ ‫الكتاب‬ ‫هذا‬ ‫كتب‬
0.6
‫برنامج‬ ‫باستخدام‬
OpenOffice.org 2.0
‫لذا‬
‫المنصة‬ ‫في‬ ‫عليه‬ ‫تعدل‬ ‫أن‬ ‫فحاول‬ ،‫التنسيق‬ ‫يذهب‬ ‫فلربما‬ ‫الويندوز‬ ‫منصة‬ ‫على‬ ‫فتحه‬ ‫حاولت‬ ‫إذا‬
.‫جديد‬ ‫من‬ ‫الجهد‬ ‫إعادة‬ ‫لتجنب‬ ‫فيها‬ ‫إنشأ‬ ‫التي‬
‫العمل‬ ‫يتم‬ ‫حتى‬ ،‫لكماله‬ ‫الحماس‬ ‫عندهم‬ ‫أناس‬ ‫يجد‬ ‫أن‬ ‫المؤلف‬ ‫ويسعد‬ ،‫ناقص‬ ‫الكتاب‬ ‫هذا‬
،‫جيدة‬ ‫بصورة‬
‫الكتاب‬ ‫عن‬ ‫معلومات‬
:
‫السعيدي‬ ‫عامر‬ ‫بن‬ ‫فهد‬ :‫تأليف‬
‫الكتروني‬ ‫بريد‬
fahad.alsaidi@gmail.com
‫ب‬.‫ص‬
370
‫عمان‬ ‫سلطنة‬ -‫الخابورة‬
‫البريدي‬ ‫الرمز‬
326
‫رخصة‬ ‫وفق‬ ‫محفوظة‬ ‫الطبع‬ ‫حقوق‬
FDL
Copyright (c) 2005 under terms of FDL license
2
‫اﻷولى‬ ‫الوحدة‬
:
‫أساسيات‬
Python
‫اﻷول‬ ‫الفصل‬
:
‫البداية‬
‫الثاني‬ ‫الفصل‬
:
‫العمليات‬ ‫و‬ ‫اﻷنواع‬
‫الثالث‬ ‫الفصل‬
:
‫اﻷساسية‬ ‫التعابير‬
‫الثالث‬ ‫الفصل‬
:
‫الوظائف‬
‫الرابع‬ ‫الفصل‬
:
‫الوحدات‬
‫الخامس‬ ‫الفصل‬
:
‫الصفوف‬
‫السادس‬ ‫الفصل‬
:
‫الستثناءات‬
3
‫اﻷول‬ ‫الفصل‬
:
‫البداية‬
:‫المهمة‬ ‫النقاط‬
‫لغة‬ ‫لماذا‬
Python
‫؟‬
‫برنامج‬ ‫تشغل‬ ‫كيف‬
‫بلغة‬ ‫مكتوب‬
Python
‫؟‬
‫بـ‬ ‫الخاصة‬ ‫التطوير‬ ‫بيئات‬ ‫معرفة‬
Python
‫نتعلم‬ ‫لماذا‬ ‫و‬ ‫بايثون؟‬ ‫لغة‬ ‫نشأة‬ ‫كيف‬ ‫لنعرف‬ ،‫بايثون‬ ‫لغة‬ ‫رحاب‬ ‫في‬ ‫سويا‬ ‫سنمضي‬ ‫الفصل‬ ‫هذا‬ ‫في‬
‫في‬ ‫يبدأ‬ ‫أن‬ ‫يريد‬ ‫لمن‬ ‫ضرورية‬ ‫اﻷسئلة‬ ‫هذه‬ ‫كل‬ ‫بايثون؟‬ ‫لغة‬ ‫لها‬ ‫تصلح‬ ‫التي‬ ‫مجالت‬ ‫ما‬ ‫و‬ ‫بايثون؟‬ ‫لغة‬
... ‫سريعا‬ ‫فلننتقل‬ ، ! ‫لغة‬ ‫أي‬ ‫تعلم‬
‫لغة‬ ‫لماذا‬
Python
‫؟‬
‫عام‬ ‫في‬
١٩٩٠
‫قام‬ ‫م‬
Guido van Rossum
‫اللغة‬ ‫هذه‬ ‫استقى‬ ‫وقد‬ ،‫بايثون‬ ‫لغة‬ ‫باختراع‬
:‫أمثال‬ ‫من‬ ‫سابقة‬ ‫لغات‬ ‫عدة‬ ‫من‬
C
++ ‫و‬
C
‫و‬
Modula-3
‫و‬
ABC
‫و‬
Icon
.
‫ممن‬ ‫وهمي‬ ،‫بهما‬ ‫المكتوب‬ ‫البرناممج‬ ‫لتشغيمل‬ ‫بناء‬ ‫إلى‬ ‫تحتاج‬ ‫ل‬ ‫التمي‬ ‫النصمية‬ ‫اللغات‬ ‫ممن‬ ‫بايثون‬ ‫وتعتمبر‬
‫اللغات‬ ‫منف‬‫م‬‫ص‬ ‫مي‬‫م‬‫ف‬ ‫اﻷول‬ ‫الخيار‬ ‫تكون‬ ‫أن‬ ‫ما‬‫م‬‫أهله‬ ‫ما‬‫م‬‫مم‬ ‫مارم‬‫م‬‫ص‬ ‫مل‬‫م‬‫بشك‬ ‫مة‬‫م‬‫المنظم‬ ‫و‬ ‫مهلة‬‫م‬‫الس‬ ‫اللغات‬
‫كمل‬ ‫فائدة‬ ‫نمبين‬ ‫و‬ ‫جدول‬ ‫فمي‬ ‫بايثون‬ ‫لغمة‬ ‫مميزات‬ ‫وسمنلخص‬ ،‫الجامعات‬ ‫فمي‬ ‫تعتممد‬ ‫التمي‬ ‫اﻷكاديميمة‬
.. ‫مميزة‬
‫المميزات‬
‫الفوائد‬
‫السي‬ ‫لغة‬ ‫مثل‬ ‫ربط‬ ‫أو‬ ‫بناء‬ ‫إلى‬ ‫تحتاج‬ ‫ل‬
‫ملحوظ‬ ‫بشكل‬ ‫فيها‬ ‫التطوير‬ ‫دورة‬ ‫تسريع‬
‫المتغيرات‬ ‫أنواع‬ ‫على‬ ‫تحتوي‬ ‫ل‬
‫مرونة‬ ‫أكثر‬ ‫و‬ ‫أبسط‬ ‫و‬ ‫أسهل‬ ‫تصبح‬ ‫البرامج‬
‫للذاكرة‬ ‫آلية‬ ‫إدارة‬
‫الكود‬ ‫تنقيح‬ ‫في‬ ‫الجهد‬ ‫يجنبك‬ ‫النفايات‬ ‫مجمع‬
‫التوجه‬ ‫غرضية‬ ‫برمجة‬
++ ‫مع‬ ‫التكامل‬ ‫يمنحك‬
C
‫و‬
Java
‫و‬
COM
‫السي‬ ‫لغة‬ ‫مع‬ ‫التمدد‬ ‫و‬ ‫التضمين‬ ‫إمكانية‬
‫النظام‬ ‫مع‬ ‫التحاور‬ ‫إمكانية‬ ‫و‬ ‫اﻷداء‬ ‫تحسين‬
‫التصميم‬ ‫و‬ ‫الكتابة‬ ‫قواعد‬ ‫في‬ ‫الوضوح‬ ‫و‬ ‫البساطة‬
‫و‬ ‫الصيانة‬ ‫إمكانية‬ ‫و‬ ‫المقروئية‬ ‫من‬ ‫عالية‬ ‫درجة‬
‫التعليم‬ ‫سهولة‬
‫عالية‬ ‫محمولية‬
‫و‬ ‫اللينكس‬ ‫و‬ ‫الويندوز‬ :‫منصات‬ ‫عدة‬ ‫على‬ ‫تعمل‬
‫الكود‬ ‫تغيير‬ ‫بدون‬ ‫اليونكس‬ ‫و‬ ‫الماكنتوش‬
‫المصدر‬ ‫مفتوحة‬
‫ضامن‬ ‫و‬ ‫فيها‬ ‫التعديل‬ ‫و‬ ‫توزيعها‬ ‫في‬ ‫الحرية‬ ‫تعطيك‬
‫لبقائها‬
4
‫المميزات‬
‫الفوائد‬
‫المستوى‬ ‫عالية‬ ‫العمليات‬ ‫و‬ ‫البيانات‬ ‫أنواع‬ ‫دعم‬
‫المدمجة‬ ‫الكائنات‬ ‫أنواع‬ ‫باستخدام‬ ‫سريع‬ ‫تطوير‬
‫السي‬ ‫لوحدات‬ ‫ألي‬ ‫تحميل‬
‫التنفيذية‬ ‫الملفات‬ ‫تصغير‬ ‫و‬ ‫مبسطة‬ ‫امتدادات‬
‫القياسية‬ ‫اﻹنترنت‬ ‫بروتوكولت‬ ‫دعم‬
‫و‬ ‫اللكتروني‬ ‫البريد‬ ‫إلى‬ ‫الوصول‬ ‫تسهيل‬
HTTP
..
‫ثالثة‬ ‫أطراف‬ ‫من‬ ‫و‬ ‫المضمنة‬ ‫المكتبات‬ ‫كثرة‬
‫البرامج‬ ‫تطوير‬ ‫تسهيل‬ ‫و‬ ‫تسريع‬
‫مما‬ ‫واحد‬ ‫آن‬ ‫في‬ ‫قوتها‬ ‫مع‬ ‫لها‬ ‫تعلمك‬ ‫أثناء‬ ‫ستلحظه‬ ‫ما‬ ‫وهذا‬ ، ‫التعلم‬ ‫سهلة‬ ‫أنها‬ ‫مميزاتها‬ ‫أهم‬ ‫و‬
:‫منها‬ ‫مجموعة‬ ‫وسنذكر‬ ،‫الشركات‬ ‫من‬ ‫لكثير‬ ‫اﻷمثل‬ ‫الخيار‬ ‫جعلها‬
–
Yahoo Maps
–
Yahoo Groups
–
Google
–
Ultraseek
–
Jasc Software, Paint Shop Pro
–
National Weather Service
–
NASA
–
Red Hat
–
SGI, Inc
–
IBM
–
Real Networks
‫؟‬ ‫بايثون‬ ‫لغة‬ ‫مجالت‬ ‫ما‬
‫في‬ ‫السهولة‬ ‫و‬ ‫التطوير‬ ‫سرعة‬ ‫تتطلب‬ ‫التي‬ ‫المجالت‬ ‫جميع‬ ‫خاضت‬ ‫بايثون‬ ،‫شديد‬ ‫باختصار‬
‫المجالت‬ ‫فمن‬ ،‫التطبيق‬ ‫سرعة‬ ‫إلى‬ ‫تحتاج‬ ‫التي‬ ‫المجالت‬ ‫في‬ ‫قليل‬ ‫تأخرت‬ ‫و‬ ،‫اﻷول‬ ‫المجال‬
:‫بايثون‬ ‫لغة‬ ‫فيها‬ ‫تتميز‬ ‫التي‬
–
‫مباشرة‬ ‫النظام‬ ‫مع‬ ‫تتعامل‬ ‫التي‬ ‫اﻷدوات‬ ‫مجال‬
–
‫اﻹنترنت‬ ‫برمجة‬ ‫مجال‬
–
‫الرسومية‬ ‫المستخدم‬ ‫واجهات‬ ‫برمجة‬ ‫مجال‬
–
‫البيانات‬ ‫قواعد‬ ‫برمجة‬ ‫مجال‬
–
‫الموزعة‬ ‫البرمجة‬ ‫مجال‬
5
‫بشكل‬ ‫المبرمج‬ ‫عمل‬ ‫تسهل‬ ‫كثيرة‬ ‫أدوات‬ ‫وجود‬ ‫لها‬ ‫سهّل‬ ‫مما‬ ،‫المجالت‬ ‫من‬ ‫الكثير‬ ‫وغيرها‬
:‫اﻷدوات‬ ‫هذه‬ ‫أشهر‬ ‫فمن‬ ،‫ملحظ‬
‫المجال‬
‫اﻷدوات‬
‫النظام‬ ‫برمجة‬
Sockets
‫و‬
threads
‫و‬
signals
‫و‬
pipes
‫و‬
RPC
calls
‫و‬
POSIX bindings
‫الرسومية‬ ‫المستخدم‬ ‫واجهات‬
Tk
‫و‬
PMW
‫و‬
MFC
‫و‬
X11
‫و‬
wxPython
‫و‬
KDE
‫و‬
Gnome
‫البيانات‬ ‫قواعد‬ ‫واجهات‬
Oracle
‫و‬
sybase
‫و‬
PostGres
‫و‬
mSQL
‫و‬
persistence
‫و‬
dbm
‫أدوات‬
Microsoft Windows
MFC
‫و‬
COM
‫و‬
ActiveX
‫و‬
ASP
‫و‬
ODBC
. ‫و‬
NET
‫النترنت‬ ‫أدوات‬
Jpython
‫و‬
CGI tools
‫و‬
HTML/XML parsers
‫و‬
email tools
‫و‬
Zope
‫الموزعة‬ ‫الكائنات‬
DCOM
‫و‬
CORBA
‫و‬
ILU
‫و‬
Fnorb
‫مشهورة‬ ‫أخرى‬ ‫أدوات‬
SWIG
‫و‬
PIL
‫و‬
regular expressions
‫و‬
numPy
‫و‬
cryptography
‫بلغة‬ ‫مكتوب‬ ‫برنامج‬ ‫تشغل‬ ‫كيف‬
Python
‫؟‬
‫و‬ ،‫البرنامج‬ ‫لتشغيل‬ ‫فقط‬ ‫اللغة‬ ‫مفسر‬ ‫لديك‬ ‫يكون‬ ‫أن‬ ‫عليك‬ ‫يتوجب‬ ‫فإنه‬ ، ‫نصية‬ ‫بايثون‬ ‫لغة‬ ‫أن‬ ‫بما‬
‫تعمل‬ ‫الذي‬ ‫النظام‬ ‫حسب‬ ‫المفسر‬ ‫نزل‬ ‫و‬ ، ‫بايثون‬ ‫لغة‬ ‫موقع‬ ‫إلى‬ ‫اذهب‬ ‫المفسر‬ ‫على‬ ‫للحصول‬
: ‫عليه‬
http://www.python.org
‫بلحقة‬ ‫الملف‬ ‫حفظ‬ ‫ثم‬ ‫نصوص‬ ‫محرر‬ ‫إلى‬ ‫ستحتاج‬ ‫بايثون‬ ‫برنامج‬ ‫لكتابة‬ ‫الحال‬ ‫بطبيعة‬
py
.
:‫اكتب‬ ‫و‬ ‫اﻷوامر‬ ‫سطر‬ ‫على‬ ‫ادخل‬ ‫ذلك‬ ‫بعد‬
6
‫النظام‬ ‫على‬ ‫مثبة‬ ‫افتراضيا‬ ‫فهي‬ ،‫اﻷساسية‬ ‫للغات‬ ‫من‬ ‫اللينكس‬ ‫نظام‬ ‫في‬ ‫بايثون‬ ‫لغة‬
‫أرابيان‬ ‫توزيعة‬ ‫على‬ ‫مبنية‬ ‫ستكون‬ ‫الدروس‬ ‫هذه‬ ‫أن‬ ‫وخاصة‬ ، ‫النظام‬ ‫هذا‬ ‫استخدام‬ ‫يفضل‬ ‫لذلك‬
‫الويندوز‬ ‫منصة‬ ‫على‬ ‫العمل‬ ‫من‬ ‫هذا‬ ‫يمنع‬ ‫ل‬ ‫لكن‬ ‫و‬
>> python program.py
‫بحيث‬
program
‫سطر‬ ‫في‬ ‫اكتب‬ ، ‫بايثون‬ ‫لغة‬ ‫محث‬ ‫مع‬ ‫مباشرة‬ ‫للتعامل‬ ‫و‬ ،‫الملف‬ ‫اسم‬
: ‫اﻷوامر‬
>> python
: ‫اكتب‬ ، ‫لك‬ ‫برنامج‬ ‫أول‬ ‫لكتابة‬ ‫و‬
>>> print ' My name is Fahad Al- Saidi'
.‫قوتها‬ ‫و‬ ‫بايثون‬ ‫سهولة‬ ‫مدى‬ ‫بنفسك‬ ‫ستعرف‬ ،‫بايثون‬ ‫بواسطة‬ ‫لك‬ ‫برنامج‬ ‫ﻷول‬ ‫كتابتك‬ ‫بعد‬
‫بـ‬ ‫الخاصة‬ ‫التطوير‬ ‫بيئات‬
Python
‫وهناك‬ ،‫الروتنية‬ ‫العمليات‬ ‫من‬ ‫الكثير‬ ‫أداء‬ ‫عليك‬ ‫تسهل‬ ‫تطوير‬ ‫بيئة‬ ‫امتلك‬ ‫في‬ ‫الوقت‬ ‫مع‬ ‫سترغب‬
‫تابع‬ ‫فقط‬ ، ‫رغباتك‬ ‫حسب‬ ‫تختار‬ ‫أن‬ ‫إل‬ ‫عليك‬ ‫ما‬ ، ‫بايثون‬ ‫بلغة‬ ‫الخاصة‬ ‫التطوير‬ ‫بيئات‬ ‫من‬ ‫الكثير‬
: ‫الرابطين‬ ‫هذين‬
http://wiki.python.org/moin/PythonEditors
http://wiki.python.org/moin/IntegratedDevelopmentEnvironments
‫تعلم‬ ‫في‬ ‫معنا‬ ‫مشوارك‬ ‫لتكمل‬ ‫عادي‬ ‫نصوص‬ ‫محرر‬ ‫مع‬ ‫بايثون‬ ‫لغة‬ ‫مفسر‬ ‫تملك‬ ‫أن‬ ‫يكفيك‬ ‫لكن‬ ‫و‬
‫بايثون‬ ‫لغة‬
7
‫الثاني‬ ‫الفصل‬
:
‫العمليات‬ ‫و‬ ‫اﻷنواع‬
:‫المهمة‬ ‫النقاط‬
‫بايثون‬ ‫برنامج‬ ‫بنية‬
‫المدمجة؟‬ ‫النواع‬ ‫نستخدم‬ ‫لماذا‬
‫العداد‬
‫النصية‬ ‫السلسل‬
‫القوائم‬
‫القواميس‬
‫المجموعات‬
‫الملفات‬
‫للكائنات‬ ‫العامة‬ ‫الخصائص‬
‫مهمة‬ ‫تلميحات‬
‫الملخص‬
‫بايثون‬ ‫برنامج‬ ‫بنية‬
‫المكتوب‬ ‫البرنامج‬ ‫بنية‬ ‫على‬ ‫نعرج‬ ‫أن‬ ‫المهم‬ ‫من‬ ،‫بايثون‬ ‫لغة‬ ‫تفاصيل‬ ‫غمار‬ ‫خوض‬ ‫في‬ ‫البدء‬ ‫قبل‬
:‫نقول‬ ‫وباختصار‬ ،‫بايثون‬ ‫بلغة‬ ‫البرمجة‬ ‫حول‬ ‫عام‬ ‫بشكل‬ ‫واضح‬ ‫تصور‬ ‫لديك‬ ‫ليتكون‬ ،‫بايثون‬ ‫بلغة‬
:‫التالي‬ ‫نحو‬ ‫على‬ ،‫وكائنات‬ ،‫عبارات‬ ‫و‬ ،‫وحدات‬ :‫أجزاء‬ ‫ثلثة‬ ‫إلى‬ ‫يحلل‬ ‫أن‬ ‫يمكن‬ ‫بايثون‬ ‫برنامج‬
١
‫وحدات‬ ‫من‬ ‫يتكون‬ ‫البرنامج‬ -
٢
‫عبارات‬ ‫على‬ ‫تحتوي‬ ‫الوحدات‬ ‫و‬ -
٣
.‫تعالجها‬ ‫و‬ ‫الكائنات‬ ‫تنشأ‬ ‫العبارات‬ ‫و‬ -
‫المدمجة؟‬ ‫النواع‬ ‫نستخدم‬ ‫لماذا‬
‫الوقت‬ ‫من‬ ‫كم‬ ‫ستدرك‬ ‫الجافا‬ ‫أو‬ ‫بلس‬ ‫بلس‬ ‫السي‬ ‫أو‬ ‫السي‬ ‫باستخدام‬ ‫سابقا‬ ‫برمجت‬ ‫قد‬ ‫كنت‬ ‫إذا‬
8
‫للعصاب‬ ‫مرهق‬ ‫هو‬ ‫وكم‬،‫المعطيات‬ ‫بنى‬ ‫يسمى‬ ‫بما‬ ‫الذاكرة‬ ‫في‬ ‫تنسيقها‬ ‫و‬ ‫الكائنات‬ ‫ترتيب‬ ‫يستغرق‬
‫البحث‬ ‫و‬ ‫ترتيبها‬ ‫و‬ ‫إليها‬ ‫الوصول‬ ‫كيفية‬ ‫و‬ ‫الذاكرة‬ ‫مع‬ ‫التعامل‬ ‫و‬ ‫الذاكرة‬ ‫في‬ ‫الكائنات‬ ‫تلك‬ ‫ترتيب‬
..‫خللها‬ ‫من‬
‫ممن‬ ‫بكائنات‬ ‫تزودك‬ ‫بايثون‬ ‫ﻷن‬ ، ‫بعيدا‬ ‫عنمك‬ ‫يذهمب‬ ‫الجهمد‬ ‫ذلك‬ ‫معظمم‬، ‫المثاليمة‬ ‫بايثون‬ ‫براممج‬ ‫فمي‬
‫اكتمب‬ ‫ثمم‬ ‫المشكلة‬ ‫حمل‬ ‫فمي‬ ‫فكمر‬ ‫فقمط‬ ،‫السمهولة‬ ‫بمنتهمى‬ ‫اﻷشياء‬ ‫تلك‬ ‫برمجمة‬ ‫تجعمل‬ ‫اللغمة‬ ‫صملب‬
‫تريده‬ ‫ما‬ ‫كل‬ ،‫الحقيقة‬ ‫في‬ .‫الكائنات‬ ‫ترتيب‬ ‫في‬ ‫نفسك‬ ‫ترهق‬ ‫أن‬ ‫فصاعدا‬ ‫اﻵن‬ ‫من‬ ‫داعي‬ ‫ل‬ ،‫الحل‬
.‫خاصة‬ ‫أنواع‬ ‫إلى‬ ‫بحاجة‬ ‫تكن‬ ‫لم‬ ‫ما‬ ‫به‬ ‫تزودك‬ ‫اﻷنواع‬ ‫تلك‬ ‫ستجد‬
:‫منها‬ ‫أسباب‬ ‫لعدة‬، ‫الكائنات‬ ‫تلك‬ ‫تفضل‬ ‫أنك‬ ‫اﻷحيان‬ ‫غالب‬ ‫في‬ ‫ستجد‬
‫الكتابة‬ ‫سهلة‬ ‫البسيطة‬ ‫البرامج‬ ‫تجعل‬ ‫المدمجة‬ ‫كائنات‬
‫مشاكمل‬ ‫عمن‬ ‫بعيدا‬ ‫احتياجاتمك‬ ‫جميمع‬ ‫تلبمي‬ ‫المضمنمة‬ ‫الكائنات‬ ‫أنواع‬ ‫أن‬ ‫سمتجد‬ ‫البسميطة‬ ‫للمهمات‬
‫ممي‬‫م‬‫ف‬ )‫ممس‬‫م‬‫(القوامي‬ ‫الجداول‬ ‫و‬ )‫القوائم‬ ( ‫المجموعات‬ ‫ممل‬‫م‬‫مث‬ ‫اﻷشياء‬ ‫ممتجد‬‫م‬‫س‬ ‫ﻷن‬.‫المعطيات‬ ‫ممى‬‫م‬‫بن‬
.‫المدمجة‬ ‫بايثون‬ ‫كائنات‬ ‫باستخدام‬ ‫فقط‬ ‫أنجز‬ ‫العمل‬ ‫من‬ ‫كثيرا‬ ‫أن‬ ‫وستجد‬ ،‫يدك‬ ‫متناول‬
‫التوسعات‬ ‫تدعم‬ ‫و‬ ‫بالكائنات‬ ‫تزودك‬ ‫بايثون‬
‫مثمل‬ ‫المضمنمة‬ ‫اﻷدوات‬ ‫تدعمم‬ ‫التمي‬ ‫اللغات‬ ‫ممن‬ ‫الطرق‬ ‫بعمض‬ ‫فمي‬ ‫تسمتعير‬ ‫بايثون‬
Lisp
‫اللغات‬ ‫و‬
++ ‫مثل‬ ‫يحتاجه‬ ‫الذي‬ ‫العمل‬ ‫إطار‬ ‫أو‬ ‫المطلوبة‬ ‫باﻷدوات‬ ‫تزويدها‬ ‫في‬ ‫المبرمج‬ ‫على‬ ‫تعتمد‬ ‫التي‬
C
‫تحتاج‬ ‫ل‬ ‫الغالب‬ ‫فمي‬ ‫أنمك‬ ‫إل‬ ‫بايثون‬ ‫فمي‬ ‫فريدة‬ ‫كائنات‬ ‫أنواع‬ ‫تنشيمء‬ ‫أن‬ ‫سمتطيع‬ ‫أنمك‬ ‫ممن‬ ‫بالرغمم‬ ‫و‬
.‫ذلك‬ ‫إلى‬
‫المخصصة‬ ‫المعطيات‬ ‫بنى‬ ‫من‬ ‫كفاءة‬ ‫أكثر‬ ‫المدمجة‬ ‫الكائنات‬
‫لزيادة‬ ‫مي‬‫م‬‫بالس‬ ‫معمولة‬ ‫و‬ ‫محسممنة‬ ‫معطيات‬ ‫بنممى‬ ‫خوارزميات‬ ‫تسممتخدم‬ ‫بايثون‬ ‫فممي‬ ‫المدمجممة‬ ‫اﻷنواع‬
‫ما‬‫م‬‫مضاعف‬ ‫جهدا‬ ‫متبذل‬‫م‬‫س‬ ‫مك‬‫م‬‫أن‬ ‫إل‬ ‫مة‬‫م‬‫مشابه‬ ‫كائنات‬ ‫أنواع‬ ‫مب‬‫م‬‫تكت‬ ‫أن‬ ‫متطيع‬‫م‬‫تس‬ ‫مك‬‫م‬‫أن‬ ‫مم‬‫م‬‫وبالرغ‬ ،‫مرعة‬‫م‬‫الس‬
.‫بايثون‬ ‫في‬ ‫الكائنات‬ ‫أنواع‬ ‫أداء‬ ‫على‬ ‫للحصول‬
‫مد‬‫م‬‫ق‬ ‫مت‬‫م‬‫كن‬ ‫إذا‬ ،‫مل‬‫م‬‫الفص‬ ‫هذا‬ ‫مي‬‫م‬‫ف‬ ‫منأخذها‬‫م‬‫س‬ ‫مي‬‫م‬‫الت‬ ‫مة‬‫م‬‫المدمج‬ ‫الكائنات‬ ‫أنواع‬ ‫مبين‬‫م‬‫ي‬ ‫التالي‬ ‫الجدول‬
‫ملسل‬‫م‬‫الس‬ ‫و‬ ‫اﻷعداد‬ ( ‫مل‬‫م‬‫مث‬ ‫مة‬‫م‬‫متشابه‬ ‫الكائنات‬ ‫هذه‬ ‫مض‬‫م‬‫بع‬ ‫أن‬ ‫متجد‬‫م‬‫س‬ ‫ذلك‬ ‫مل‬‫م‬‫قب‬ ‫مة‬‫م‬‫لغ‬ ‫متعملت‬‫م‬‫اس‬
9
‫بايثون‬ ‫بهما‬ ‫تزودك‬ )‫القواميمس‬ ‫و‬ ‫(القوائم‬ ‫مثمل‬ ‫وعاممة‬ ‫قويمة‬ ‫أنواع‬ ‫أيضما‬ ‫وسمتجد‬ )‫الملفات‬ ‫و‬ ‫النصمية‬
‫مثل‬ ‫اللغات‬ ‫من‬ ‫لكثير‬ ‫خلفا‬ ‫تعب‬ ‫بدون‬
C
++ ‫و‬
C
‫و‬
Java
‫واحدا‬ ‫واحدا‬ ‫بشرحها‬ ‫وسنقوم‬.
‫الكائن‬ ‫نوع‬
‫عليه‬ ‫مثال‬
‫اﻷعداد‬
Numbers
3.1415
,
1234
,
999L, 3+4j
‫نصية‬ ‫سلسل‬
Strings
'
spam', "guido's
"
‫قوائم‬
Lists
[
1
[ ,
2
' ,
three'], 4
]
‫قواميس‬
Dictionaries
'{
food':'spam', 'taste':'yum
}'
‫المجموعات‬
Tuples
(
1
',
spam', 4, 'U
)'
‫الملفات‬
Files
text = open('eggs', 'r').read()
‫العداد‬
‫النقطة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ‫الصحيحة‬ ‫اﻷعداد‬ : ‫اﻷعداد‬ ‫أنواع‬ ‫من‬ ‫واسعة‬ ‫تشكيلة‬ ‫بايثون‬ ‫لغة‬ ‫تدعم‬
‫مثل‬ ‫اﻷعداد‬ ‫من‬ ‫مركبة‬ ‫أنواع‬ ‫تدعم‬ ‫أيضا‬ ‫و‬ ،‫سابقة‬ ‫لغات‬ ‫مع‬ ‫تعامل‬ ‫لمن‬ ‫مألوف‬ ‫هذا‬ ‫و‬ ،‫العائمة‬
‫اﻷدوات‬ ‫من‬ ‫واسعة‬ ‫تشكلية‬ ‫و‬ ‫محدود‬ ‫غير‬ ‫العائمة‬ ‫الفاصلة‬ ‫دقة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ‫المركبة‬ ‫اﻷعداد‬
:‫النوعين‬ ‫سنشرح‬ ‫يلي‬ ‫فيما‬ ‫و‬
:‫القياسية‬ ‫العداد‬ ‫أنواع‬
‫تلك‬ ‫يبين‬ ‫جدول‬ ‫يلي‬ ‫ما‬ ‫في‬ ‫و‬ ‫جديدة‬ ‫بأنواع‬ ‫أتت‬ ‫و‬ ‫اللغات‬ ‫بقية‬ ‫في‬ ‫القياسية‬ ‫اﻷنواع‬ ‫تدعم‬ ‫بايثون‬
:‫نوع‬ ‫لكل‬ ‫أمثلة‬ ‫مع‬ ‫اﻷنواع‬
‫النوع‬
‫تفسيره‬
1234, - 24, 0
Normal integers (C longs)
999999999999L
Long integers (unlimited size)
1.23, 3.14e- 10, 4E210, 4.0e+210
Floating- point (C doubles)
0177, 0x9ff
Octal and hex constants
3+4j, 3.0+4.0j, 3J
Complex number constants
–
‫العائمة‬ ‫الفاصلة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ‫الصحيحة‬ ‫اﻷعداد‬
10
( ‫مثمل‬ ‫العشريمة‬ ‫اﻷعداد‬ ‫ممن‬ ‫مجموعمة‬ ‫همي‬ ‫الصمحيحة‬ ‫اﻷعداد‬
10
‫الفاصملة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ، )
( ‫مثل‬ ‫فاصلة‬ ‫على‬ ‫تحتوي‬ ‫التي‬ ‫هي‬ ‫العائمة‬
10 ٫10
.)
–
‫الرقمية‬ ‫الدقة‬
‫معاملة‬ ‫تعامل‬ ‫الصحيحة‬ ‫اﻷعداد‬
longs
،‫رقمية‬ ‫بدقة‬ ‫محدود‬ ‫غير‬ ‫أنها‬ ‫يعني‬ ‫مما‬ ‫السي‬ ‫لغة‬ ‫في‬
‫معاملة‬ ‫تعامل‬ ‫العائمة‬ ‫الفاصلة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬
doubles
‫يمكنك‬ ‫أنك‬ ‫يعني‬ ‫مما‬ ‫السي‬ ‫لغة‬ ‫في‬
‫حرف‬ ‫ألحقت‬ ‫إذا‬ ‫أنك‬ ‫ملحظة‬ ‫مع‬ ،‫بالك‬ ‫على‬ ‫يخطر‬ ‫رقم‬ ‫أي‬ ‫تكتب‬ ‫أن‬
L
‫أو‬
l
‫مفسر‬ ‫تخبر‬ ‫فإنك‬
.‫باثيون‬ ‫لغة‬ ‫مقايس‬ ‫على‬ ‫طويل‬ ‫صحيح‬ ‫عدد‬ ‫العدد‬ ‫هذا‬ ‫أن‬ ‫بايثون‬ ‫لغة‬
–
‫الستعشرية‬ ‫و‬ ‫الثمانية‬ ‫اﻷعداد‬
‫بالصفر‬ ‫تبدأ‬ ‫التي‬ ‫هي‬ ‫الثمانية‬ ‫اﻷعداد‬
0
‫بم‬ ‫تبدأ‬ ‫التي‬ ‫هي‬ ‫الستعشرية‬ ‫اﻷعداد‬ ‫و‬
0x
‫أو‬
0X
.
‫المركبة‬ ‫اﻷعداد‬-
( )‫التخيلي‬ ‫الجزء‬ + ‫الحقيقي‬ ‫(الجزء‬ ‫كالتالي‬ ‫يكتب‬ ‫هو‬ ‫و‬ ‫النوع‬ ‫بهذا‬ ‫تزودك‬ ‫بايثون‬ ‫لغة‬
real-
part + imaginary- part
‫باللحقة‬ ‫ينتهي‬ ‫و‬ )
j
‫أو‬
J
.
:‫بايثون‬ ‫في‬ ‫المعاملت‬ ‫تعابير‬
‫أو‬ ( ‫اﻷعداد‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫وهي‬ ‫التعابير‬ ‫هي‬ ‫اﻷعداد‬ ‫معالجة‬ ‫في‬ ‫اﻷساسية‬ ‫اﻷداءة‬ ‫ربما‬
‫أن‬ ‫تريمد‬ ‫عندمما‬ ‫ذلك‬ ‫على‬ ‫المثال‬ ‫و‬ ،‫بايثون‬ ‫فمي‬ ‫تنفيذهما‬ ‫عنمد‬ ‫قيممة‬ ‫تنتنمج‬ ‫معاملت‬ ‫و‬ )‫أخرى‬ ‫كائنات‬
‫مثل‬ ‫عددين‬ ‫تجمع‬
x
‫و‬
y
‫تقول‬ ‫فإنك‬
x + y
. + ‫هنا‬ ‫فالمعامل‬
‫أسمبقيتها‬ ‫يمبين‬ ‫و‬ ‫يشرحهما‬ ‫و‬ ‫يبينهما‬ ‫التالي‬ ‫الجدول‬ ‫و‬ ‫المعاملت‬ ‫هذه‬ ‫ممن‬ ‫طويلة‬ ‫بقائممة‬ ‫بايثون‬ ‫تزودنما‬
:‫تنازليا‬ ‫التنفيذ‬ ‫عند‬
‫المعامل‬
‫الوصف‬
x or y
"‫"أو‬ ‫المنطقي‬ ‫معامل‬
x and y
"‫"و‬ ‫المنطقي‬ ‫معامل‬
11
‫المعامل‬
‫الوصف‬
not x
"‫"عكس‬ ‫المنطقي‬ ‫معامل‬
in, not in
‫الكائن‬ ‫العضوية‬ ‫اختبار‬
is, is not
‫الكائن‬ ‫هوية‬ ‫اختبار‬
x | y
‫البت‬ ‫مستوى‬ ‫على‬ "‫"أو‬ ‫معامل‬
x ^ y
‫البت‬ ‫مستوى‬ ‫على‬ "‫"عكس‬ ‫معامل‬
x & y
‫البت‬ ‫مستوى‬ ‫على‬ "‫"و‬ ‫معامل‬
x << y, x >> y
‫إزاحة‬
x
‫بمقدار‬ ‫شمال‬ ‫أو‬ ‫يمينا‬
y
‫البتات‬ ‫من‬
x + y, x – y
‫الجمع‬ ‫و‬ ‫الطرح‬ ‫معامل‬
x * y, x / y, x % y
‫القسمة‬ ‫باقي‬ ‫و‬ ‫القسمة‬ ‫و‬ ‫الضرب‬ ‫معامل‬
‫العداد‬ ‫على‬ ‫العمل‬
‫لنطبع‬ ‫اﻷوامر‬ ‫سطر‬ ‫نشغل‬ ‫فدعنا‬ ،‫واقعيا‬ ‫و‬ ‫عمليا‬ ‫تجربتها‬ ‫هي‬ ‫النظرية‬ ‫اﻷشياء‬ ‫لفهم‬ ‫طريقة‬ ‫أحسن‬
.‫عمليا‬ ‫سابقا‬ ‫قلناه‬ ‫ما‬ ‫ستشرح‬ ‫التي‬ ‫اﻷسطر‬ ‫بعض‬ ‫عليه‬
:‫اﻷسياسية‬ ‫العمليات‬
‫مثمل‬ ‫اﻷعداد‬ ‫فئة‬ ‫ممن‬ ‫كائن‬ ‫إنشاء‬ ‫إلى‬ ‫نحتاج‬ ‫شيمء‬ ‫كمل‬ ‫قبمل‬
x
‫و‬
b
، ‫معاملت‬ ‫عليمه‬ ‫نطبق‬ ‫لكمي‬ ،
،‫معه‬ ‫نتعامل‬ ‫لكي‬ ‫إليه‬ ‫قيمة‬ ‫إسناد‬ ‫ثم‬ ‫تسميته‬ ‫ثم‬ ‫الكائن‬ ‫نوع‬ ‫ذكر‬ ‫إلى‬ ‫ستحتاج‬ ‫اﻷخرى‬ ‫اللغات‬ ‫في‬
، ‫نوعمه‬ ‫على‬ ‫للتعرف‬ ‫بايثون‬ ‫الباقمي‬ ‫تتولى‬ ‫و‬ ‫قيممه‬ ‫إليمه‬ ‫أسمند‬ ‫ثمم‬ ‫الكائن‬ ‫سمم‬ ‫فقمط‬ ‫بايثون‬ ‫فمي‬ ‫ولكمن‬
.‫بنوعه‬ ‫لتعريف‬ ‫الكائن‬ ‫إلى‬ ‫القيمة‬ ‫اسناد‬ ‫فقط‬ ‫يكفي‬ ‫بايثون‬ ‫كائنات‬ ‫في‬ ‫عام‬ ‫بشكل‬ ‫وهذا‬
: ‫اﻷوامر‬ ‫سطر‬ ‫في‬ ‫التالي‬ ‫اكتب‬، ‫عمليا‬ ‫ذلك‬ ‫لتطبيق‬
%python
>>> a = 3 # name created
>>> b = 4
‫إضافة‬ ‫كيفية‬ ‫لحظت‬ ‫ولعلك‬ ، ‫قيمتين‬ ‫إليهما‬ ‫وأسندنا‬ ‫اﻷعداد‬ ‫فئة‬ ‫من‬ ‫كائنين‬ ‫أنشأنا‬ ‫قد‬ ‫نكون‬ ‫وبهذا‬
‫وسهولة‬ ‫الكود‬ ‫توضيح‬ ‫في‬ ‫كبرى‬ ‫أهمية‬ ‫وللتعليق‬ ، ‫تعليق‬ ‫فهو‬ # ‫بعد‬ ‫ما‬ ‫فكل‬ ‫بايثون‬ ‫في‬ ‫التعليقات‬
.‫آخرين‬ ‫مطورين‬ ‫قبل‬ ‫من‬ ‫تطويره‬ ‫وسهولة‬ ‫قراءته‬
12
‫اﻷقواس‬ ‫بين‬ ‫المعاملت‬ ‫كانت‬ ‫وكلما‬ ، ‫المعاملت‬ ‫بعض‬ ‫تطبيق‬ ‫إلى‬ ‫ستحتاج‬ ‫الكائنات‬ ‫إنشاء‬ ‫بعد‬
‫انتبه‬ ‫ولكن‬ ،‫اﻷقواس‬ ‫بدون‬ ‫تعمل‬ ‫ل‬ ‫المعاملت‬ ‫أن‬ ‫يعني‬ ‫ل‬ ‫هذا‬ ‫ولكن‬ ، ‫أوضح‬ ‫اﻷمور‬ ‫كانت‬ ‫كلما‬
: ‫اﻷمثلة‬ ‫بعض‬ ‫إليك‬ ‫و‬ ، ‫سابقا‬ ‫ذكر‬ ‫ما‬ ‫حسب‬ ‫على‬ ‫المعاملت‬ ‫أسبقية‬ ‫إلى‬
>>> b / 2 + a # same as ((4 / 2) + 3)
5
>>> b / (2.0 + a) # same as (4 / (2.0 + 3))
0.8
‫المعامل‬ ‫أن‬ ‫وبما‬ ،‫اﻷقواس‬ ‫في‬ ‫المعاملت‬ ‫ترتيب‬ ‫تولت‬ ‫بايثون‬ ‫أن‬ ‫اﻷول‬ ‫المثال‬ ‫في‬ ‫واضح‬ ‫هو‬ ‫فكما‬
‫فأجبرنما‬ ‫قوسمين‬ ‫التعمبير‬ ‫إلى‬ ‫أضفنما‬ ‫المثال‬ ‫فمي‬ ‫ولكمن‬ ، ‫مقدم‬ ‫فهمو‬ ‫الجممع‬ ‫معاممل‬ ‫ممن‬ ‫أسمفل‬ ‫القسممة‬
‫عند‬ ‫اﻷمور‬ ‫هذه‬ ‫مثل‬ ‫مراعاة‬ ‫يجب‬ ‫النهاية‬ ‫وفي‬ ، ‫أول‬ ‫تقديمها‬ ‫نريد‬ ‫التي‬ ‫المعاملت‬ ‫تنفيذ‬ ‫على‬ ‫بايثون‬
.‫بايثون‬ ‫لغة‬ ‫في‬ ‫برامجك‬ ‫كتابة‬
‫المثال‬ ‫تنفيمذ‬ ‫جرب‬ ‫لك‬ ‫سمأقول‬ ، ‫الثانمي‬ ‫المثال‬ ‫فمي‬ ‫العائممة‬ ‫النقطمة‬ ‫إضافمة‬ ‫فائدة‬ ‫مما‬ ‫تسمأل‬ ‫ولعلك‬
‫هي‬ ‫النتيجة‬ ‫أن‬ ‫وستجد‬ ‫العائمة‬ ‫النقطة‬ ‫إضافة‬ ‫بدون‬
0
‫أنه‬ ‫على‬ ‫بايثون‬ ‫تعاملت‬ ‫لقد‬ ‫حصل؟‬ ‫ماذا‬ ،
‫بدون‬ ‫هي‬ ‫كما‬ ‫النتيجة‬ ‫أريد‬ ‫أني‬ ‫بايثون‬ ‫تخبر‬ ‫فإنك‬ ‫العائمة‬ ‫النقطة‬ ‫تكتب‬ ‫عندما‬ ‫ولكن‬ ،‫صحيح‬ ‫عدد‬
.‫بنفسك‬ ‫النتيجة‬ ‫ستلحظ‬ ‫صفرين‬ ‫أضفت‬ ‫إذا‬ ‫وكذلك‬ ‫تقريب‬
:‫البت‬ ‫مستوى‬ ‫على‬ ‫معاملت‬
‫الثنائي‬ ‫العمد‬ ‫تعرف‬ ‫أن‬ ‫عليمك‬ ‫فيجمب‬ ‫اﻷحيان‬ ‫بعمض‬ ‫فمي‬ ‫البمت‬ ‫المسمتوى‬ ‫على‬ ‫التعاممل‬ ‫إلى‬ ‫سمتحتاج‬
: ‫التالية‬ ‫اﻷمثلة‬ ‫لك‬ ‫وستتضح‬ ‫أول‬
>>> x = 1 # 0001
>>> x << 2 # shift left 2 bits: 0100
4
>>> x | 2 # bitwise OR: 0011
3
>>> x & 1 # bitwise AND: 0001
1
‫ل‬ ‫الجزئية‬ ‫هذه‬ ‫أنه‬ ‫وستجد‬ ، ‫استمر‬ ، ‫عليك‬ ‫فل‬ ، ‫الثنائية‬ ‫اﻷعداد‬ ‫تدرس‬ ‫ولم‬ ‫تفهم‬ ‫لم‬ ‫إذا‬
13
!! ‫يطلبها‬ ‫من‬ ‫إل‬ ‫يحتاجها‬
: ‫المركبة‬ ‫اﻷعداد‬
‫هذه‬ ‫مثمل‬ ‫فمي‬ ‫عندك‬ ‫تخصمص‬ ‫ل‬ ‫كشخمص‬ ، ‫الكهرباء‬ ‫و‬ ‫الهندسمة‬ ‫تخصمصات‬ ‫ممن‬ ‫المركبمة‬ ‫اﻷعداد‬
‫مل‬‫م‬‫فص‬ ‫من‬‫م‬‫م‬ ‫مر‬‫م‬‫أكث‬ ‫إلى‬ ‫متحتاج‬‫م‬‫س‬ ‫ما‬‫م‬‫تفهمه‬ ‫مي‬‫م‬‫لك‬ ‫مك‬‫م‬‫ﻷن‬ ، ‫الكرام‬ ‫مرور‬ ‫مة‬‫م‬‫الجزئي‬ ‫هذه‬ ‫على‬ ‫مر‬‫م‬‫م‬، ‫اﻷمور‬
‫إذا‬ ‫أما‬ ، ‫قياسي‬ ‫وقت‬ ‫في‬ ‫الباثون‬ ‫باستخدام‬ ‫البرمجة‬ ‫فهم‬ ‫إلى‬ ‫نوصلك‬ ‫أن‬ ‫نريد‬ ‫ونحن‬ ، ‫دراسي‬
:‫اﻷمثلة‬ ‫هذه‬ ‫إلى‬ ‫فانظر‬ ، ‫الكثير‬ ‫لك‬ ‫توفر‬ ‫بايثون‬ ‫ستجد‬ ‫فإنك‬ ‫تخصصه‬ ‫لب‬ ‫من‬ ‫اﻷعداد‬ ‫هذه‬ ‫كان‬
>>> 1j * 1J
(- 1+0j)
>>> 2 + 1j * 3
(2+3j)
>>> (2+1j)*3
(6+3j)
.‫التفصيل‬ ‫من‬ ‫للمزيد‬ ‫بايثون‬ ‫وثائق‬ ‫راجع‬ ‫المجال‬ ‫هذا‬ ‫في‬ ‫للستزاده‬
: ‫اﻷدوات‬ ‫من‬ ‫المزيد‬
‫وحدة‬ ‫وتقدم‬ ، ‫الرياضيات‬ ‫مع‬ ‫تتعامل‬ ‫أدوات‬ ‫عدة‬ ‫بايثون‬ ‫لك‬ ‫توفر‬
math
‫جميع‬ ‫مع‬ ‫تتعامل‬ ‫التي‬
:‫المثال‬ ‫إليك‬ ‫و‬ ، ‫الوحدة‬ ‫هذه‬ ‫تستورد‬ ‫أن‬ ‫عليك‬ ‫يجب‬ ‫ولكن‬ ، ‫الرياضيات‬ ‫قوانين‬
>>> import math
>>> math.pi
3.14159265359
>>>
>>> abs(- 42), 2**4, pow(2, 4)
(42, 16, 16)
. ‫تعالى‬ ‫ال‬ ‫بإذن‬ ‫القادمة‬ ‫الفصول‬ ‫في‬ ‫التفصيل‬ ‫من‬ ‫بشيء‬ ‫وحدات‬ ‫عن‬ ‫سنتكلم‬ ‫و‬
14
‫النصية‬ ‫السلسل‬
‫النصمية‬ ‫والسملسل‬،‫النصمية‬ ‫السملسل‬ ‫همو‬ ‫بايثون‬ ‫فمي‬ ‫الرئيسمية‬ ‫المدمجمة‬ ‫الكائنات‬ ‫ممن‬ ‫الثانمي‬ ‫النوع‬
‫استخدام‬ ‫يمكنك‬ ‫آخر‬ ‫وبمعنى‬، ‫واحدة‬ ‫وحدة‬ ‫في‬ ‫بيانات‬ ‫أو‬ ‫اسم‬ ‫لتخزين‬ ‫حروف‬ ‫تجمع‬ ‫عن‬ ‫عبارة‬
‫شابمه‬ ‫ومما‬ ‫الكلمات‬ ‫و‬ ‫اﻷسمماء‬ ‫و‬ ‫الروابمط‬ ‫مثمل‬ ‫كنمص‬ ‫تمثيله‬ ‫يقبمل‬ ‫شيمء‬ ‫كمل‬ ‫فمي‬ ‫النصمية‬ ‫السملسل‬
.‫ذلك‬
‫و‬ ‫النصمية‬ ‫سملسل‬ ‫الكائن‬ ‫على‬ ‫تحتوي‬ ‫أنهما‬ ‫سمتجد‬ ‫بايثون‬ ‫قبمل‬ ‫أخرى‬ ‫لغات‬ ‫اسمتخدمت‬ ‫كنمت‬ ‫إذا‬
‫حرف‬ ‫كائن‬ ‫أيضا‬
char
‫وتسريعا‬ ‫للتعلم‬ ‫تسهيل‬ ‫وذلك‬ ‫نصية‬ ‫كسلسل‬ ‫تعامل‬ ‫الحروف‬ ‫بايثون‬ ‫في‬
.‫للبرمجة‬
‫معرفة‬ ‫و‬ ‫التقطيع‬ ‫و‬ ‫الفهرسة‬ ‫مثل‬ ‫النصية‬ ‫السلسل‬ ‫مع‬ ‫تتعامل‬ ‫التي‬ ‫الدوال‬ ‫من‬ ‫بالكثير‬ ‫تزودنا‬ ‫بايثون‬
‫بايثون‬ ‫في‬ ‫النصية‬ ‫السلسل‬ ‫لمعالجة‬ ‫مستقلة‬ ‫وحدات‬ ‫وهناك‬، ‫السلسل‬ ‫تجميع‬ ‫و‬ ‫السلسلة‬ ‫طول‬
‫مثل‬
string
‫و‬
regex
‫و‬
re
.
: ‫دوالها‬ ‫وبعض‬ ‫النصية‬ ‫السلسل‬ ‫إنشاء‬ ‫كيفية‬ ‫سريع‬ ‫بشكل‬ ‫يعرض‬ ‫التالي‬ ‫الجدول‬ ‫و‬
‫العملية‬
‫شرحها‬
S1 = ' '
‫فارغة‬ ‫سلسلة‬
s2 = "spam's"
‫مزدوجة‬ ‫اقتباس‬ ‫علمات‬
block = """..."""
‫تنصيص‬ ‫علمات‬ ‫ثلث‬
s1 + s2,
s2 * 3
‫الجمع‬
‫التكرار‬
s2[i],
s2[i:j],
len(s2)
‫الفهرسة‬
‫التقطيع‬
‫الطول‬ ‫معرفة‬
"a %s parrot" %'dead'
‫النصية‬ ‫السلسل‬ ‫تهيئة‬
for x in s2,
'm' in s2
‫تكرارية‬ ‫الحلقة‬
‫العضوية‬
‫ولك‬ ،‫نفسه‬ ‫العمل‬ ‫يؤدين‬ ‫فكلهن‬ ، ‫المزدوجة‬ ‫و‬ ‫المفردة‬ ‫القتباس‬ ‫علمة‬ ‫بين‬ ‫فرق‬ ‫ل‬ ‫أنه‬ ‫لحظ‬
.‫اﻷختيار‬ ‫حرية‬
15
‫النصية‬ ‫السلسل‬ ‫على‬ ‫العمل‬
‫نوع‬ ‫من‬ ‫قيمة‬ ‫له‬ ‫وتسند‬ ‫اسمه‬ ‫تذكر‬ ‫أن‬ ‫له‬ ‫يكفي‬ ‫النصية‬ ‫السلسل‬ ‫من‬ ‫كائن‬ ‫إنشاء‬ ‫أن‬ ‫عليك‬ ‫مر‬ ‫كما‬
‫الجوانمب‬ ‫نسمتكشف‬ ‫فدعنما‬ ،‫السمابق‬ ‫الجدول‬ ‫فمي‬ ‫أمثلة‬ ‫ثلثمة‬ ‫عليمك‬ ‫ممر‬ ‫وقمد‬ ، ‫النصمية‬ ‫السملسل‬
..‫اﻷخرى‬
‫الساسية‬ ‫العمليات‬
‫كائنات‬ ‫مي‬‫م‬‫ف‬ ‫ما‬‫م‬‫معه‬ ‫مل‬‫م‬‫التعام‬ ‫مف‬‫م‬‫كي‬ ‫مت‬‫م‬‫وعرف‬ * ‫الضرب‬ ‫مل‬‫م‬‫معام‬ ‫و‬ + ‫مع‬‫م‬‫الجم‬ ‫مل‬‫م‬‫المعام‬ ‫مك‬‫م‬‫علي‬ ‫مر‬‫م‬‫م‬ ‫مد‬‫م‬‫لق‬
، ‫للنمص‬ ‫كتكرار‬ ‫الضرب‬ ‫و‬ ‫كإضافمة‬ ‫الجممع‬ ‫تعاممل‬ ‫فهمي‬ ‫النصمية‬ ‫السملسل‬ ‫كائنات‬ ‫أمما‬ ، ‫اﻷعداد‬
.‫نصية‬ ‫سلسل‬ ‫الطرفين‬ ‫كل‬ ‫يكون‬ ‫أن‬ ،‫الجمع‬ ‫معامل‬ ‫في‬ ‫يشترط‬ ‫ولكن‬
‫الدالة‬ ‫وهي‬ ‫النصية‬ ‫السلسلة‬ ‫طول‬ ‫لنا‬ ‫تحسب‬ ‫بدالة‬ ‫بايثون‬ ‫وتزودنا‬
len
‫ل‬ ‫اللغة‬ ‫مع‬ ‫مدمجة‬ ‫هي‬ ‫و‬
:‫اﻷمثلة‬ ‫بعض‬ ‫وهذه‬ ، ‫استيراد‬ ‫إلى‬ ‫تحتاج‬
%python
>>> len('abc') # length: number items
3
>>> 'abc' + 'def' # concatenation: a new string
'abcdef'
>>> 'Ni!' * 4 # like "Ni!" + "Ni!" + ...
'Ni!Ni!Ni!Ni!'
‫باستخدام‬ ‫وذلك‬ ‫النصية‬ ‫السلسلة‬ ‫في‬ ‫تكرارية‬ ‫حلقة‬ ‫عمل‬ ‫إلى‬ ‫اﻵن‬ ‫سنأتي‬
for
‫العضوية‬ ‫اختبار‬ ‫و‬
‫باستخدام‬
in
:
>>> myjob = "hacker"
>>> for c in myjob: print c, # step though items
...
h a c k e r
>>> "k" in myjob # 1 means true
1
16
‫النصية‬ ‫السلسلة‬ ‫التقطيع‬ ‫و‬ ‫الفهرسة‬
‫يعطينا‬ ‫التركيب‬ ‫هذا‬ ‫فإن‬ ، ‫الحروف‬ ‫من‬ ‫مجموعة‬ ‫كأنها‬ ‫بايثون‬ ‫في‬ ‫تعرف‬ ‫النصية‬ ‫السلسل‬ ‫أن‬ ‫بما‬
‫توفر‬ ‫وكذلك‬ ، ‫المفهرس‬ ‫يسمى‬ ‫بما‬ ‫أعضاءه‬ ‫من‬ ‫أي‬ ‫إلى‬ ‫الوصول‬ ‫إمكانية‬ ‫من‬ ‫المجموعة‬ ‫مميزات‬
‫من‬ ‫العد‬ ‫تبدأ‬ ‫بايثون‬ ‫أن‬ ‫لحظ‬ ‫ولكن‬ ،‫المفهرس‬ ‫باستخدام‬ ‫السلسلة‬ ‫تلك‬ ‫تقطيع‬ ‫إمكانية‬ ‫بايثون‬ ‫لنا‬
: ‫اﻷمثلة‬ ‫هذه‬ ‫إليك‬ ‫واﻵن‬ ،‫السي‬ ‫من‬ ‫مشتقة‬ ‫لغة‬ ‫كل‬ ‫مثل‬ ‫الواحد‬ ‫وليس‬ ‫المفهرس‬ ‫في‬ ‫الصفر‬
>>> S = 'spam'
>>> S[0], S[- 2] # indexing from front or end
('s', 'a')
>>> S[1:3], S[1:], S[:- 1] # slicing: extract section
('pa', 'pam', 'spa')
‫متغير‬ ‫بتعريف‬ ‫أول‬ ‫قمنا‬
s
‫من‬ ‫الفهرسة‬ ‫بعملية‬ ‫قمنا‬ ‫ثم‬ ، ‫معينة‬ ‫قيمة‬ ‫إليه‬ ‫وأسندنا‬ ‫نصية‬ ‫سلسلة‬ ‫بأنه‬
[‫فمم‬ ، ‫النهايمة‬ ‫وممن‬ ‫البدايمة‬
0
]
S
‫فهرسمته‬ ‫الذي‬ ‫الحرف‬ ‫أظهمر‬ ‫تعنمي‬
0
‫كان‬ ‫الناتمج‬ ‫و‬
s
[‫و‬ ،
2
]-
S
‫فهرسته‬ ‫الذي‬ ‫الحرف‬ ‫أظهر‬ ‫تعني‬
2
.‫اﻷخير‬ ‫من‬
[‫فم‬ ‫المفهرس‬ ‫باستخدام‬ ‫التقطيع‬ ‫بعملية‬ ‫قمنتا‬ ‫ذلك‬ ‫بعد‬
1:3
]
S
‫فما‬ ‫اﻷول‬ ‫الحرف‬ ‫من‬ ‫اجلب‬ ‫تعني‬
:[‫أمما‬ ، ‫فوقمه‬ ‫ومما‬ ‫الثالث‬ ‫الحرف‬ ‫تجلب‬ ‫ل‬ ‫ولكمن‬ ‫أعلى‬
1
]
S
‫فمما‬ ‫اﻷول‬ ‫الحرف‬ ‫ممن‬ ‫اجلب‬ ‫فتعنمي‬
[ ‫أما‬ ، ‫النهاية‬ ‫إلى‬ ‫فوقه‬
1
]:-
S
‫اﻷخير‬ ‫الحرف‬ ‫ماعدا‬ ‫السلسلة‬ ‫كل‬ ‫اجلب‬ ‫فتعني‬
‫النصية‬ ‫السلسل‬ ‫تهيئة‬
‫ممن‬‫م‬‫ولك‬ ،‫طرق‬ ‫عدة‬ ‫فهناك‬ ‫متغيرة‬ ‫كائنات‬ ‫مما‬‫م‬‫إليه‬ ‫ممف‬‫م‬‫تضي‬ ‫أن‬ ‫وأردت‬ ‫طويلة‬ ‫مملسلة‬‫م‬‫س‬ ‫عندك‬ ‫كان‬ ‫إذا‬
# ‫ولغة‬، ‫كبير‬ ‫بشكل‬ ‫السي‬ ‫لغة‬ ‫تستعملها‬ ‫طريقة‬ ‫لك‬ ‫توفر‬ ‫بايثون‬
C
:‫التالي‬ ‫المثال‬ ‫انظر‬ ، ‫حديثا‬
17
>>> S = 'spam'
>>> S[0] = "x"
Raises an error!
>>> S = S + 'Spam!' # to change a string, make a new one
>>> S
'spamSpam!'
>>> S = S[:4] + 'Burger' + S[- 1]
>>> S
'spamBurger!'
>>> 'That is %d %s bird!' %(1, 'dead') # like C sprintf
That is 1 dead bird!
‫كباقي‬ ‫اﻷعداد‬ ‫وعند‬ ، ‫النصية‬ ‫السلسل‬ ‫مع‬ ‫ليعمل‬ % ‫المعامل‬ ‫تعريف‬ ‫أعادة‬ ‫بايثون‬ ‫أن‬ ‫لحظ‬
‫الدالة‬ ‫وخاصة‬ ‫النص‬ ‫ترتيب‬ ‫في‬ ‫السي‬ ‫هيئة‬ ‫استخدم‬ ‫اﻷخير‬ ‫السطر‬ ‫أن‬ ‫سابقا‬ ‫قلنا‬ ‫كما‬ ،‫القسمة‬
sprintf
‫على‬ ‫اليمين‬ ‫على‬ ‫ما‬ ‫يساوي‬ ‫اليسار‬ ‫على‬ ‫كل‬ ‫ما‬ ‫تعني‬ ‫بسيطة‬ ‫وهي‬ ،‫قواعدها‬ ‫كل‬ ‫أخذ‬ ‫و‬
:‫التهيئة‬ ‫هذه‬ ‫على‬ ‫أكثر‬ ‫أمثلة‬ ‫وإليك‬ ، ‫الترتيب‬
>>> exclamation = "Ni"
>>> "The knights who say %s!" %exclamation
'The knights who say Ni!'
>>> "%d %s %d you" %(1, 'spam', 4)
'1 spam 4 you'
>>> "%s - - %s - - %s" %(42, 3.14159, [1, 2, 3])
'42 - - 3.14159 - - [1, 2, 3]'
‫أما‬ ، ‫شيء‬ ‫على‬ ‫تدل‬ ‫واحدة‬ ‫كل‬ ‫ولكنها‬ ‫ل‬ ‫نقول‬ ‫؟‬ ‫اعتباطية‬ % ‫بعد‬ ‫الحروف‬ ‫هل‬ ‫ولكن‬
s
‫فهي‬ %
:‫يشرحها‬ ‫التالي‬ ‫فالجدول‬ ‫البقية‬ ‫أما‬ ، ‫غيره‬ ‫أو‬ ‫نصية‬ ‫سلسلة‬ ‫أو‬ ‫عددا‬ ‫أكان‬ ‫سواء‬ ‫كائن‬ ‫لكل‬ ‫عامة‬
‫ستعشري‬ ‫عدد‬
Hex integer
%X
‫نصية‬ ‫سلسلة‬
String
%
‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬
1
Floating-
point
%e
‫حروف‬
Character
%c
‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬
2
Floating-
point
%E
‫عشري‬ ‫عدد‬
Decimal
%d
‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬
3
Floating-
point
%f
‫صحيح‬ ‫عدد‬
Integer
%i
‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬
4
Floating-
point
%g
Unsigned (int)
%u
‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬
5
Floating-
point
%G
‫ثماني‬ ‫عدد‬
Octal integer
%o
18
% ‫حرف‬
%%
‫ستعشري‬ ‫عدد‬
Hex integer
%x
‫النصية‬ ‫لسلسل‬ ‫العامة‬ ‫أدوات‬
‫واحدة‬ ‫أشهر‬ ‫ولعل‬ ،‫النصية‬ ‫السلسل‬ ‫مع‬ ‫للتعامل‬ ‫خاصة‬ ‫بوحدات‬ ‫تزودنا‬ ‫بايثون‬ ‫سابقا‬ ‫قلنا‬ ‫كما‬
‫هي‬ ‫وأقواها‬
string
‫من‬ ‫الحروف‬ ‫تحويل‬ ‫على‬ ‫القدرة‬ ‫فمنها‬ ‫الدوال‬ ‫من‬ ‫بالعديد‬ ‫تزودنا‬ ‫فهي‬ .
‫السلسلة‬ ‫تحويل‬ ‫وكذلك‬ ، ‫المعرفة‬ ‫السلسل‬ ‫في‬ ‫البحث‬ ‫وكذلك‬، ‫والعكس‬ ‫الصغيرة‬ ‫إلى‬ ‫الكبيرة‬
‫على‬ ‫مثال‬ ‫وهذا‬ ،‫اﻷدوات‬ ‫جميع‬ ‫للمعرفة‬ ‫بايثون‬ ‫وثائق‬ ‫راجع‬ ، ‫الكثير‬ ‫وغيرها‬ ، ‫عدد‬ ‫إلى‬ ‫النصية‬
‫وحدة‬ ‫قدرة‬
string
:
>>> import string # standard utilities module
>>> S = "spammify"
>>> string.upper(S) # convert to uppercase
'SPAMMIFY'
>>> string.find(S, "mm") # return index of substring
3
>>> string.atoi("42") # convert from/to string
42
>>> string.join(string.split(S, "mm"), "XX")
'spaXXify'
‫الدالة‬ ‫أن‬ ‫القضيمة‬ ‫فمي‬ ‫مما‬ ‫فكمل‬ ‫الفهمم‬ ‫سمهل‬ ‫فهمو‬،‫تعقيدا‬ ‫اﻷكثمر‬ ‫وهمو‬ ‫اﻷخيمر‬ ‫المثال‬ ‫لعمل‬
split
‫الحرف‬ ‫عند‬ ‫قسمين‬ ‫إلى‬ ‫السلسلة‬ ‫بتجزئة‬ ‫قامت‬
mm
‫الدالة‬ ‫قامت‬ ‫ثم‬ ،
join
‫بدمج‬
XX
‫بين‬
.‫عملها‬ ‫كيفية‬ ‫ومعرفة‬ ‫واحدة‬ ‫دالة‬ ‫كل‬ ‫تجربة‬ ‫يمكنك‬ ، ‫السابقين‬ ‫القسمين‬
‫الدالة‬ ‫أن‬ ‫لحمظ‬
atoi
‫أخرى‬ ‫دالة‬ ‫توجمد‬ ‫ولكمن‬ ، ‫فقمط‬ ‫عدد‬ ‫إلى‬ ‫النصمية‬ ‫السملسلة‬ ‫بتحويمل‬ ‫تقوم‬
‫تسممى‬ ‫مدمجمة‬
eval
‫ممن‬ ‫الحال‬ ‫بطبيعمة‬ ‫أبطمأ‬ ‫ولكنهما‬ ‫نوع‬ ‫أي‬ ‫إلى‬ ‫النصمية‬ ‫السملسلة‬ ‫بتحويمل‬ ‫تقوم‬
.‫اﻷولى‬ ‫الدالة‬
‫النصية‬ ‫السلسلة‬ ‫كتابة‬ ‫في‬ ‫الختلفات‬
‫تنسمق‬ ‫أن‬ ‫تسمتطيع‬ ‫بهما‬ ‫التمي‬ ‫الهروب‬ ‫أحرف‬ ‫عمن‬ ‫سمنتكلم‬ ، ‫النصمية‬ ‫السملسل‬ ‫عمن‬ ‫كلمنما‬ ‫نهايمة‬ ‫فمي‬
‫فمي‬ ‫اﻷحرف‬ ‫هذه‬ ‫لك‬ ‫يمبين‬ ‫التالي‬ ‫والجدول‬ ‫وغيرهما‬ ‫السمطر‬ ‫بدايمة‬ ‫حرف‬ ‫مثمل‬ ، ‫جيمد‬ ‫بشكمل‬ ‫النمص‬
19
:‫بايثون‬
newli
ne
‫الستمرار‬
n
‫جديد‬ ‫سطر‬

 ‫إظهار‬
v
Tab
‫عمودية‬
'
‫واحدة‬ ‫اقتباس‬ ‫علمة‬ ‫إظهار‬
t
Tab
‫رأسية‬
"
‫مزدوجة‬ ‫اقتباس‬ ‫علمة‬ ‫إظهار‬
r
‫السطر‬ ‫بداية‬ ‫إلى‬ ‫العودة‬
Carriage return
a
‫جرس‬
f
‫جديدة‬ ‫صفحة‬
Formfeed
b
‫الخلفي‬ ‫الحذف‬ ‫مفتاح‬
Backspace
0XX
Octal value XX
e
‫الهروب‬ ‫زر‬
Escape
xXX
Hex value XX
000
Null
‫السلسلة‬ ‫إنهاء‬ ‫عدم‬
other
‫آخر‬ ‫حرف‬ ‫أي‬
‫القوائم‬
‫أل‬ ‫وترتيب‬ ‫مرونة‬ ‫المدمجة‬ ‫الكائنات‬ ‫أكثر‬ ‫يعتبر‬ ‫كائن‬ ‫إلى‬ ‫ونصل‬ ‫بايثون‬ ‫لغة‬ ‫غمار‬ ‫في‬ ‫مشوارنا‬ ‫نكمل‬
‫القائممة‬ ‫وهمو‬
list
‫عدة‬ ‫ضمنهما‬ ‫فمي‬ ‫تجممع‬ ‫أن‬ ‫تسمتطيع‬ ‫أنهما‬ ‫النصمية‬ ‫السملسل‬ ‫عمن‬ ‫القوائم‬ ‫تمتاز‬ ،
‫كائنات‬ ‫و‬ ‫أعداد‬ ‫و‬ ‫مية‬‫م‬‫نص‬ ‫ملسلة‬‫م‬‫س‬ ‫من‬‫م‬‫م‬ ‫تكون‬ ‫أن‬ ‫من‬‫م‬‫يمك‬ ‫مة‬‫م‬‫فالقائم‬ ، ‫مط‬‫م‬‫فق‬ ‫موص‬‫م‬‫النص‬ ‫مت‬‫م‬‫وليس‬ ‫كائنات‬
‫و‬ ‫السمي‬ ‫لغمة‬ ‫مثمل‬ ‫اﻷخرى‬ ‫اللغات‬ ‫فمي‬ ‫المعطيات‬ ‫بنمى‬ ‫مقام‬ ‫القائممة‬ ‫وتقوم‬ .‫أخرى‬ ‫قوائم‬ ‫حتمى‬ ‫أخرى‬
:‫منها‬ ‫مميزات‬ ‫بعدة‬ ‫بايثون‬ ‫في‬ ‫القوائم‬ ‫وتتميز‬،‫الجافا‬
‫متجانسة‬ ‫غير‬ ‫كائنات‬ ‫من‬ ‫مرتبة‬ ‫مجموعة‬
‫القائمة‬ ‫و‬ ‫كمجموعة‬ ‫تنظمهم‬ ‫أن‬ ‫يمكنك‬ ‫لذا‬ ‫الكائنات‬ ‫للتجميع‬ ‫مكان‬ ‫القائمة‬ ،‫الوظيفية‬ ‫الناحية‬ ‫من‬
. ‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫بترتيبهم‬ ‫تقوم‬ ‫أيضا‬
‫المفهرس‬ ‫باستخدام‬ ‫الوصول‬
‫عملية‬ ‫وإجراء‬ ،‫المفهرس‬ ‫باستخدام‬ ‫القائمة‬ ‫أعضاء‬ ‫إلى‬ ‫تصل‬ ‫أن‬ ‫تستطيع‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬
.‫والسلسلة‬ ‫التقطيع‬
‫عالية‬ ‫مرونة‬
‫حسب‬ ‫وتصغر‬ ‫تكبر‬ ‫أن‬ ‫يمكن‬ ‫بحيث‬ ،‫النصية‬ ‫السلسل‬ ‫مرونة‬ ‫من‬ ‫أكبر‬ ‫عالية‬ ‫بمرونة‬ ‫القوائم‬ ‫تتمتع‬
.‫متشابكة‬ ‫تصير‬ ‫بحيث‬ ‫قوائم‬ ‫في‬ ‫قوائم‬ ‫وضع‬ ‫ويمكنك‬ ،‫برنامجك‬ ‫متطلبات‬
20
‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫مصفوفة‬
‫الناحية‬ ‫هذه‬ ‫من‬ ‫وهي‬،‫السي‬ ‫لغة‬ ‫في‬ ‫المصفوفات‬ ‫من‬ ‫خاص‬ ‫نوع‬ ‫القوائم‬ ‫تعتبر‬ ‫التقنية‬ ‫الناحية‬ ‫من‬
‫ب‬ ‫ما‬‫م‬‫معه‬ ‫مل‬‫م‬‫نتعام‬ ‫ما‬‫م‬‫عندم‬ ‫أي‬ ، ‫مة‬‫م‬‫مرجعي‬ ‫ما‬‫م‬‫بقولن‬ ‫ما‬‫م‬‫هن‬ ‫مد‬‫م‬‫ونقص‬ ،‫مة‬‫م‬‫مرجعي‬ ‫كائنات‬ ‫من‬‫م‬‫ع‬ ‫عبارة‬
can't
read superblock
،‫عنه‬ ‫نسخة‬ ‫وليس‬ ‫الكائن‬ ‫إلى‬ ‫يؤشر‬ ‫مؤشر‬ ‫مع‬ ‫نتعامل‬ ‫فإننا‬ ‫تعريفها‬ ‫عد‬
.‫البرمجة‬ ‫علينا‬ ‫يسهل‬ ‫و‬ ‫أكبر‬ ‫سرعة‬ ‫يعطينا‬ ‫وهذا‬
:‫القوائم‬ ‫عمليات‬ ‫أهم‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬
‫العملية‬
‫الوصف‬
L1 = []
‫فارغة‬ ‫قائمة‬
L2 = [0, 1, 2, 3]
‫من‬ ‫اﻷدلة‬ ‫و‬ ‫عناصر‬ ‫أربعة‬
0
‫إلى‬
3
L3 = ['abc', ['def', 'ghi']]
‫متداخلة‬ ‫قوائم‬
L2[i], L3[i][j]
L2[i:j],
len(L2)
‫الفهرسة‬
‫التقطيع‬
‫الطول‬
L1 + L2,
L2 * 3
‫سلسلة‬
‫إعادة‬
for x in L2,
3 in L2
‫تكرار‬
‫العضوية‬
L2.append(4),
L2.sort(),
L2.index(1),
L2.reverse()
:‫الدوال‬
‫توسيع‬
‫ترتيب‬
‫البحث‬
‫عكس‬
del L2[k],
L2[i:j] = []
‫النكماش‬
L2[i] = 1,
L2[i:j] = [4,5,6]
‫الفهرس‬ ‫إسناد‬
‫المقطع‬ ‫اسناد‬
range(4), xrange(0, 4)
‫اﻷعداد‬ ‫من‬ ‫مجموعات‬ ‫أو‬ ‫قوائم‬ ‫إنشاء‬
‫مي‬‫م‬‫ف‬ ‫مك‬‫م‬‫علي‬ ‫مرت‬ ‫مد‬‫م‬‫ق‬ ‫مابق‬‫م‬‫الس‬ ‫الجدول‬ ‫مي‬‫م‬‫ف‬ ‫ذكرت‬ ‫مي‬‫م‬‫الت‬ ‫العمليات‬ ‫مم‬‫م‬‫معظ‬ ‫مت‬‫م‬‫رأي‬ ‫مد‬‫م‬‫ق‬ ‫مك‬‫م‬‫أن‬ ‫متلحظ‬‫م‬‫س‬
‫مثمل‬ ‫النصمية‬ ‫السملسل‬ ‫تدعمهما‬ ‫ول‬ ‫القوائم‬ ‫تدعمهما‬ ‫التمي‬ ‫العمليات‬ ‫بعمض‬ ‫إل‬ ، ‫النصمية‬ ‫السملسل‬
.‫والنكماش‬ ‫التوسع‬ ‫و‬ ‫المقاطع‬ ‫إسناد‬ ‫و‬ ‫الفهرس‬ ‫إسناد‬
21
‫القوائم‬ ‫على‬ ‫العمل‬
‫مي‬‫م‬‫ف‬ ‫ذكرت‬ ‫مي‬‫م‬‫الت‬ ‫العمليات‬ ‫منأخذ‬‫م‬‫س‬ ‫أخرى‬ ‫ومرة‬،‫ما‬‫م‬‫عليه‬ ‫مل‬‫م‬‫العم‬ ‫مي‬‫م‬‫ه‬ ‫القوائم‬ ‫مم‬‫م‬‫لفه‬ ‫مة‬‫م‬‫طريق‬ ‫مل‬‫م‬‫أفض‬
.‫العملية‬ ‫اﻷمثلة‬ ‫من‬ ‫بشيء‬ ‫نشرحها‬ ‫أن‬ ‫ونحاول‬ ‫السابق‬ ‫الجدول‬
‫اﻷساسية‬ ‫العمليات‬
: ‫التالي‬ ‫المثال‬ ‫إليك‬ ‫و‬ ‫النصية‬ ‫السلسل‬ ‫تدعمها‬ ‫التي‬ ‫العمليات‬ ‫معظم‬ ‫تدعم‬ ‫القوائم‬
%python
>>> len([1, 2, 3]) # length
3
>>> [1, 2, 3] + [4, 5, 6] # concatenation
[1, 2, 3, 4, 5, 6]
>>> ['Ni!'] * 4 # repetition
['Ni!', 'Ni!', 'Ni!', 'Ni!']
>>> for x in [1, 2, 3]: print x, # iteration
...
1 2 3
‫والتقطيع‬ ‫الفهرسة‬
‫مثمل‬ ‫جيمد‬ ‫بشكمل‬ ‫عليهما‬ ‫تعممل‬ ‫والتقطيمع‬ ‫الفهرسمة‬ ‫عمليتمي‬ ‫فإن‬، ‫سملسل‬ ‫عمن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫بمما‬
:‫المثال‬ ‫هذا‬ ‫وإليك‬ ، ‫كائن‬ ‫لكل‬ ‫الحقيقي‬ ‫الموقع‬ ‫ملحظة‬ ‫مع‬ ‫النصية‬ ‫السلسل‬
>>> L = ['spam', 'Spam', 'SPAM!']
>>> L[2] # offsets start at zero
'SPAM!'
>>> L[-2] # negative: count from the right
'Spam'
>>> L[1:] # slicing fetches sections
['Spam', 'SPAM!']
‫القوائم‬ ‫في‬ ‫اﻹسناد‬
‫قيم‬ ‫إسناد‬ ‫على‬ ‫المقدرة‬ ‫هي‬ ‫النصية‬ ‫السلسل‬ ‫عن‬ ‫متميزة‬ ‫وتعتبر‬ ‫القوائم‬ ‫بها‬ ‫أتت‬ ‫التي‬ ‫اﻷشياء‬
‫لفعل‬ ‫تحتاج‬ ‫التي‬ ‫النصية‬ ‫السلسل‬ ‫بخلف‬ ‫ذلك‬ ‫و‬ ‫القوائم‬ ‫في‬ ‫والمقاطع‬ ‫الفهارس‬ ‫إلى‬ ‫جديدة‬
.‫الكائن‬ ‫من‬ ‫جديدة‬ ‫نسخة‬ ‫إنشاء‬ ‫إلى‬ ‫ذلك‬
22
‫ذلك‬ ‫يبين‬ ‫كما‬ ‫المقطع‬ ‫أو‬ ‫الفهرس‬ ‫باستخدام‬ ‫المحتوى‬ ‫تغيير‬ ‫تستطيع‬ ‫القوائم‬ ‫استخدام‬ ‫عند‬
: ‫التالي‬ ‫المثال‬
>>> L = ['spam', 'Spam', 'SPAM!']
>>> L[1] = 'eggs' # index assignment
>>> L
['spam', 'eggs', 'SPAM!']
>>> L[0:2] = ['eat', 'more'] # slice assignment: delete+insert
>>> L # replaces items 0,1
['eat', 'more', 'SPAM!']
‫بحذف‬ ‫تقوم‬ ‫أول‬ ‫فإنها‬ ، ‫المقاطع‬ ‫طريق‬ ‫عن‬ ‫القوائم‬ ‫إلى‬ ‫باﻹسناد‬ ‫تقوم‬ ‫حين‬ ‫بايثون‬ ‫أن‬ ‫ملحظة‬ ‫مع‬
‫سبيل‬ ‫على‬ ،‫واحد‬ ‫كائن‬ ‫من‬ ‫أكثر‬ ‫القيمة‬ ‫كانت‬ ‫ولو‬ ‫مكانه‬ ‫الجديدة‬ ‫القيمة‬ ‫تضع‬ ‫ثم‬ ‫المختار‬ ‫المقطع‬
‫قائمة‬ ‫عندنا‬ ‫المثال‬
L
[ ‫تساوي‬
1
,
2
,
3
‫التالي‬ ‫المقطع‬ ‫باستخدام‬ ‫اﻹسناد‬ ‫عملية‬ ‫تطبيق‬ ‫فعند‬ ]
L[1:2] = [4, 5
[ ‫ستكون‬ ‫النتيجة‬ ‫فإن‬ ]
1
,
4
,
5
,
3
.]
:‫التالي‬ ‫المثال‬ ‫إليك‬ ‫و‬ ‫العكس‬ ‫و‬ ‫البحث‬ ‫و‬ ‫الترتيب‬ ‫و‬ ‫توسيع‬ ‫منها‬ ‫الدوال‬ ‫بعض‬ ‫تدعم‬ ‫القوائم‬
>>> L.append('please')
>>> L
['eat', 'more', 'SPAM!', 'please']
>>> L.sort()
>>> L
['SPAM!', 'eat', 'more', 'please']
>>> L.reverse()
>>> L
['please', 'more', 'eat', 'SPAM!']
>>> L.index('eat')
2
‫أو‬ ‫الفهرس‬ ‫باستخدام‬ ‫الحذف‬ ‫تدعم‬ ‫فإنها‬ ، ‫مرنة‬ ‫سلسلة‬ ‫عن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫بما‬ ‫وأخيرا‬
: ‫المقطع‬ ‫أو‬ ‫الفهرس‬ ‫طريق‬ ‫عن‬ ‫الحذف‬ ‫أو‬ ‫فارغة‬ ‫قائمة‬ ‫إلى‬ ‫السناد‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ،‫المقطع‬
23
>>> L.sort()
>>> L
['SPAM!', 'eat', 'more', 'please']
>>> del L[0] # delete one item
>>> L
['eat', 'more', 'please']
>>> del L[1:] # delete an entire section
>>> L # same as L[1:] = []
['eat']
‫القواميس‬
‫كنا‬ ‫وإذا‬،‫بايثون‬ ‫لغة‬ ‫في‬ ‫المرنة‬ ‫المدمجة‬ ‫الكائنات‬ ‫أهم‬ ‫من‬ ‫القواميس‬ ‫تعتبر‬ ‫القوائم‬ ‫إلى‬ ‫باﻷضافة‬
‫فهي‬ ‫ذلك‬ ‫بعكس‬ ‫القواميس‬ ‫فإن‬ ، ‫المرتبة‬ ‫الكائنات‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫اعتبرنا‬
‫و‬ ‫ترتيب‬ ‫عليه‬ ‫يقوم‬ ‫الذي‬ ‫القوائم‬ ‫في‬ ‫الرئيسي‬ ‫الشيء‬ ‫ويعتبر‬ ،‫المرتبة‬ ‫غير‬ ‫الكائنات‬ ‫من‬ ‫مجموعة‬
.‫العنصر‬ ‫موقع‬ ‫وليس‬ ‫المفتاح‬ ‫هو‬ ‫القاموس‬ ‫عناصر‬ ‫إحضار‬
‫التي‬ ‫المعطيات‬ ‫بنى‬ ‫و‬ ‫خوارزميات‬ ‫من‬ ‫الكثير‬ ‫استبدال‬ ‫استطاعت‬ ‫القواميس‬ ‫فإن‬ ‫تلحظ‬ ‫وكما‬
‫في‬ ‫القواميس‬ ‫تستخدم‬ ‫وأيضا‬ ،‫المستوى‬ ‫منخفضة‬ ‫اللغات‬ ‫بعض‬ ‫في‬ ‫يدويا‬ ‫استخدامها‬ ‫إلى‬ ‫ستضطر‬
.‫المستوى‬ ‫منخفضة‬ ‫اللغات‬ ‫بعض‬ ‫في‬ ‫الجداول‬ ‫عمل‬ ‫ﻷداء‬ ‫اﻷحيان‬ ‫بعض‬
:‫منها‬ ‫خصائص‬ ‫بعدة‬ ‫القواميس‬ ‫وتتميز‬
‫الموقع‬ ‫وليس‬ ‫المفتاح‬ ‫باستخدام‬ ‫الوصول‬
‫باستخدام‬ ‫القيم‬ ‫يضع‬ ‫الترابط‬ ‫هذا‬،‫المترابطة‬ ‫المصفوفات‬ ‫عليها‬ ‫يطلق‬ ‫اﻷحيان‬ ‫بعض‬ ‫في‬ ‫القواميس‬
،‫به‬ ‫خزن‬ ‫الذي‬ ‫المفتاح‬ ‫باستخدام‬ ‫القاموس‬ ‫في‬ ‫عنصر‬ ‫أي‬ ‫إحضار‬ ‫وباستطاعتك‬ ،‫المفاتيح‬
.‫الموقع‬ ‫باستخدام‬ ‫وليس‬ ‫المفتاح‬ ‫باستخدام‬ ‫ولكن‬ ‫الفهرس‬ ‫عمليات‬ ‫نفس‬ ‫ستستخدم‬
‫متجانسة‬ ‫غير‬ ‫كائنات‬ ‫من‬ ‫منظمة‬ ‫غير‬ ‫مجموعة‬
‫ترتيب‬ ‫تقدم‬ ‫بايثون‬ ‫الحقيقة‬ ‫في‬،‫معين‬ ‫ترتيب‬ ‫على‬ ‫تبقى‬ ‫ل‬ ‫القواميس‬ ‫في‬ ‫العناصر‬ ،‫القوائم‬ ‫بخلف‬
‫العناصر‬ ‫أماكن‬ ‫إلى‬ )‫فيزيائية‬ ‫(غير‬ ‫راوبط‬ ‫تقدم‬ ‫المفاتيح‬ ،‫سريعة‬ ‫مشاهدة‬ ‫تقديم‬ ‫يضمن‬ ‫عشوائي‬
.‫القواميس‬ ‫في‬
‫مرنة‬ ‫خصائص‬
24
‫يمكنها‬ ‫وكذلك‬ ،‫جديدة‬ ‫نسخة‬ ‫إنشاء‬ ‫بدون‬ ‫والتقلص‬ ‫التوسيع‬ ‫بميزة‬ ‫تزودك‬ ‫القواميس‬ ‫القوائم‬ ‫مثل‬
‫في‬ ‫قواميس‬ ‫تنشأ‬ ‫أن‬ ‫يمكنك‬ ‫بحيث‬ ‫التداخل‬ ‫ميزة‬ ‫وكذلك‬،‫نوع‬ ‫كل‬ ‫من‬ ‫عناصر‬ ‫على‬ ‫تحتوي‬
‫على‬ ‫بالعتماد‬ ‫جديدة‬ ‫قيم‬ ‫تسند‬ ‫أن‬ ‫يمكنك‬ ‫وأيضا‬،‫قواميس‬ ‫في‬ ‫قوائم‬ ‫يمكنك‬ ‫وكذلك‬ ‫قواميس‬
‫المفاتيح‬
‫المرجعية‬ ‫كائنات‬ ‫من‬ ‫جداول‬
‫عن‬ ‫عبارة‬ ‫القواميس‬ ‫فإن‬ ، ‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫مصفوفة‬ ‫عن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫قلنا‬ ‫كنا‬ ‫إذا‬
‫المعطيات‬ ‫بنى‬ ‫من‬ ‫جداول‬ ‫تستخدم‬ ‫القواميس‬ ‫داخليا‬ .‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫منظمة‬ ‫غير‬ ‫جداول‬
‫بايثون‬ ‫ذلك‬ ‫على‬ ‫وعلوة‬ ،‫الطلب‬ ‫حسب‬ ‫تكبر‬ ‫و‬ ‫صغيرة‬ ‫تبدأ‬ ‫وهي‬ ‫السريع‬ ‫السترجاع‬ ‫ميزة‬ ‫تدعم‬
‫التعمق‬ ‫وعند‬ .‫كبيرة‬ ‫سرعة‬ ‫السترجاع‬ ‫يعطي‬ ‫مما‬ ‫المفاتيح‬ ‫ﻹيجاد‬ ‫محسنة‬ ‫خوارزميات‬ ‫توظف‬
.‫بالضبط‬ ‫القوائم‬ ‫مثل‬ ‫منها‬ ‫نسخ‬ ‫وليس‬ ‫الكائنات‬ ‫مراجع‬ ‫تخزن‬ ‫القواميس‬ ‫أن‬ ‫نجد‬
‫تكتب‬ .‫القوائم‬ ‫تشابه‬ ‫أنها‬ ‫لحظ‬ ،‫القواميس‬ ‫على‬ ‫الشائعة‬ ‫العمليات‬ ‫أهم‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬
:‫التالي‬ ‫شكل‬ ‫على‬ ‫القواميس‬
key:value
‫العملية‬
‫الوصف‬
D1 = { }
‫فارغ‬ ‫قاموس‬
d2 = {'spam': 2, 'eggs': 3}
‫القاموس‬ ‫في‬ ‫عنصرين‬
d3 = {'food': {'ham': 1, 'egg': 2}}
‫التداخل‬
d2['eggs'], d3['food']['ham']
‫المفتاح‬ ‫باستخدام‬ ‫الفهرسة‬
d2.has_key('eggs'),
d2.keys(),
d2.values()
‫العضوية‬ ‫دالة‬ : ‫الدوال‬
‫المفاتيح‬ ‫قائمة‬
‫القيم‬ ‫قائمة‬
len(d1)
)‫المخزنة‬ ‫اﻹدخالت‬ ‫(عدد‬ ‫الطول‬
d2[key] = new,
del d2[key]
‫والتعديل‬ ‫اﻹضافة‬
‫الحذف‬
‫القواميس‬ ‫على‬ ‫العمل‬
:‫السابق‬ ‫الجدول‬ ‫في‬ ‫ذكرت‬ ‫التي‬ ‫العمليات‬ ‫بعض‬ ‫تطبيق‬ ‫في‬ ‫حريتنا‬ ‫لنأخذ‬ ‫المفسر‬ ‫إلى‬ ‫نرجع‬ ‫دعنا‬
:‫اﻷساسية‬ ‫العمليات‬
‫المفتاح‬ ‫باسمتخدام‬ ‫عناصمره‬ ‫إلى‬ ‫والوصمول‬ ‫قاموس‬ ‫إنشاء‬ ‫يمكنمك‬ ، ‫عام‬ ‫بشكمل‬
key
‫الدالة‬ ‫و‬ ،
25
len
‫أو‬ ‫القاموس‬ ‫فمي‬ ‫المخزنمة‬ ‫العناصمر‬ ‫عدد‬ ‫ترجمع‬ ‫وهمي‬ ،‫القواميمس‬ ‫ممع‬ ‫أيضما‬ ‫تعممل‬ ‫المدمجمة‬
‫الدالة‬ ‫فإن‬ ‫المفاتيح‬ ‫عن‬ ‫حديثنا‬ ‫وعند‬ .‫المفاتيح‬ ‫قائمة‬ ‫طول‬ ‫ترجع‬ ‫آخر‬ ‫بمعنى‬
keys
‫كل‬ ‫ترجع‬
‫بشكممل‬ ‫القواميممس‬ ‫لمعالجممة‬ ‫قويممة‬ ‫أداة‬ ‫يعتممبر‬ ‫هذا‬ ،‫قائمممة‬ ‫فممي‬ ‫مجموعممة‬ ‫القاموس‬ ‫فممي‬ ‫المفاتيممح‬
.)‫عشوائية‬ ‫القواميس‬ ‫أن‬ ‫(تذكر‬، ‫المفتايح‬ ‫قائمة‬ ‫ترتيب‬ ‫في‬ ‫عليه‬ ‫تعتمد‬ ‫ل‬ ‫ولكن‬ ،‫متسلسل‬
%python
>>> d2 = {'spam': 2, 'ham': 1, 'eggs': 3}
>>> d2['spam'] # fetch value for key
2
>>> len(d2) # number of entries in dictionary
3
>>> d2.has_key('ham') # key membership test (1 means true)
1
>>> d2.keys() # list of my keys
['eggs', 'spam', 'ham']
‫القواميس‬ ‫في‬ ‫التغيير‬
‫بدون‬، ‫أيضا‬ ‫جديدة‬ ‫قيم‬ ‫اسناد‬ ‫و‬ ‫تصغر‬ ‫و‬ ‫تكبر‬ ‫أن‬ ‫تستطيع‬ ‫فلذا‬ ،‫مرتبة‬ ‫غير‬ ‫القواميس‬ ‫أن‬ ‫قلنا‬ ‫كما‬
‫ﻹنشاء‬ ‫تغييرها‬ ‫أو‬ ‫قيمة‬ ‫إسناد‬ ‫عليك‬ ‫فقط‬ ،‫بالضبط‬ ‫القوائم‬ ‫مثل‬ ‫جديدة‬ ‫قواميس‬ ‫إنشاء‬ ‫إلى‬ ‫الحاجة‬
‫والدالة‬ .‫القاموس‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬
del
‫القوائم‬ ‫على‬ ‫تعمل‬ ‫مثلما‬ ‫القواميس‬ ‫على‬ ‫أيضا‬ ‫تعمل‬
:‫التالي‬ ‫المثال‬ ‫إليك‬ ، ‫بالضبط‬
>>> d2['ham'] = ['grill', 'bake', 'fry'] # change entry
>>> d2
{'eggs': 3, 'spam': 2, 'ham': ['grill', 'bake', 'fry']}
>>> del d2['eggs'] # delete entry
>>> d2
{'spam': 2, 'ham': ['grill', 'bake', 'fry']}
>>> d2['brunch'] = 'Bacon' # add new entry
>>> d2
{'brunch': 'Bacon', 'spam': 2, 'ham': ['grill', 'bake', 'fry']}
‫طريقة‬ ‫عن‬ ‫تختلف‬ ‫فهي‬ ، ‫اﻷخير‬ ‫المثال‬ ‫القاموس‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬ ‫إنشاء‬ ‫في‬ ‫الطريقة‬ ‫هنا‬ ‫لحظ‬
26
‫المفتاح‬ ‫على‬ ‫بل‬ ‫موقع‬ ‫على‬ ‫تعتمد‬ ‫ل‬ ‫القواميس‬ ‫أن‬ ‫وذلك‬ ، ‫القوائم‬ ‫في‬ ‫الجديدة‬ ‫مدخلة‬ ‫إضافة‬
‫الدالة‬ ‫إلى‬ ‫تحتاج‬ ‫فهي‬ ‫القواميس‬ ‫بعكس‬ ،‫المكان‬ ‫يهمها‬ ‫ل‬ ‫و‬ ‫عشوائية‬ ‫فهي‬
append
‫ﻹضافة‬
.‫القائمة‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬
‫واقعي‬ ‫مثال‬
‫العمود‬ ‫في‬ -‫هنا‬ ‫ثلث‬- ‫اللغات‬ ‫أسماء‬ ‫يحوي‬ ‫جدول‬ ‫إنشاء‬ ‫وهو‬ ‫واقعية‬ ‫أكثر‬ ‫مثال‬ ‫هنا‬ ‫سنأخذ‬
‫وحاول‬ ‫المثال‬ ‫هذا‬ ‫في‬ ‫ركز‬،-‫القيمة‬ – ‫مؤلفيها‬ ‫أسماء‬ ‫يحوي‬ ‫الثاني‬ ‫والعمود‬ -‫المفتاح‬- ‫اﻷول‬
:‫تطبيقه‬
>>> table = {'Python': 'Guido van Rossum',
... 'Perl': 'Larry Wall',
... 'Tcl': 'John Ousterhout' }
...
>>> language = 'Python'
>>> creator = table[language]
>>> creator
'Guido van Rossum'
>>> for lang in table.keys(): print lang, 't', table[lang]
...
Tcl John Ousterhout
Python Guido van Rossum
Perl Larry Wall
‫باستخدام‬ ‫مباشر‬ ‫بشكل‬ ‫تكررها‬ ‫أن‬ ‫يمكن‬ ‫فل‬ ‫متسلسلة‬ ‫ليست‬ ‫القواميس‬ ‫ﻷن‬،‫اﻷخير‬ ‫اﻷمر‬ ‫لحظ‬
for
،‫القاموس‬ ‫عناصر‬ ‫جميع‬ ‫تعرض‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫ولكن‬ .‫القوائم‬ ‫أو‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬
‫الدالة‬ ‫باستخدام‬ ‫أول‬ ‫فقم‬
keys
‫قيمتها‬ ‫واعرض‬ ‫كررها‬ ‫ثم‬ ‫القاموس‬ ‫في‬ ‫المفاتيح‬ ‫قائمة‬ ‫لجلب‬
‫باستخدام‬
for
‫تعرف‬ ‫تكن‬ ‫لم‬ ‫إذا‬ ،
for
‫الدروس‬ ‫في‬ ‫بالتفصيل‬ ‫ندرسها‬ ‫فسوف‬ ‫تتضايق‬ ‫فل‬
.‫القادمة‬
:‫اﻷخرى‬ ‫الكائنات‬ ‫إلى‬ ‫ننتقل‬ ‫أن‬ ‫قبل‬ ‫القواميس‬ ‫حول‬ ‫تتذكرها‬ ‫أن‬ ‫يجب‬ ‫الملحظات‬ ‫بعض‬ ‫وهنا‬
–
‫اﻷخير‬ ‫المثال‬ ‫في‬ ‫رأينا‬ ‫مثلما‬ ‫القواميس‬ ‫مع‬ ‫تعمل‬ ‫ل‬ ‫التسلسل‬ ‫على‬ ‫تعتمد‬ ‫التي‬ ‫العمليات‬
–
‫القاموس‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬ ‫تضيف‬ ‫فإنك‬ ‫جديدة‬ ‫قيمة‬ ‫إسناد‬ ‫عند‬
–
‫القوائم‬ ‫ماعدا‬ ‫الكائنات‬ ‫كل‬ ‫تعمل‬ ‫بل‬ ، ‫نصية‬ ‫سلسلة‬ ‫المفتاح‬ ‫يكون‬ ‫أن‬ ‫شرطا‬ ‫ليس‬
27
‫المجموعات‬
‫ببساطة‬ ‫تتركب‬ ‫المجموعات‬،‫المجموعات‬ ‫هي‬ ‫المجمعات‬ ‫ﻷنواع‬ ‫لبايثون‬ ‫اسكشافنا‬ ‫في‬ ‫نوع‬ ‫آخر‬
‫تتغير‬ ‫أن‬ ‫يمكن‬ ‫ل‬ ‫القوائم‬ ‫أن‬ ‫باستثناء‬ ‫القوائم‬ ‫مثل‬ ‫بالضبط‬ ‫تعمل‬ ‫وهي‬،‫الكائنات‬ ‫من‬ ‫مجموعة‬ ‫من‬
‫قوسين‬ ‫بين‬ ‫وليس‬ ‫قوسين‬ ‫بين‬ ‫محصورة‬ ‫متسلسلة‬ ‫كعناصر‬ ‫عادة‬ ‫وتكتب‬ ‫ثابتة‬ ‫فهي‬ ‫مكانها‬ ‫من‬
:‫وهي‬ ‫القوائم‬ ‫من‬ ‫خصائصها‬ ‫معظم‬ ‫تستمد‬ ‫والمجموعات‬.‫القوائم‬ ‫مثل‬ ‫معكوفين‬
‫الكائنات‬ ‫من‬ ‫منظمة‬ ‫مجموعة‬
‫نسق‬ ‫في‬ ‫المنظمة‬ ‫الكائنات‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫المجموعات‬ ‫والقوائم‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬
‫الكائنات‬ ‫أنواع‬ ‫كل‬ ‫على‬ ‫تحتوي‬ ‫أن‬ ‫يمكن‬ ‫القوائم‬ ‫ومثل‬ ‫معين‬
‫الموقع‬ ‫باستخدام‬ ‫الوصول‬
‫موقعه‬ ‫باستخدام‬ ‫المجموعة‬ ‫في‬ ‫عنصر‬ ‫أي‬ ‫إلى‬ ‫الوصول‬ ‫يمكنك‬ ‫والقوائم‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬
‫أخذناها‬ ‫وأن‬ ‫سبق‬ ‫والتي‬ ‫الموقع‬ ‫تستخدم‬ ‫التي‬ ‫العلميات‬ ‫كل‬ ‫تدعم‬ ‫المجموعات‬ ‫و‬ ،‫مفتاحه‬ ‫وليس‬
.‫والتقطيع‬ ‫الفهرس‬ ‫باستخدام‬ ‫الوصول‬ ‫مثل‬
‫الكائنات‬ ‫من‬ ‫ثابتة‬ ‫سلسلة‬
‫المكان‬ ‫في‬ ‫تغيير‬ ‫عملية‬ ‫أي‬ ‫تدعم‬ ‫ل‬ ‫أنها‬ ‫ذلك‬ ‫ويعني‬ ‫ثابتة‬ ‫المجموعات‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬
‫لفعل‬ ‫يجب‬ ‫بل‬ ‫والتقلص‬ ‫التوسع‬ ‫تدعم‬ ‫ل‬ ‫أيضا‬ ‫وهي‬ ،‫القوائم‬ ‫في‬ ‫رأيتها‬ ‫التي‬ ‫مثل‬ )‫(السناد‬
.‫تصغيرها‬ ‫أو‬ ‫تكبيرها‬ ‫المراد‬ ‫المجموعة‬ ‫من‬ ‫جديدة‬ ‫نسخة‬ ‫إنشاء‬ ‫ذلك‬
‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫مصفوفة‬
.‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫مصفوفة‬ ‫عن‬ ‫عبارة‬ ‫المجموعة‬ ،‫بالضبط‬ ‫القوائم‬ ‫مثل‬
‫فارغة‬ ‫مجموعة‬ ‫تنشيء‬ ‫لكي‬ ‫ملحظة‬ ‫مع‬ ،‫المجموعات‬ ‫على‬ ‫العمليات‬ ‫أهم‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬
.‫فقط‬ ‫قوسين‬ ‫وضع‬ ‫يكفي‬ ‫فقط‬
‫العملية‬
‫الوصف‬
()
‫فارغة‬ ‫مجموعة‬
t1 = (0,)
‫المجموعة‬ ‫في‬ ‫واحد‬ ‫عنصر‬
t2 = (0, 1, 2, 3)
‫عناصر‬ ‫أربعة‬
t2 = 0, 1, 2, 3
‫أيضا‬ ‫عناصر‬ ‫أربعة‬
28
‫العملية‬
‫الوصف‬
t3 = ('abc', ('def', 'ghi'))
t1[i], t3[i][j]
t1[i:j],
len(t1)
‫التداخل‬
‫الفهرسة‬
‫التقطيع‬
‫الطول‬
t1 + t2
t2 * 3
‫الجمع‬
‫اﻹعادة‬
for x in t2,
3 in t2
‫التكرار‬
‫العضوية‬
‫إغلق‬ ‫في‬ ‫تستخدم‬ ‫اﻷقواس‬ ‫أن‬ ‫بسبب‬ ،‫أكثر‬ ‫إيضاحا‬ ‫تستحق‬ ‫الجدول‬ ‫في‬ ‫اﻷولى‬ ‫الصفوف‬ ‫أربعة‬
‫بين‬ ‫واحدا‬ ‫كائنا‬ ‫أن‬ ‫بايثون‬ ‫ﻹخبار‬ ‫مميز‬ ‫شيء‬ ‫إلى‬ ‫تحتاج‬ ‫فإنك‬ )‫اﻷعداد‬ ‫راجع‬ ( ‫المعاملت‬
‫قبل‬ ‫سفلية‬ ‫فاصلة‬ ‫ضع‬ ‫بساطة‬ ‫بكل‬،‫بسيط‬ ‫تعبير‬ ‫عن‬ ‫عبارة‬ ‫وليس‬ ‫المجموعات‬ ‫فئة‬ ‫من‬ ‫هو‬ ‫القوسين‬
.‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫هو‬ ‫القوسين‬ ‫بين‬ ‫ما‬ ‫أن‬ ‫بايثون‬ ‫تخبر‬ ‫وبذلك‬ ،‫القوسين‬ ‫إقفال‬
‫في‬ ‫كما‬ ‫المجموعات‬ ‫إنشاء‬ ‫في‬ ‫ل‬ ‫أو‬ ‫اﻷقواس‬ ‫وضع‬ ‫في‬ ‫الحرية‬ ‫لك‬ ‫تتيح‬ ‫بايثون‬ ‫فإن‬ ‫خاصة‬ ‫وكحالة‬
‫تضمن‬ ‫ﻷنها‬ ‫اﻷقواس‬ ‫تستخدم‬ ‫بأن‬ ‫الفرص‬ ‫لك‬ ‫سمحت‬ ‫إذا‬ ‫دائما‬ ‫يفضل‬ ‫ولكن‬ ،‫الرابع‬ ‫الصف‬
.‫التشويش‬ ‫عدم‬ ‫لك‬
‫النصية‬ ‫السلسل‬ ‫على‬ ‫لمثيلتها‬ ‫تماما‬ ‫مشابهة‬ ‫فهي‬ ‫السابق‬ ‫الجدول‬ ‫في‬ ‫اﻷخيرة‬ ‫العمليات‬ ‫في‬
‫بايثون‬ ‫مفسر‬ ‫على‬ ‫أنت‬ ‫تتطبقها‬ ‫أن‬ ‫يكفي‬ ‫فقط‬ ، ‫أخرى‬ ‫مرة‬ ‫لشرحها‬ ‫داعي‬ ‫يوجد‬ ‫ل‬ ‫فلذا‬ ‫والقوائم‬
.‫لها‬ ‫فهمك‬ ‫من‬ ‫للتأكد‬
‫المجموعات؟‬ ‫نستخدم‬ ‫لماذا‬
‫هذا‬ ‫يكون‬ ‫قد‬ ‫القوائم؟‬ ‫عندنا‬ ‫كان‬ ‫إذا‬ ‫المجموعات‬ ‫نستخدم‬ ‫لماذا‬ ‫للمبتدئ‬ ‫يتبادر‬ ‫سؤال‬ ‫أول‬
‫باستخدام‬ ‫يمكن‬ ‫مثل‬ ،‫مميزات‬ ‫من‬ ‫العديد‬ ‫يوفر‬ ‫المجموعات‬ ‫ثبات‬ ‫أن‬ ‫إجابة‬ ‫أفضل‬ ‫ولكن‬ ‫تاريخيا‬
.‫البرنامج‬ ‫في‬ ‫آخر‬ ‫مكان‬ ‫في‬ ‫أخرى‬ ‫مراجع‬ ‫باستخدام‬ ‫تتغير‬ ‫ل‬ ‫الكائنات‬ ‫أن‬ ‫التأكد‬ ‫المجموعات‬
‫القوائم‬ ‫استخدم‬ ‫عام‬ ‫وبشكل‬ ،‫القوائم‬ ‫وليس‬ ‫المجموعات‬ ‫إلى‬ ‫تحتاج‬ ‫المدمجة‬ ‫العمليات‬ ‫بعض‬
.‫المجموعات‬ ‫فاستخدم‬ ‫الحالت‬ ‫بقية‬ ‫في‬ ‫أما‬ ‫التغيير‬ ‫عليها‬ ‫يطرأ‬ ‫التي‬ ‫المنظمة‬ ‫المجموعات‬ ‫في‬
29
‫الملفات‬
‫في‬ ‫المعلومات‬ ‫تخزن‬ ‫التي‬ ‫الملفات‬ ‫أسماء‬ ‫فكرة‬ ‫عن‬ ‫خلفية‬ ‫عندهم‬ ‫القراء‬ ‫معظم‬ ‫أن‬ ‫أمل‬ ‫على‬
‫الوصول‬ ‫بطريقة‬ ‫يزودنا‬ ‫بايثون‬ ‫في‬ ‫مدمج‬ ‫كائن‬ ‫آخر‬ ‫يكون‬،‫التشغيل‬ ‫نظام‬ ‫يديرها‬ ‫التي‬ ‫و‬ ‫الكميبوتر‬
‫مدمجة‬ ‫الدالة‬ ‫إن‬.‫بايثون‬ ‫برامج‬ ‫ضمن‬ ‫الملفات‬ ‫تلك‬ ‫إلى‬
open
‫وهي‬ ‫بايثون‬ ‫في‬ ‫الملف‬ ‫كائن‬ ‫تنشأ‬
‫الدالة‬ ‫مناداة‬ ‫بعد‬،‫جهازنا‬ ‫على‬ ‫المستقر‬ ‫الملف‬ ‫إلى‬ ‫الربط‬ ‫خدمة‬ ‫لنا‬ ‫تقدم‬
open
‫القراءة‬ ‫يمكننا‬،
.‫ملف‬ ‫الكائن‬ ‫دوال‬ ‫بمناداة‬،‫المربوط‬ ‫الملف‬ ‫من‬ ‫والكتابة‬
‫كائنات‬ ‫و‬ ‫عددا‬ ‫ليس‬ ‫ﻷنه‬ ،‫قليل‬ ‫غريبا‬ ‫سنجده‬ ‫اﻷخرى‬ ‫بالكائنات‬ ‫الملفات‬ ‫كائن‬ ‫مقارنة‬ ‫عند‬
‫وهذا‬ ،‫الملفات‬ ‫في‬ ‫الشائعة‬ ‫العمليات‬ ‫لمعالجة‬ ‫دوال‬ ‫استخدام‬ ‫هو‬ ‫إنما‬ ،‫خرائطية‬ ‫أو‬ ‫متسلسلة‬
‫وهو‬،‫والدخل‬ ‫الخرج‬ ‫معالجة‬ ‫مجال‬ ‫في‬ ‫يدرس‬ ‫وإنما‬ ، ‫اﻷخرى‬ ‫اللغات‬ ‫في‬ ‫موجودا‬ ‫ليس‬ ‫الكائن‬
.‫الملفات‬ ‫لمعالجة‬ ‫أخرى‬ ‫دوال‬ ‫يستخدم‬ ‫إنما‬ ‫و‬ ‫مستقل‬ ‫ليس‬
‫الدالة‬ ‫مناداة‬ ‫يجب‬ ‫الملف‬ ‫لفتح‬ ،‫الملفات‬ ‫على‬ ‫العلميات‬ ‫ﻷهم‬ ‫ملخص‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬
open
‫للقراء‬ ‫الملف‬ ‫معاملة‬ ‫طريقة‬ ‫الثاني‬ ‫و‬، ‫مساره‬ ‫مع‬ ‫الملف‬ ‫اسم‬ ‫اﻷول‬ ‫بمعاملين‬ ‫تزويدها‬ ‫و‬
r
‫للكتابة‬
w
‫الملف‬ ‫آخر‬ ‫في‬ ‫للكتابة‬
a
‫سلسل‬ ‫يكونا‬ ‫أن‬ ‫يجب‬ ‫المعاملين‬ ‫كل‬ ‫أن‬ ‫ملحظة‬ ‫مع‬ ،
:‫نصية‬
‫العملية‬
‫الوصف‬
output = open('/tmp/spam', 'w')
‫ملف‬ ‫إنشاء‬
output
‫الكتابة‬ ‫نمط‬ ‫في‬
input = open('data', 'r')
‫ملف‬ ‫إنشاء‬
output
‫القراءة‬ ‫نمط‬ ‫في‬
S = input.read()
‫سلسل‬ ‫إلى‬ ‫بالكامل‬ ‫الملف‬ ‫خرج‬ ‫اسناد‬
‫نصية‬
S = input.read(N)
‫قراءة‬
N
)‫أكثر‬ ‫أو‬ ‫(واحد‬ ‫البايتات‬ ‫من‬
S = input.readline()
‫التالي‬ ‫السطر‬ ‫قراءة‬
L = input.readlines()
‫بحيث‬ ‫قائمة‬ ‫في‬ ‫ووضعه‬ ‫الملف‬ ‫خرج‬ ‫قراءة‬
‫في‬ ‫عنصر‬ ‫يساوي‬ ‫الملف‬ ‫في‬ ‫سطر‬ ‫كل‬
‫القائمة‬
output.write(S)
‫كتابة‬
S
‫الملف‬ ‫داخل‬
output
output.writelines(L)
‫في‬ ‫النصية‬ ‫السلسلة‬ ‫أسطر‬ ‫جميع‬ ‫كتابة‬
‫قائمة‬
L
‫الملف‬ ‫داخل‬
output
output.close()
‫يمكن‬ ‫ل‬ ‫الملف‬ ‫إغلق‬ ‫بعد‬ ،‫الملف‬ ‫إغلق‬
‫خطأ‬ ‫ويعطي‬ ‫عليه‬ ‫الكتابة‬ ‫أو‬ ‫منه‬ ‫القراءة‬
‫ذلك‬ ‫محاولة‬ ‫عند‬
30
‫محتويات‬ ‫مع‬ ‫تتعامل‬ ‫بايثون‬ ‫الحالت‬ ‫كل‬ ‫وفي‬ ،‫منه‬ ‫والقراءة‬ ‫الكتابة‬ ‫يمكنك‬ ‫للملف‬ ‫إنشائك‬ ‫عند‬
‫كسلسل‬ ‫تعاملها‬ ‫فهي‬ ‫الملفات‬ ‫إلى‬ ‫الكتابة‬ ‫عند‬ ‫وكذلك‬ ،‫أعداد‬ ‫كانت‬ ‫ولو‬ ‫نصية‬ ‫كسلسل‬ ‫الملف‬
‫كل‬ ‫على‬ ‫للحصول‬ ‫بايثون‬ ‫وثائق‬ ‫مراجعة‬ ‫يمكنك‬ ‫و‬ ‫العمليات‬ ‫أهم‬ ‫يحوي‬ ‫السابق‬ ‫الجدول‬ ،‫النصية‬
.‫الملفات‬ ‫عمليات‬
‫الملف‬ ‫إغلق‬ ‫عملية‬
close
‫وهي‬ ‫الخارجي‬ ‫والملف‬ ‫البرنامج‬ ‫بين‬ ‫التصال‬ ‫إغلق‬ ‫على‬ ‫تعمل‬ ،
‫بغلق‬ ‫يقوم‬ ‫نفايات‬ ‫مجمع‬ ‫تملك‬ ‫بايثون‬ ‫أن‬ ‫تعلم‬ ‫كما‬ ‫ولكن‬ ،‫الذاكرة‬ ‫من‬ ‫مساحة‬ ‫لتحرير‬ ‫مهم‬
‫الصغيرة‬ ‫البرامج‬ ‫في‬ ‫لتضر‬ ‫الملف‬ ‫إغلق‬ ‫وعملية‬ ،‫تلقائي‬ ‫إليه‬ ‫حاجة‬ ‫في‬ ‫تكون‬ ‫ل‬ ‫عندما‬ ‫التصال‬
‫بنفسك‬ ‫الملفات‬ ‫غلق‬ ‫عن‬ ‫تتهاون‬ ‫أل‬ ‫يجب‬ ‫كبيرة‬ ‫أنظمة‬ ‫على‬ ‫العمل‬ ‫عند‬ ‫ولكن‬ ،‫سكربتات‬ ‫مثل‬
.‫جيدا‬ ‫أداء‬ ‫لتضمن‬ ‫النفايات‬ ‫مجمع‬ ‫على‬ ‫العتماد‬ ‫وعدم‬
‫الملفات‬ ‫على‬ ‫العمل‬
‫ممط‬‫م‬‫نم‬ ‫ممي‬‫م‬‫ف‬ ‫ملف‬ ‫ممح‬‫م‬‫بفت‬ ‫مما‬‫م‬‫قمن‬ ‫ممء‬‫م‬‫شي‬ ‫أول‬ ،‫الملفات‬ ‫على‬ ‫ممل‬‫م‬‫العم‬ ‫ممة‬‫م‬‫كيفي‬ ‫ممح‬‫م‬‫يوض‬ ‫مميط‬‫م‬‫بس‬ ‫مثال‬ ‫مما‬‫م‬‫هن‬
‫يعطيمه‬ ‫و‬ ‫جديمد‬ ‫ملف‬ ‫بإنشاء‬ ‫يقوم‬ ‫يجده‬ ‫لم‬ ‫فإن‬ ‫المعطمى‬ ‫السمم‬ ‫عمن‬ ‫بالبحمث‬ ‫المفسمر‬ ‫فيقوم‬،‫الكتابمة‬
‫إعطاءه‬ ‫ملحظمة‬ ‫ممع‬ ‫واحمد‬ ‫سمطر‬ ‫المنشمئ‬ ‫الملف‬ ‫فمي‬ ‫بالكتابمة‬ ‫قمنما‬ ‫ثمم‬ ،‫إياه‬ ‫أعطيناه‬ ‫الذي‬ ‫السمم‬
‫السمطر‬ ‫بقراءة‬ ‫وقمنما‬ ‫القراءة‬ ‫نممط‬ ‫فمي‬ ‫بفتحمه‬ ‫قمنما‬ ‫ثمم‬ ،‫الملف‬ ‫بإغلق‬ ‫قمنما‬ ‫ثمم‬ ،‫جديمد‬ ‫سمطر‬ ‫علممة‬
:‫فارغ‬ ‫الثاني‬ ‫السطر‬ ‫ﻷنه‬ ‫فراغ‬ ‫الناتج‬ ‫فأعطنا‬ ‫الثاني‬ ‫السطر‬ ‫قراءة‬ ‫حاولنا‬ ‫ثم‬،‫منه‬ ‫اﻷول‬
>>> myfile = open('myfile', 'w') # open for output (creates)
>>> myfile.write('hello text filen') # write a line of text
>>> myfile.close()
>>> myfile = open('myfile', 'r') # open for input
>>> myfile.readline() # read the line back
'hello text file012'
>>> myfile.readline() # empty string: end of file
''
:‫الملفات‬ ‫حول‬ ‫الملحظات‬ ‫بعض‬ ‫وهناك‬
–
‫اﻹصدار‬ ‫من‬
2.2
‫الدالة‬ ‫استبدلت‬ ‫لبايثون‬
open
‫بالدالة‬
file
‫الدالة‬ ‫استخدام‬ ‫فيمكنك‬
31
file
‫للدالة‬ ‫كقناع‬ ‫تعمل‬ ‫ﻷنها‬ ‫السابقة‬ ‫الدالة‬ ‫استخدام‬ ‫يمكنك‬ ‫وكذلك‬ ،‫السابقة‬ ‫الدالة‬ ‫مكان‬
‫الجديدة‬ ‫اﻹصدارات‬ ‫في‬ ‫الجديدة‬
–
‫الدالة‬ ‫باستخدام‬ ‫ثانية‬ ‫مرة‬ ‫عرضه‬ ‫عند‬ ‫الملف‬ ‫و‬ ‫واحدة‬ ‫مرة‬ ‫تتم‬ ‫الملف‬ ‫قراءة‬ ‫أن‬ ‫لحظ‬
read
‫اﻹصدار‬ ‫على‬ ‫لحظته‬ ‫ما‬ ‫ثانية(هذا‬ ‫مرة‬ ‫الملف‬ ‫قراءة‬ ‫إعادة‬ ‫فيجب‬ ،‫فراغ‬ ‫ويعطي‬ ‫عرضه‬ ‫يتم‬ ‫ل‬
2.3
)‫بايثون‬ ‫من‬
‫للكائنات‬ ‫العامة‬ ‫الخصائص‬
‫الخصائص‬ ‫عن‬ ‫سريعة‬ ‫جولة‬ ‫نأخذ‬ ‫دعنا‬ ،‫بايثون‬ ‫في‬ ‫المدمجة‬ ‫الكائنات‬ ‫جميع‬ ‫أنهينا‬ ‫أن‬ ‫وبعد‬ ‫اﻵن‬
.‫فيها‬ ‫تتشارك‬ ‫التي‬ ‫باثيون‬ ‫في‬ ‫المدمجة‬ ‫للكائنات‬ ‫العامة‬
‫الكائنات‬ ‫تصنيف‬
:‫سابقا‬ ‫رأيناها‬ ‫التي‬ ‫اﻷنواع‬ ‫جميع‬ ‫يصنف‬ ‫التالي‬ ‫الجدول‬
‫الكائن‬ ‫نوع‬
‫صنفه‬
‫للتوسع؟‬ ‫قابل‬
‫اﻷعداد‬
Numbers
‫عددي‬
‫ل‬
‫النصية‬ ‫السلسل‬
Strings
‫متسلسل‬
‫ل‬
‫القوائم‬
Lists
‫متسلسل‬
‫نعم‬
‫القواميس‬
Dictionaries
‫تخطيطي‬
‫نعم‬
‫المجموعات‬
Tuples
‫متسلسل‬
‫ل‬
‫الملفات‬
Files
‫امتدادي‬
N/A
‫أن‬ ‫و‬،‫متسلسلة‬ ‫أنها‬ ‫في‬ ‫تشترك‬ ‫والمجموعات‬ ‫القوائم‬ ‫و‬ ‫النصية‬ ‫السلسل‬ ‫فإن‬ ‫الجدول‬ ‫من‬ ‫نرى‬ ‫كما‬
‫تستخدم‬ ‫الملفات‬ .‫فل‬ ‫غيرها‬ ‫أما‬ ‫فقط‬ ‫اﻹنكماش‬ ‫و‬ ‫التوسع‬ ‫قابلية‬ ‫تدعم‬ ‫فقط‬ ‫القواميس‬ ‫و‬ ‫القوائم‬
‫ليس‬ ‫ولكن‬ ،‫الكتابة‬ ‫يتم‬ ‫حين‬ ‫تتوسع‬ ‫صحيح‬ ،‫بالضبط‬ ‫للتوسع‬ ‫قابلة‬ ‫ليست‬ ‫فهي‬،‫للتوسع‬ ‫دوال‬
.‫اﻷنواع‬ ‫على‬ ‫بايثون‬ ‫تفرضها‬ ‫التي‬ ‫بالقيود‬
‫العمومية‬
:‫نقول‬ ‫أن‬ ‫نستطيع‬ ‫عام‬ ‫وبشكل‬ ،‫المركبة‬ ‫الكائنات‬ ‫من‬ ‫العديد‬ ‫رأينا‬ ‫لقد‬
‫الكائنات‬ ‫من‬ ‫نوع‬ ‫أي‬ ‫تخزن‬ ‫أن‬ ‫يمكنها‬ ‫والمجموعات‬ ‫والقواميس‬ ‫القوائم‬-
‫المركب‬ ‫التداخل‬ ‫تدعم‬ ‫والمجموعات‬ ‫والقواميس‬ ‫القوائم‬-
32
‫دينامكيا‬ ‫وتصغر‬ ‫تكبر‬ ‫أن‬ ‫تستطيع‬ ‫والقواميس‬ ‫القوائم‬-
‫في‬ ‫المركبة‬ ‫المعلومات‬ ‫للتمثيل‬ ‫جدا‬ ‫مناسبة‬ ‫فهي‬ ‫المركب‬ ‫التداخل‬ ‫تدعم‬ ‫الكائنات‬ ‫هذه‬ ‫أن‬ ‫بسبب‬
:‫التالي‬ ‫المثال‬ ‫إلى‬ ‫انظر‬،‫التطبيق‬
>>> L = ['abc', [(1, 2), ([3], 4)], 5]
>>> L[1]
[(1, 2), ([3], 4)]
>>> L[1][1]
([3], 4)
>>> L[1][1][0]
[3]
>>> L[1][1][0][0]
3
‫عن‬ ‫اﻷعضاء‬ ‫إلى‬ ‫بالوصول‬ ‫قمنا‬ ‫قم‬ ‫ثم‬ ،‫متداخلة‬ ‫ومجموعات‬ ‫قوائم‬ ‫على‬ ‫تحوي‬ ‫قائمة‬ ‫بإنشاء‬ ‫قمنا‬
‫الكائن‬ ‫موقع‬ ‫إلى‬ ‫الوصول‬ ‫في‬ ‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫تبدأ‬ ‫بايثون‬ ‫أن‬ ‫لحظ‬ ،‫المفهرس‬ ‫طريق‬
‫حتى‬ ‫مرة‬ ‫كل‬ ‫في‬ ‫المراد‬ ‫الكائن‬ ‫إلى‬ ‫الوصول‬ ‫في‬ ‫تعمقنا‬ ‫كيف‬ ‫ولحظ‬ ،‫المفهرس‬ ‫باستخدام‬
‫تقدمه‬ ‫وما‬ ‫المعطيات‬ ‫بنى‬ ‫في‬ ‫التداخل‬ ‫أهمية‬ ‫تعلم‬ ‫هنا‬ ‫ومن‬ ،‫بالضبط‬ ‫المراد‬ ‫الكائن‬ ‫إلى‬ ‫وصلنا‬
.‫اﻷغراض‬ ‫لتأدية‬ ‫سهلة‬ ‫أدوات‬ ‫من‬ ‫بايثون‬
‫المشتركة‬ ‫المراجع‬
‫أغلب‬ ‫في‬ ‫تريده‬ ‫ما‬ ‫هذا‬ ‫وعمليا‬،‫عنها‬ ‫نسخة‬ ‫وليس‬ ‫الكائنات‬ ‫إلى‬ ‫مراجع‬ ‫نخزن‬ ‫إننا‬ ‫سابقا‬ ‫قلنا‬ ‫لقد‬
‫مشتركة‬ ‫مراجع‬ ‫هناك‬ ‫كانت‬ ‫إذا‬ ‫وخاصة‬ ‫النقطة‬ ‫هذه‬ ‫في‬ ‫التركيز‬ ‫عليك‬ ‫ينبغى‬ ‫أحيانا‬ ‫ولكن‬،‫اﻷحيان‬
‫قائمة‬ ‫أنشأنا‬ ‫إذا‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫النتائج‬ ‫كل‬ ‫يغيير‬ ‫اﻷصلي‬ ‫المرجع‬ ‫في‬ ‫تغيير‬ ‫أي‬ ‫فإن‬
X
‫ثم‬
‫أخرى‬ ‫قائمة‬ ‫بإنشاء‬ ‫قمنا‬
L
‫القائمة‬ ‫إلى‬ ‫مرجعا‬ ‫وضمناها‬
X
‫قاموس‬ ‫إنشاء‬ ‫قمنا‬ ‫ثم‬
D
‫ضمنا‬ ‫وكذلك‬
‫القائمة‬ ‫إلى‬ ‫مرجع‬ ‫مدخلته‬ ‫قيم‬ ‫أحد‬
X
:‫التالي‬ ‫الشكل‬ ‫على‬ ‫المثال‬ ‫سيكون‬
>>> X = [1, 2, 3]
>>> L = ['a', X, 'b']
>>> D = {'x':X, 'y':2}
‫القائمة‬ ‫إلى‬ ‫مرجعين‬ ‫هناك‬ ‫الحالة‬ ‫هذه‬ ‫في‬
X
،‫إليها‬ ‫جديدة‬ ‫قيم‬ ‫إسناد‬ ‫تقبل‬ ‫القوائم‬ ‫أن‬ ‫وبما‬ ،
:‫جديدة‬ ‫قيمة‬ ‫إسناد‬ ‫عند‬ ‫يحدث‬ ‫ماذا‬ ‫فانظر‬
33
>>> X[1] = 'surprise' # changes all three references!
>>> L
['a', [1, 'surprise', 3], 'b']
>>> D
{'x': [1, 'surprise', 3], 'y': 2}
.‫النقطة‬ ‫لهذه‬ ‫منتبها‬ ‫فكنا‬
، ‫المقارنة‬
‫والمساواة‬
‫التحقق‬ ‫و‬
‫أعداد‬ ‫وكأنها‬ ،‫بينها‬ ‫فيما‬ ‫التحقق‬ ‫وعمليات‬ ‫المقارنة‬ ‫لعمليات‬ ‫تستجيب‬ ‫بايثون‬ ‫في‬ ‫كائنات‬ ‫جميع‬
:‫التالي‬ ‫المثال‬ ‫إلى‬ ‫انظر‬ ،‫المقارنات‬ ‫هذه‬ ‫بمثل‬ ‫تسمح‬ ‫ل‬ ‫التي‬ ‫اللغات‬ ‫من‬ ‫كثير‬ ‫بخلف‬ ‫وهذا‬
>>> L1 = [1, ('a', 3)] # same value, unique objects
>>> L2 = [1, ('a', 3)]
>>> L1 == L2, L1 is L2 # equivalent?, same object?
(True, False)
:‫التالي‬ ‫المثال‬ ‫وانظر‬ ،‫التحقق‬ ‫علقة‬ ‫و‬ ‫المساواة‬ ‫علقة‬ ‫اختبرنا‬ ‫وهنا‬
>>> L1 = [1, ('a', 3)]
>>> L2 = [1, ('a', 2)]
>>> L1 < L2, L1 == L2, L1 > L2 # less, equal, greater: a tuple of results?
(False, False, True)
:‫بايثون‬ ‫في‬ ‫المختلفة‬ ‫الكائنات‬ ‫بين‬ ‫المقارنة‬ ‫في‬ ‫ملحظات‬ ‫عدة‬ ‫وهنا‬
–
‫التقريبية‬ ‫بمقاديرها‬ ‫تقارن‬ ‫اﻷعداد‬
–
"‫أي‬ ‫بحرف‬ ‫حرفا‬ ‫أي‬ ،‫معجميا‬ ‫تقارن‬ ‫النصية‬ ‫السلسل‬
abc" < "ac
‫أن‬ ‫لحظ‬ "
c
‫أكبر‬
‫من‬
b
‫المعجم‬ ‫في‬
–
‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫يقابله‬ ‫ما‬ ‫مع‬ ‫عنصر‬ ‫كل‬ ‫تقارن‬ ‫والمجموعات‬ ‫القوائم‬
–
‫والقيمة‬ ‫المفتاح‬ ‫من‬ ‫المخزنة‬ ‫القائمة‬ ‫باستخدام‬ ‫أيضا‬ ‫تقارن‬ ‫القواميس‬
‫مهمة‬ ‫تلميحات‬
‫مع‬ ‫أعمق‬ ‫بشكل‬ ‫بايثون‬ ‫فهم‬ ‫على‬ ‫تساعدك‬ ‫وحيل‬ ‫تلميحات‬ ‫سنأخذ‬ ‫فصل‬ ‫كل‬ ‫من‬ ‫القسم‬ ‫هذا‬ ‫في‬
:‫اللغة‬ ‫في‬ ‫مبتدئ‬ ‫أنت‬ ‫و‬ ‫إجابة‬ ‫لها‬ ‫تعرف‬ ‫ول‬ ‫تواجهك‬ ‫قد‬ ‫مشاكل‬ ‫حل‬
34
‫المشتركة‬ ‫المراجع‬ ‫إسناد‬
‫إلى‬ ‫يؤدي‬ ‫فهمها‬ ‫عدم‬ ‫النقطة؛ﻷن‬ ‫هذه‬ ‫شرح‬ ‫نكرر‬ ‫ونعود‬ ،‫مسبقا‬ ‫النقطة‬ ‫هذا‬ ‫عن‬ ‫تكلمنا‬ ‫قد‬
‫سنقوم‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫برنامجك‬ ‫ضمن‬ ‫المشتركة‬ ‫المراجع‬ ‫في‬ ‫يجري‬ ‫ما‬ ‫فهم‬ ‫في‬ ‫غموض‬
‫قائمة‬ ‫بإنشاء‬
L
‫قائمة‬ ‫بإنشاء‬ ‫نقوم‬ ‫ثم‬
M
‫القائمة‬ ‫نضمنها‬
L
‫القائمة‬ ‫في‬ ‫جديدة‬ ‫قيمة‬ ‫بإسناد‬ ‫نقوم‬ ‫ثم‬
L
:‫يحدث‬ ‫ماذا‬ ‫انظر‬ ،
>>> L = [1, 2, 3]
>>> M = ['X', L, 'Y'] # embed a reference to L
>>> M
['X', [1, 2, 3], 'Y']
>>> L[1] = 0 # changes M too
>>> M
['X', [1, 0, 3], 'Y']
‫تلميح‬
‫بما‬ ‫تقوم‬ ‫المشتركة‬ ‫المراجع‬ ‫وعادة‬ ،‫الضخمة‬ ‫البرامج‬ ‫في‬ ‫فقط‬ ‫مهما‬ ‫يكون‬ ‫الجزئية‬ ‫هذه‬ ‫تأثير‬ ‫إن‬
‫أضف‬ ‫بساطة‬ ‫بكل‬ ‫تفعل؟‬ ‫فماذا‬ ‫مرجع‬ ‫وليس‬ ‫نسخة‬ ‫تسند‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫ولكن‬ ،‫بالضبط‬ ‫تريده‬
:‫التالي‬ ‫الشكل‬ ‫على‬ ‫نقطتين‬
>>> L = [1, 2, 3]
>>> M = ['X', L[:], 'Y'] # embed a copy of L
>>> L[1] = 0 # only changes L, not M
>>> L
[1, 0, 3]
>>> M
['X', [1, 2, 3], 'Y']
‫واحد‬ ‫مستوى‬ ‫على‬ ‫التكرار‬
‫هذا‬،‫المرات‬ ‫من‬ ‫عدد‬ ‫السلسلة‬ ‫إعادة‬ ‫عن‬ ‫عبارة‬ ‫أنه‬ ‫قلنا‬ ‫السلسلة‬ ‫تكرار‬ ‫عن‬ ‫سابقا‬ ‫تكلمنا‬ ‫عندما‬
‫انظر‬ ،‫بالضبط‬ ‫تريده‬ ‫عما‬ ‫تختلف‬ ‫النتيجة‬ ‫تكون‬ ‫متداخلة‬ ‫السلسلة‬ ‫تكون‬ ‫عندما‬ ‫ولكن‬ ‫صحيح‬ ‫اﻷمر‬
:‫التالي‬ ‫المثال‬ ‫إلى‬
35
>>> L = [4, 5, 6]
>>> X = L * 4 # like [4, 5, 6] + [4, 5, 6] + ...
>>> Y = [L] * 4 # [L] + [L] + ... = [L, L,...]
>>> X
[4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6]
>>> Y
[[4, 5, 6], [4, 5, 6], [4, 5, 6], [4, 5, 6]]
‫قيمة‬ ‫بإسناد‬ ‫نقوم‬ ‫عندما‬ ‫يتجلى‬ ‫أيضا‬ ‫الفرق‬ ‫وهذا‬ ،‫القوسين‬ ‫وضعنا‬ ‫عندما‬ ‫عندما‬ ‫الفرق‬ ‫لحظ‬
‫القائمة‬ ‫إلى‬ ‫جديدة‬
L
:‫التالي‬ ‫المثال‬ ‫انظر‬
>>> L[1] = 0 # impacts Y but not X
>>> X
[4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6]
>>> Y
[[4, 0, 6], [4, 0, 6], [4, 0, 6], [4, 0, 6]]
‫تلميح‬
‫التلميح‬ ‫طبق‬ ‫فقط‬ ‫المشكلة‬ ‫هذه‬ ‫تحل‬ ‫ولكي‬ ،‫المشتركة‬ ‫المراجع‬ ‫متاهات‬ ‫من‬ ‫ثانية‬ ‫حالة‬ ‫هذه‬
.‫منتبها‬ ‫فكن‬ ‫التقطيع‬ ‫و‬ ‫الجمع‬ ‫أيضا‬ ‫ينطبق‬ ‫وهذا‬،‫السابق‬
‫مكانها‬ ‫في‬ ‫تتغير‬ ‫أن‬ ‫يمكن‬ ‫ل‬ ‫الثابتة‬ ‫اﻷنواع‬
‫إذا‬ ‫ولكن‬ ،‫والمجموعات‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬ ‫تغيير‬ ‫يمكن‬ ‫ل‬ ‫الثابتة‬ ‫اﻷنواع‬ ‫أن‬ ‫سابقا‬ ‫علينا‬ ‫مر‬ ‫كما‬
:‫التالي‬ ‫المثال‬ ‫انظر‬ ‫جديدة‬ ‫نسخة‬ ‫إنشاء‬ ‫إلى‬ ‫فتضطر‬ ‫تغيرها‬ ‫أن‬ ‫أردت‬
T = (1, 2, 3)
T[2] = 4 # error!
T = T[:2] + (4,) # okay: (1, 2, 4)
‫تلميح‬
‫التقطيع‬ ‫ميزة‬ ‫باستخدام‬ ‫السابق‬ ‫الكائن‬ ‫إليه‬ ‫نسند‬ ‫ثم‬ ‫جديدة‬ ‫كائن‬ ‫بإنشاء‬ ‫نقوم‬، ‫جديدة‬ ‫نسخة‬ ‫ﻹنشاء‬
‫السابق‬ ‫المثال‬ ‫مثل‬ ‫إضافته‬ ‫نريد‬ ‫ما‬ ‫إليه‬ ‫نضيف‬ ‫ثم‬
36
‫الملخص‬
‫ببنة‬ ‫بدأنا‬،‫بايثون‬ ‫في‬ ‫الكائنات‬ ‫بأنواع‬ ‫تتعلق‬ ‫التي‬ ‫المواضيع‬ ‫من‬ ‫العديد‬ ‫تناولنا‬ ‫الفصل‬ ‫هذا‬ ‫في‬
‫أخير‬ ‫ثم‬ ‫والمجموعات‬ ‫القواميس‬ ‫و‬ ‫القوائم‬ ‫ثم‬ ‫النصية‬ ‫السلسل‬ ‫و‬ ‫اﻷعداد‬ ‫ثم‬ ‫بايثون‬ ‫في‬ ‫البرامج‬
‫أهم‬ ‫باستعراض‬ ‫قمنا‬ ‫ثم‬ ‫بايثون‬ ‫في‬ ‫المدمجة‬ ‫للكائنات‬ ‫العامة‬ ‫الخصائص‬ ‫أهم‬ ‫أخذنا‬ ‫ثم‬ ‫الملفات‬
.‫بايثون‬ ‫في‬ ‫بالكائنات‬ ‫تتعلق‬ ‫التي‬ ‫المشكلة‬
‫القادمة‬ ‫الفصول‬ ‫في‬ ،‫اﻷساسية‬ ‫اﻷشياء‬ ‫لتبيين‬ ‫خصصت‬ ‫بأنها‬ ‫تميزت‬ ‫الفصل‬ ‫هذا‬ ‫في‬ ‫اﻷمثلة‬
.‫واقعية‬ ‫أكثر‬ ‫اﻷمثلة‬ ‫ستكون‬
37
‫الثالث‬ ‫الفصل‬
:
‫اﻷساسية‬ ‫التعابير‬
:‫المهمة‬ ‫النقاط‬
‫السناد‬
Print
‫الختبار‬ ‫جملة‬
if
‫التكرارية‬ ‫الحلقة‬
while
‫التكرارية‬ ‫الحلقة‬
for
‫تلميحات‬
‫المخلص‬
‫سنتحرك‬ ،‫السابق‬ ‫الفصل‬ ‫في‬ ‫بايثون‬ ‫في‬ ‫المدمجة‬ ‫للكائنات‬ ‫اﻷساسية‬ ‫اﻷنواع‬ ‫رأينا‬ ‫أن‬ ‫وبعد‬ ‫اﻵن‬
‫نكتبها‬ ‫أشياء‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫التعابير‬ ‫بساطة‬ ‫وبكل‬ .‫اﻷساسية‬ ‫التعابير‬ ‫أنواع‬ ‫لشرح‬ ‫الفصل‬ ‫هذا‬ ‫في‬
.‫بالضبط‬ ‫يفعله‬ ‫أن‬ ‫البرنامج‬ ‫على‬ ‫ما‬ ‫بايثون‬ ‫تخبر‬
،‫بايثون‬ ‫في‬ ‫البرنامج‬ ‫بنية‬ ‫عن‬ ‫تكلمنا‬ ‫لما‬ ‫الثاني‬ ‫الفصل‬ ‫في‬ ‫قلناه‬ ‫ما‬ ‫نسترجع‬ ‫بايثون‬ ‫في‬ ‫التعابير‬ ‫ولفهم‬
:‫كالتالي‬ ‫تكون‬ ‫البرنامج‬ ‫هرمية‬ ‫أن‬ ‫وقلنا‬
١
‫وحدات‬ ‫من‬ ‫يتكون‬ ‫البرنامج‬ -
٢
‫عبارات‬ ‫على‬ ‫تحتوي‬ ‫الوحدات‬ ‫و‬ -
٣
.‫تعالجها‬ ‫و‬ ‫الكائنات‬ ‫تنشأ‬ ‫العبارات‬ ‫و‬ -
‫ذلك‬ ‫على‬ ‫علوة‬،-‫السابق‬ ‫الفصل‬ ‫في‬ ‫علينا‬ ‫مرت‬ ‫التي‬- ‫الكائنات‬ ‫تعالج‬ ‫التي‬ ‫هي‬ ‫التعابير‬ ‫إذا‬
‫من‬ ‫جديدة‬ ‫أنواع‬ ‫تنشأ‬ ‫أيضا‬ ‫وكذلك‬ ،‫إليها‬ ‫قيم‬ ‫إسناد‬ ‫بواسطة‬ ‫الكائنات‬ ‫تنشأ‬ ‫التي‬ ‫هي‬ ‫التعابير‬
.‫والوحدات‬ ‫الدوال‬ ‫و‬ ‫الفصول‬ ‫مثل‬ ‫الكائنات‬
‫و‬ ‫اﻹسناد‬ ‫مثل‬ ‫الثاني‬ ‫الفصل‬ ‫في‬ ‫منها‬ ‫بعضا‬. ‫علينا‬ ‫مرت‬ ‫لقد‬،‫بايثون‬ ‫تعابير‬ ‫يلخص‬ ‫التالي‬ ‫الجدول‬
‫الحذف‬
del
‫تحتاج‬ ‫التي‬ ‫التعابير‬ ‫إل‬ ‫الجدول‬ ‫هذا‬ ‫في‬ ‫ورد‬ ‫ما‬ ‫معظم‬ ‫سنأخذ‬ ‫الفصل‬ ‫هذا‬ ‫في‬،
:‫التالية‬ ‫الفصول‬ ‫في‬ ‫سنأخذها‬ ‫و‬ ‫أكثر‬ ‫متطلبات‬ ‫إلى‬
38
‫التعبير‬
‫الدور‬
‫مثال‬
‫السناد‬
‫المراجع‬
curly, moe, larry = 'good', 'bad',
'ugly'
‫مناداة‬
‫الدوال‬
stdout.write("spam, ham,
toastn")
Print
‫الكائنات‬ ‫طباعة‬
print 'The Killer', joke
If/elif/else
‫الختيار‬ ‫عمليات‬
if "python" in text: print text
For/else
‫التكرار‬
for x in mylist: print x
While/else
‫العامة‬ ‫الحلقات‬
while 1: print 'hello'
Pass
‫المسؤلية‬
while 1: pass
Continue
‫الحلقات‬ ‫في‬ ‫قفز‬
while 1:
if not line: break
Try/except/finally
‫الستثناءات‬
try: action()
except: print 'action error'
Raise
‫الستثناء‬
raise endSearch, location
Import, From
‫الوحدات‬ ‫إلى‬ ‫الوصول‬
import sys; from sys import
stdin
Def, Return
‫الوسائل‬
def f(a, b, c=1, *d): return
a+b+c+d[0]
Class
‫الكائنات‬ ‫إنشاء‬
class subclass: staticData = []
Global
‫الفضاء‬ ‫اسم‬
def function(): global x, y; x =
'new'
Del
‫اﻷشياء‬ ‫حذف‬
del data[k]; del data[i:j]; del
obj.attr
Exec
‫اﻷكواد‬ ‫نصوص‬ ‫تشغيل‬
exec "import " + modName in
gdict, ldict
Assert
‫التنقيحات‬ ‫تأكيد‬
assert X > Y
‫السناد‬
‫تسند‬ ‫أن‬ ‫تريد‬ ‫الذي‬ ‫الهدف‬ ‫ستكتب‬ ‫أنك‬ ‫نقول‬ ‫بساطة‬ ‫وبكل‬،‫سابقا‬ ‫التعابير‬ ‫في‬ ‫السناد‬ ‫رأينا‬ ‫لقد‬
‫من‬ ‫الهدف‬ ‫و‬ ،= ‫يساوي‬ ‫علمة‬ ‫بينهما‬ ‫اليمين‬ ‫ناحية‬ ‫على‬ ‫إليه‬ ‫والمسند‬، ‫الشمال‬ ‫ناحية‬ ‫على‬ ‫إليه‬
‫الكائنات‬ ‫من‬ ‫نوع‬ ‫أي‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫إليه‬ ‫المسند‬ ‫أما‬ ، ‫كائن‬ ‫أو‬ ‫اسم‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫الشمال‬ ‫ناحية‬
.‫علينا‬ ‫مرت‬ ‫التي‬
‫في‬ ‫تضعها‬ ‫أن‬ ‫يجب‬ ‫الخائص‬ ‫بعض‬ ‫هناك‬ ‫ولكن‬ ، ‫بسيطة‬ ‫عملية‬ ‫اﻹسناد‬ ‫اﻷحيان‬ ‫معظم‬ ‫في‬
39
:‫ذهنك‬
‫مرجعية‬ ‫كائنات‬ ‫ينشئ‬ ‫السناد‬
‫تنشئ‬ ‫ودائما‬ ،‫معطيات‬ ‫بنى‬ ‫و‬ ‫أسماء‬ ‫في‬ ‫الكائنات‬ ‫إلى‬ ‫المراجع‬ ‫تخزن‬ ‫بايثون‬،‫سابقا‬ ‫رأيت‬ ‫كما‬
‫إلى‬ ‫ماتكون‬ ‫أقرب‬ ‫بايثون‬ ‫متغيرات‬ ‫تبدو‬ ‫ذلك‬ ‫بسبب‬.‫المراجع‬ ‫نسخ‬ ‫من‬ ‫بدل‬ ،‫الكائنات‬ ‫إلى‬ ‫مراجع‬
.‫معطيات‬ ‫مخزن‬ ‫من‬ ‫أكثر‬ ،‫السي‬ ‫لغة‬ ‫في‬ ‫المؤشرات‬
‫إسناد‬ ‫أول‬ ‫عند‬ ‫تنشئ‬ ‫اﻷسماء‬
‫إلى‬ ‫بحاجة‬ ‫ولست‬ ،‫إليها‬ ‫إسناد‬ ‫عملية‬ ‫أول‬ ‫عند‬ ‫بايثون‬ ‫في‬ ‫تنشئ‬ ‫المتغيرات‬ ‫أسماء‬ ‫أيضا‬ ‫رأينا‬ ‫وكما‬
‫كلها‬ ‫وليس‬ ‫المعطيات‬ ‫بنى‬ ‫وبعض‬،‫القيمة‬ ‫إليها‬ ‫تسند‬ ‫ثم‬ ‫أول‬ ‫المتغيرات‬ ‫اﻷسماء‬ ‫عن‬ ‫تعلن‬ ‫أن‬
‫الفصل‬ ‫في‬ ‫القواميس‬ ‫جزئية‬ ‫(راجع‬ ‫القواميس‬ ‫مثل‬ ‫اﻹسناد‬ ‫بواسطة‬ ‫فيها‬ ‫جديد‬ ‫إدخال‬ ‫تنشء‬
.)‫الثاني‬
‫استخدامها‬ ‫قبل‬ ‫اﻷسماء‬ ‫تسند‬ ‫أن‬ ‫يجب‬
‫من‬ ‫المزيد‬ ‫وستظهر‬ ‫بعد‬ ‫قيمة‬ ‫إليه‬ ‫تسند‬ ‫ولم‬ ‫السم‬ ‫استخدمت‬ ‫إذا‬ ‫خطأ‬ ‫بايثون‬ ‫تظهر‬ ‫بالمقابل‬
‫ذلك‬ ‫تفعل‬ ‫أن‬ ‫حاولت‬ ‫إذا‬ ‫الستثناءات‬
:‫الضمني‬ ‫السناد‬
import
‫و‬
from
‫و‬
del
‫و‬
class
..‫إلخ‬
‫في‬ ‫يحدث‬ ‫اﻹسناد‬ ‫ولكن‬، = ‫بالمعامل‬ ‫يتم‬ ‫اﻹسناد‬ ‫أن‬ ‫على‬ ‫تعودنا‬ ‫قد‬ ‫نحن‬ ‫الجزئية‬ ‫هذه‬ ‫في‬
‫كذلك‬ ‫و‬ ‫الدوال‬ ‫و‬ ‫الوحدات‬ ‫جلب‬ ‫رأينا‬ ‫لقد‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫بايثون‬ ‫في‬ ‫سياقات‬ ‫من‬ ‫العديد‬
،‫ضمني‬ ‫إسناد‬ ‫تعتبر‬ ‫كلها‬ ‫وهذه‬ ‫إلخ‬.. ‫التكرارية‬ ‫الحلقات‬ ‫تعابير‬ ‫و‬ ‫الدوال‬ ‫معاملت‬ ‫و‬ ‫الفصول‬
‫إلى‬ ‫السماء‬ ‫تسند‬ ‫ببساطة‬ ‫السياقات‬ ‫هذه‬ ‫جميع‬ ،‫ظهر‬ ‫أينما‬ ‫العمل‬ ‫نفس‬ ‫يعمل‬ ‫اﻹسناد‬ ‫أن‬ ‫وبما‬
.‫التنفيذ‬ ‫زمن‬ ‫في‬ ‫الكائنات‬ ‫مراجع‬
:‫بايثون‬ ‫لغة‬ ‫في‬ ‫اﻹسنادية‬ ‫التعابير‬ ‫نكهات‬ ‫يبين‬ ‫التالي‬ ‫الجدول‬
‫العلمية‬
‫تفسيرها‬
spam = 'Spam'
‫والعتيادية‬ ‫اﻷساسية‬ ‫الصيغة‬
spam, ham = 'yum', 'YUM'
)‫(اختياري‬ ‫المجموعي‬ ‫السناد‬
[spam, ham] = ['yum', 'YUM']
)‫(اختياري‬ ‫القوائم‬ ‫طريق‬ ‫عن‬ ‫السناد‬
spam = ham = 'lunch'
‫اﻷهداف‬ ‫تعدد‬
‫الباقية‬ ‫الصيغ‬ ‫أما‬ ، ‫معطيات‬ ‫بنى‬ ‫أو‬ ‫قيمة‬ ‫إلى‬ ‫اسم‬ ‫إسناد‬ ‫وهي‬ ‫مشهور‬ ‫الصيغة‬ ‫يظهر‬ ‫اﻷول‬ ‫السطر‬
:‫التفصيل‬ ‫من‬ ‫بشئ‬ ‫وسنأخذها‬ ‫خاصة‬ ‫هيئات‬ ‫فهي‬
40
:‫والقوائمي‬ ‫المجموعي‬ ‫السناد‬
‫=تقوم‬ ‫يساوي‬ ‫علمة‬ ‫يسار‬ ‫في‬ ‫قائمة‬ ‫أو‬ ‫مجموعة‬ ‫تستخدم‬ ‫عندما‬،‫علقة‬ ‫بينهما‬ ‫والثالث‬ ‫الثاني‬ ‫السطر‬
‫ناحية‬ ‫من‬ ‫يقابله‬ ‫ما‬ ‫مع‬ ‫اليسار‬ ‫من‬ ‫عنصر‬ ‫كل‬ ‫تسند‬ ‫بحيث‬ ‫اليمين‬ ‫جهة‬ ‫من‬ ‫مزاوجة‬ ‫بعملية‬ ‫بايثون‬
‫العنصر‬ ‫الثاني‬ ‫السطر‬ ‫في‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫بالترتيب‬ ‫اليمين‬
spam
' ‫القيمة‬ ‫إلية‬ ‫أسندت‬
yum
. '
‫اﻷهداف‬ ‫متعدد‬ ‫اﻹسناد‬
‫جميع‬ ‫إلى‬ ‫الكائن‬ ‫نفس‬ ‫إلى‬ ‫مرجع‬ ‫بإسناد‬ ‫بايثون‬ ‫قامت‬،‫هدف‬ ‫من‬ ‫أكثر‬ ‫هناك‬ ‫كان‬ ‫اﻷخير‬ ‫السطر‬ ‫في‬
‫الكائن‬ ‫الجدول‬ ‫من‬ ‫اﻷخير‬ ‫السطر‬ ‫في‬ ،‫اليسار‬ ‫ناحية‬ ‫من‬ ‫اﻷهداف‬
spam
‫و‬
ham
‫أسندا‬
' ‫وهي‬ ‫القيمة‬ ‫نفس‬ ‫إليهما‬
lunch
‫إلى‬ ‫مرة‬ ‫كل‬ ‫في‬ ‫قيمة‬ ‫أسندنا‬ ‫أننا‬ ‫ولو‬ ‫تعادل‬ ‫النتيجة‬ ‫وهذه‬ ،'
.‫واحد‬ ‫هدف‬
:‫المتعدد‬ ‫اﻹسناد‬ ‫عملية‬ ‫أكثر‬ ‫يوضح‬ ‫التالي‬ ‫المثال‬
>>> nudge = 1
>>> wink = 2
>>> A, B = nudge, wink # tuples
>>> A, B
(1, 2)
>>> [C, D] = [nudge, wink] # lists
>>> C, D
(1, 2)
>>> nudge, wink = wink, nudge # tuples: swaps values
>>> nudge, wink # same as T=nudge; nudge=wink;
wink=T
(2, 1)
:‫المتغيرات‬ ‫تسمية‬ ‫قواعد‬
‫التي‬ ‫المتغيرات‬ ‫تسمية‬ ‫قضية‬ ‫في‬ ‫نتوسع‬ ‫أن‬ ‫نريد‬ ،‫بايثون‬ ‫في‬ ‫اﻹسناد‬ ‫قضية‬ ‫عن‬ ‫تكلمنا‬ ‫أن‬ ‫وبعد‬ ‫اﻵن‬
‫إليها‬ ‫نسند‬ ‫عندما‬ ‫تنشأ‬ ‫المتغيرات‬ ‫أسماء‬ ‫بايثون‬ ‫في‬ .‫قواعدها‬ ‫ونفهم‬ ‫القيم‬ ‫إليها‬ ‫سنسند‬
:‫وهي‬ ‫السي‬ ‫لغة‬ ‫لقواعد‬ ‫مشابهة‬ ‫وهي‬ ،‫أيضا‬ ‫السم‬ ‫اختيار‬ ‫تحكم‬ ‫قواعد‬ ‫هناك‬ ‫ولكن‬،‫القيمة‬
–
‫سفلية‬ ‫شرطة‬ ‫أو‬ ‫بحرف‬ ‫يبدأ‬ ‫أن‬ ‫يجب‬ ‫المتغير‬ ‫اسم‬
‫من‬ ‫عدد‬ ‫أي‬ ‫يتبعه‬ ‫أن‬ ‫ذلك‬ ‫بعد‬ ‫ويمكن‬ ‫فقط‬ ‫سفلية‬ ‫شرطة‬ ‫أو‬ ‫بحرف‬ ‫يبدأ‬ ‫أن‬ ‫يجب‬ ‫المتغير‬ ‫اسم‬
41
:‫المثال‬ ‫سبيل‬ ‫على‬، ‫سفلية‬ ‫شرطة‬ ‫أو‬ ‫اﻷعداد‬ ‫أو‬ ‫اﻷحرف‬
:‫صحيحة‬ ‫أسماء‬
spam _spam Spam
:‫صحيحة‬ ‫غير‬ ‫أسماء‬
1spam
!#@$ : ‫اﻷحرف‬ ‫هذه‬ ‫على‬ ‫السماء‬ ‫يحتوي‬ ‫ل‬ ‫أن‬ ‫ويجب‬
–
‫اﻷحرف‬ ‫لحالة‬ ‫حساسة‬ ‫بايثون‬
‫فالمتغير‬ ‫بالضبط‬ ‫السي‬ ‫مثل‬ ‫الحروف‬ ‫لحالة‬ ‫حساسة‬ ‫بايثون‬
omlx
‫المتغير‬ ‫عن‬ ‫يختلف‬
Omlx
‫النقطة‬ ‫لهذه‬ ‫منتبها‬ ‫فكن‬
–
‫المحجوزة‬ ‫الكلمات‬
‫بها‬ ‫سميت‬ ‫وإذا‬ ،‫بها‬ ‫متغيرك‬ ‫تسمى‬ ‫أن‬ ‫يمكن‬ ‫ول‬ ‫محجوزة‬ ‫بايثون‬ ‫لغة‬ ‫في‬ ‫معينة‬ ‫كلمات‬ ‫هناك‬
‫أو‬ ‫فقط‬ ‫الحروف‬ ‫حالة‬ ‫فغير‬ ‫بها‬ ‫تسمي‬ ‫أن‬ ‫إلى‬ ‫اضطررت‬ ‫وإذا‬، ‫تحذيرا‬ ‫اللغة‬ ‫تعطيك‬ ‫متغيرك‬
‫مثل‬ ‫معين‬ ‫حرف‬
class
‫ولكن‬ ‫بها‬ ‫التسمية‬ ‫يمكنك‬ ‫ل‬
Class
‫أو‬
klass
،‫يمكنك‬
:‫التالي‬ ‫الجدول‬ ‫في‬ ‫موضحة‬ ‫المحجوزة‬ ‫والكلمات‬
continue
class
break
assert
and
except
else
elif
del
def
global
from
for
finally
exec
lambda
is
in
import
if
raise
print
pass
or
not
while
try
return
‫رأينا‬ ‫كما‬ ،‫بايثون‬ ‫في‬ ‫الكائنات‬ ‫و‬ ‫اﻷسماء‬ ‫بين‬ ‫بالفرق‬ ‫ننوه‬ ‫أن‬ ‫نريد‬ ،‫النقطة‬ ‫هذه‬ ‫عن‬ ‫نتحرك‬ ‫أن‬ ‫قبل‬
.‫ثابتة‬ ‫غير‬ ‫أخرى‬ ‫و‬ ‫ثابثة‬ ‫كائنات‬ ‫هناك‬ ‫أن‬ ‫ورأينا‬ ‫بايثون‬ ‫في‬ ‫الكائنات‬ ‫أنواع‬ ‫الثاني‬ ‫الفصل‬ ‫في‬ ‫سابقا‬
‫الكائنات‬ ‫بنوع‬ ‫ترتبط‬ ‫ول‬ ‫الكائنات‬ ‫إلى‬ ‫تؤشر‬ ‫مراجع‬ ‫مجرد‬ ‫فقط‬ ‫فهي‬ ‫أخرى‬ ‫ناحية‬ ‫من‬ ‫اﻷسماء‬ ‫أما‬
:‫التالي‬ ‫المثال‬ ‫انظر‬، ‫ثابتة‬ ‫غير‬ ‫فهي‬ ‫السم‬ ‫وبنفس‬ ‫الكائنات‬ ‫من‬ ‫نوع‬ ‫أي‬ ‫إلى‬ ‫تؤشر‬ ‫أن‬ ‫تستطيع‬ ‫بل‬
>>> x = 0 # x bound to an integer object
>>> x = "Hello" # now it's a string
>>> x = [1, 2, 3] # and now it's a list
.‫عام‬ ‫بشكل‬ ‫بايثون‬ ‫في‬ ‫اﻷسماء‬ ‫مميزات‬ ‫لنا‬ ‫يوضح‬ ‫اﻷخير‬ ‫المثال‬ ‫فإن‬ ‫نرى‬ ‫وكما‬
42
Print
‫التعبير‬
print
‫التعبير‬ ‫هذا‬ ‫يقوم‬ ‫التقنية‬ ‫الناحية‬ ‫من‬،‫الكائنات‬ ‫يطبع‬ ‫الذي‬ ‫التعبير‬ ‫هو‬ ‫بساطة‬ ‫بكل‬
‫ما‬ ‫غالبا‬ ‫القياسي‬ ‫والخرج‬ .‫للبرنامج‬ ‫القياسي‬ ‫الخرج‬ ‫إلى‬ ‫ويرسله‬ ‫للكائن‬ ‫النصي‬ ‫التمثيل‬ ‫بكتابة‬
‫ملف‬ ‫إلى‬ ‫الخرج‬ ‫النتائج‬ ‫إرسال‬ ‫تم‬ ‫إذا‬ ‫إل‬ ،‫بها‬ ‫بايثون‬ ‫برنامج‬ ‫تنفيذ‬ ‫بدأ‬ ‫التي‬ ‫النافذة‬ ‫يكون‬
.‫الشل‬ ‫أوامر‬ ‫باستخدام‬
‫الملف‬ ‫إلى‬ ‫تكتب‬ ‫التي‬ ‫الملف‬ ‫الكائن‬ ‫دوال‬ ‫رأينا‬ ‫الثاني‬ ‫الفصل‬ ‫في‬
write
‫التعبير‬،
print
‫التعبير‬ :‫أكثر‬ ‫بتركيز‬ ‫ولكن‬ ‫إليها‬ ‫مشابهة‬
print
‫القياسي‬ ‫الخرج‬ ‫إلى‬ ‫الكائنات‬ ‫بكتابة‬ ‫يقوم‬
stdout
‫الدالة‬ ‫أما‬ ،
write
‫الخرج‬ ‫توفر‬ ‫أن‬ ‫ومنذ‬،‫الملف‬ ‫إلى‬ ‫النصية‬ ‫السلسل‬ ‫بكتابة‬ ‫تقوم‬
‫ككائن‬ ‫بايثون‬ ‫في‬ ‫القياسي‬
stdout
‫وحدة‬ ‫في‬
sys
‫التعبير‬ ‫تحاكي‬ ‫أن‬ ‫يمكنك‬
print
‫باستخدام‬
‫الملفات‬ ‫كتابة‬ ‫دالة‬
write
‫استخدام‬ ‫ولكن‬ )‫التالية‬ ‫اﻷمثلة‬ ‫(انظر‬
print
.‫بكثير‬ ‫أسهل‬
‫التعبير‬ ‫صيغ‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬
print
:
‫العملية‬
‫تفسيرها‬
print spam, ham
‫إلى‬ ‫الكائنات‬ ‫طباعة‬
sys.stdout
‫وإضافة‬
‫فراغ‬ ‫بينهما‬
print spam, ham,
‫سطر‬ ‫إضافة‬ ‫بدون‬ ‫ولكن‬ ‫السابق‬ ‫نفس‬
‫النهاية‬ ‫في‬ ‫جديد‬
‫التعبير‬ ‫يقوم‬ ‫افتراضي‬ ‫بشكل‬
print
‫إضافة‬ ‫مع‬ ‫فاصلة‬ ‫بينهما‬ ‫تفصل‬ ‫التي‬ ‫الكائنات‬ ‫بين‬ ‫فراغ‬ ‫بإضافة‬
‫إضافة‬ ‫يمكنك‬ ‫(وبالتالي‬ ‫السطر‬ ‫نهاية‬ ‫علمة‬ ‫لتجاوز‬.‫الخرج‬ ‫من‬ ‫السطر‬ ‫نهاية‬ ‫في‬ ‫السطر‬ ‫نهاية‬ ‫علمة‬
‫تعبير‬ ‫أنه‬ )‫لحقا‬ ‫السطر‬ ‫نفس‬ ‫في‬ ‫أخرى‬ ‫نصوص‬
print
‫السطر‬ ‫في‬ ‫يظهر‬ ‫مثلما‬، ‫فاصلة‬ ‫بإضافة‬
‫السابق‬ ‫الجدول‬ ‫من‬ ‫الثاني‬
43

Python.pdf

  • 1.
    ‫ﻣﻮﻗﻊ‬ ‫ﻣﻦ‬ ‫اﻟﻤﻠﻒ‬‫ﺗﺤﻤﻴﻞ‬ ‫ﺗﻢ‬ ‫اﻟﺘﻘﻨﻴﺔ‬ ‫اﻟﺒﻮﺻﻠﺔ‬ www.boosla.com
  • 2.
    ‫سهولة‬ ‫بكل‬ ‫بايثون‬‫تعلم‬ :‫بقلم‬ ‫السعيدي‬ ‫عامر‬ ‫بن‬ ‫فهد‬ OMLX 2005 1
  • 3.
    ‫مقدمة‬ ‫التركيب‬ ‫حيث‬ ‫ومن‬‫القراءة‬ ‫و‬ ‫الكتابة‬ ‫حيث‬ ‫من‬ ‫بالسهولة‬ ‫تتميز‬ ‫بايثون‬ ‫لغة‬ ‫فهي‬ ،‫اﻵن‬ ‫المعروفة‬ ‫المنصات‬ ‫كل‬ ‫في‬ ‫بها‬ ‫تبرمج‬ ‫أن‬ ‫تستطيع‬ ‫و‬ ،‫لها‬ ‫النحوي‬ ‫لغة‬ ‫تضارع‬ Java .‫تقريبا‬ ‫اﻷغراض‬ ‫لكل‬ ‫تصلح‬ ‫و‬ ،‫العريقة‬ ‫علي‬ ‫يممن‬ ‫أن‬ ‫ال‬ ‫أسمأل‬ ‫التمي‬ ،‫القليلة‬ ‫الورقات‬ ‫هذه‬ ‫كتابمة‬ ‫على‬ ‫شجعنمي‬ ‫ولقمد‬ ‫اللغمة‬ ‫هذه‬ ‫وكأن‬ ،‫اللغمة‬ ‫هذه‬ ‫عمن‬ ‫تتكلم‬ ‫التمي‬ ‫العربيمة‬ ‫المصمادر‬ ‫قلة‬ ‫بإتمامهما‬ .‫الورقات‬ ‫هذه‬ ‫كتابة‬ ‫عناء‬ ‫فتجشمت‬ ،‫التقنية‬ ‫عالم‬ ‫في‬ ‫موجودة‬ ‫ليست‬ :‫الكتاب‬ ‫حول‬ ‫ملحظات‬ ‫لرخصة‬ ‫خاضع‬ )‫(حر‬ ‫مفتوح‬ ‫الكتاب‬ ‫هذا‬ GNU FDL ‫(أي‬ GNU Free Documentation License ً‫مخالفا‬ ‫يعد‬ ‫ل‬ ‫الكتاب‬ ‫هذا‬ ‫من‬ ‫القتباس‬ ‫أو‬ ‫تصوير‬ ‫أو‬ ‫نسخ‬ ) ‫فإنه‬ )... ‫الشبكة‬ ‫من‬ ‫تنزيل‬ ‫أو‬ ‫استعارة‬ ‫أو‬ ‫هدية‬ ‫أو‬ ‫(شراء‬ ‫طريقه‬ ‫بأي‬ ‫عليه‬ ‫حصلت‬ ‫إذا‬ ‫للقانون‬ ‫مشتق‬ ‫منتج‬ ‫عمل‬ ‫في‬ ‫استخدمته‬ ‫إذا‬ ‫ولكن‬ .ً‫مجانا‬ ‫تنزيله‬ ‫ويمكنك‬ ، ‫فيه‬ ‫والتعديل‬ ‫نسخه‬ ‫لك‬ ‫يحق‬ ‫لرخصة‬ ً‫خاضعا‬ ‫يصبح‬ ‫فإنه‬ FDL ‫وعليك‬ ‫العمل‬ ‫بهذا‬ ‫قام‬ ‫من‬ ‫بأنك‬ ‫الدعاء‬ ‫يمكنك‬ ‫ل‬ ‫كما‬ ‫لسنا‬ ‫لمحتوياته‬ ‫ضمان‬ ‫أو‬ ‫كفالة‬ ‫أي‬ ‫دون‬ ‫من‬ ‫هو‬ ‫كما‬ ‫الكتاب‬ ‫هذا‬ ‫يقدم‬ ‫الصلي‬ ‫لمؤلفه‬ ‫الشارة‬ ‫على‬ ‫أو‬ ‫جهازك‬ ‫على‬ ‫و‬ ‫عليك‬ ‫يقع‬ )‫ضمني‬ ‫ول‬ ‫مباشر‬ ‫بشكل‬ ‫(ل‬ ‫سلبي‬ ‫أثر‬ ‫أي‬ ‫عن‬ ‫مسؤولين‬ .‫قطتك‬ ‫أرابيان‬ ‫منصة‬ ‫على‬ ‫الكتاب‬ ‫هذا‬ ‫كتب‬ 0.6 ‫برنامج‬ ‫باستخدام‬ OpenOffice.org 2.0 ‫لذا‬ ‫المنصة‬ ‫في‬ ‫عليه‬ ‫تعدل‬ ‫أن‬ ‫فحاول‬ ،‫التنسيق‬ ‫يذهب‬ ‫فلربما‬ ‫الويندوز‬ ‫منصة‬ ‫على‬ ‫فتحه‬ ‫حاولت‬ ‫إذا‬ .‫جديد‬ ‫من‬ ‫الجهد‬ ‫إعادة‬ ‫لتجنب‬ ‫فيها‬ ‫إنشأ‬ ‫التي‬ ‫العمل‬ ‫يتم‬ ‫حتى‬ ،‫لكماله‬ ‫الحماس‬ ‫عندهم‬ ‫أناس‬ ‫يجد‬ ‫أن‬ ‫المؤلف‬ ‫ويسعد‬ ،‫ناقص‬ ‫الكتاب‬ ‫هذا‬ ،‫جيدة‬ ‫بصورة‬ ‫الكتاب‬ ‫عن‬ ‫معلومات‬ : ‫السعيدي‬ ‫عامر‬ ‫بن‬ ‫فهد‬ :‫تأليف‬ ‫الكتروني‬ ‫بريد‬ fahad.alsaidi@gmail.com ‫ب‬.‫ص‬ 370 ‫عمان‬ ‫سلطنة‬ -‫الخابورة‬ ‫البريدي‬ ‫الرمز‬ 326 ‫رخصة‬ ‫وفق‬ ‫محفوظة‬ ‫الطبع‬ ‫حقوق‬ FDL Copyright (c) 2005 under terms of FDL license 2
  • 4.
    ‫اﻷولى‬ ‫الوحدة‬ : ‫أساسيات‬ Python ‫اﻷول‬ ‫الفصل‬ : ‫البداية‬ ‫الثاني‬‫الفصل‬ : ‫العمليات‬ ‫و‬ ‫اﻷنواع‬ ‫الثالث‬ ‫الفصل‬ : ‫اﻷساسية‬ ‫التعابير‬ ‫الثالث‬ ‫الفصل‬ : ‫الوظائف‬ ‫الرابع‬ ‫الفصل‬ : ‫الوحدات‬ ‫الخامس‬ ‫الفصل‬ : ‫الصفوف‬ ‫السادس‬ ‫الفصل‬ : ‫الستثناءات‬ 3
  • 5.
    ‫اﻷول‬ ‫الفصل‬ : ‫البداية‬ :‫المهمة‬ ‫النقاط‬ ‫لغة‬‫لماذا‬ Python ‫؟‬ ‫برنامج‬ ‫تشغل‬ ‫كيف‬ ‫بلغة‬ ‫مكتوب‬ Python ‫؟‬ ‫بـ‬ ‫الخاصة‬ ‫التطوير‬ ‫بيئات‬ ‫معرفة‬ Python ‫نتعلم‬ ‫لماذا‬ ‫و‬ ‫بايثون؟‬ ‫لغة‬ ‫نشأة‬ ‫كيف‬ ‫لنعرف‬ ،‫بايثون‬ ‫لغة‬ ‫رحاب‬ ‫في‬ ‫سويا‬ ‫سنمضي‬ ‫الفصل‬ ‫هذا‬ ‫في‬ ‫في‬ ‫يبدأ‬ ‫أن‬ ‫يريد‬ ‫لمن‬ ‫ضرورية‬ ‫اﻷسئلة‬ ‫هذه‬ ‫كل‬ ‫بايثون؟‬ ‫لغة‬ ‫لها‬ ‫تصلح‬ ‫التي‬ ‫مجالت‬ ‫ما‬ ‫و‬ ‫بايثون؟‬ ‫لغة‬ ... ‫سريعا‬ ‫فلننتقل‬ ، ! ‫لغة‬ ‫أي‬ ‫تعلم‬ ‫لغة‬ ‫لماذا‬ Python ‫؟‬ ‫عام‬ ‫في‬ ١٩٩٠ ‫قام‬ ‫م‬ Guido van Rossum ‫اللغة‬ ‫هذه‬ ‫استقى‬ ‫وقد‬ ،‫بايثون‬ ‫لغة‬ ‫باختراع‬ :‫أمثال‬ ‫من‬ ‫سابقة‬ ‫لغات‬ ‫عدة‬ ‫من‬ C ++ ‫و‬ C ‫و‬ Modula-3 ‫و‬ ABC ‫و‬ Icon . ‫ممن‬ ‫وهمي‬ ،‫بهما‬ ‫المكتوب‬ ‫البرناممج‬ ‫لتشغيمل‬ ‫بناء‬ ‫إلى‬ ‫تحتاج‬ ‫ل‬ ‫التمي‬ ‫النصمية‬ ‫اللغات‬ ‫ممن‬ ‫بايثون‬ ‫وتعتمبر‬ ‫اللغات‬ ‫منف‬‫م‬‫ص‬ ‫مي‬‫م‬‫ف‬ ‫اﻷول‬ ‫الخيار‬ ‫تكون‬ ‫أن‬ ‫ما‬‫م‬‫أهله‬ ‫ما‬‫م‬‫مم‬ ‫مارم‬‫م‬‫ص‬ ‫مل‬‫م‬‫بشك‬ ‫مة‬‫م‬‫المنظم‬ ‫و‬ ‫مهلة‬‫م‬‫الس‬ ‫اللغات‬ ‫كمل‬ ‫فائدة‬ ‫نمبين‬ ‫و‬ ‫جدول‬ ‫فمي‬ ‫بايثون‬ ‫لغمة‬ ‫مميزات‬ ‫وسمنلخص‬ ،‫الجامعات‬ ‫فمي‬ ‫تعتممد‬ ‫التمي‬ ‫اﻷكاديميمة‬ .. ‫مميزة‬ ‫المميزات‬ ‫الفوائد‬ ‫السي‬ ‫لغة‬ ‫مثل‬ ‫ربط‬ ‫أو‬ ‫بناء‬ ‫إلى‬ ‫تحتاج‬ ‫ل‬ ‫ملحوظ‬ ‫بشكل‬ ‫فيها‬ ‫التطوير‬ ‫دورة‬ ‫تسريع‬ ‫المتغيرات‬ ‫أنواع‬ ‫على‬ ‫تحتوي‬ ‫ل‬ ‫مرونة‬ ‫أكثر‬ ‫و‬ ‫أبسط‬ ‫و‬ ‫أسهل‬ ‫تصبح‬ ‫البرامج‬ ‫للذاكرة‬ ‫آلية‬ ‫إدارة‬ ‫الكود‬ ‫تنقيح‬ ‫في‬ ‫الجهد‬ ‫يجنبك‬ ‫النفايات‬ ‫مجمع‬ ‫التوجه‬ ‫غرضية‬ ‫برمجة‬ ++ ‫مع‬ ‫التكامل‬ ‫يمنحك‬ C ‫و‬ Java ‫و‬ COM ‫السي‬ ‫لغة‬ ‫مع‬ ‫التمدد‬ ‫و‬ ‫التضمين‬ ‫إمكانية‬ ‫النظام‬ ‫مع‬ ‫التحاور‬ ‫إمكانية‬ ‫و‬ ‫اﻷداء‬ ‫تحسين‬ ‫التصميم‬ ‫و‬ ‫الكتابة‬ ‫قواعد‬ ‫في‬ ‫الوضوح‬ ‫و‬ ‫البساطة‬ ‫و‬ ‫الصيانة‬ ‫إمكانية‬ ‫و‬ ‫المقروئية‬ ‫من‬ ‫عالية‬ ‫درجة‬ ‫التعليم‬ ‫سهولة‬ ‫عالية‬ ‫محمولية‬ ‫و‬ ‫اللينكس‬ ‫و‬ ‫الويندوز‬ :‫منصات‬ ‫عدة‬ ‫على‬ ‫تعمل‬ ‫الكود‬ ‫تغيير‬ ‫بدون‬ ‫اليونكس‬ ‫و‬ ‫الماكنتوش‬ ‫المصدر‬ ‫مفتوحة‬ ‫ضامن‬ ‫و‬ ‫فيها‬ ‫التعديل‬ ‫و‬ ‫توزيعها‬ ‫في‬ ‫الحرية‬ ‫تعطيك‬ ‫لبقائها‬ 4
  • 6.
    ‫المميزات‬ ‫الفوائد‬ ‫المستوى‬ ‫عالية‬ ‫العمليات‬‫و‬ ‫البيانات‬ ‫أنواع‬ ‫دعم‬ ‫المدمجة‬ ‫الكائنات‬ ‫أنواع‬ ‫باستخدام‬ ‫سريع‬ ‫تطوير‬ ‫السي‬ ‫لوحدات‬ ‫ألي‬ ‫تحميل‬ ‫التنفيذية‬ ‫الملفات‬ ‫تصغير‬ ‫و‬ ‫مبسطة‬ ‫امتدادات‬ ‫القياسية‬ ‫اﻹنترنت‬ ‫بروتوكولت‬ ‫دعم‬ ‫و‬ ‫اللكتروني‬ ‫البريد‬ ‫إلى‬ ‫الوصول‬ ‫تسهيل‬ HTTP .. ‫ثالثة‬ ‫أطراف‬ ‫من‬ ‫و‬ ‫المضمنة‬ ‫المكتبات‬ ‫كثرة‬ ‫البرامج‬ ‫تطوير‬ ‫تسهيل‬ ‫و‬ ‫تسريع‬ ‫مما‬ ‫واحد‬ ‫آن‬ ‫في‬ ‫قوتها‬ ‫مع‬ ‫لها‬ ‫تعلمك‬ ‫أثناء‬ ‫ستلحظه‬ ‫ما‬ ‫وهذا‬ ، ‫التعلم‬ ‫سهلة‬ ‫أنها‬ ‫مميزاتها‬ ‫أهم‬ ‫و‬ :‫منها‬ ‫مجموعة‬ ‫وسنذكر‬ ،‫الشركات‬ ‫من‬ ‫لكثير‬ ‫اﻷمثل‬ ‫الخيار‬ ‫جعلها‬ – Yahoo Maps – Yahoo Groups – Google – Ultraseek – Jasc Software, Paint Shop Pro – National Weather Service – NASA – Red Hat – SGI, Inc – IBM – Real Networks ‫؟‬ ‫بايثون‬ ‫لغة‬ ‫مجالت‬ ‫ما‬ ‫في‬ ‫السهولة‬ ‫و‬ ‫التطوير‬ ‫سرعة‬ ‫تتطلب‬ ‫التي‬ ‫المجالت‬ ‫جميع‬ ‫خاضت‬ ‫بايثون‬ ،‫شديد‬ ‫باختصار‬ ‫المجالت‬ ‫فمن‬ ،‫التطبيق‬ ‫سرعة‬ ‫إلى‬ ‫تحتاج‬ ‫التي‬ ‫المجالت‬ ‫في‬ ‫قليل‬ ‫تأخرت‬ ‫و‬ ،‫اﻷول‬ ‫المجال‬ :‫بايثون‬ ‫لغة‬ ‫فيها‬ ‫تتميز‬ ‫التي‬ – ‫مباشرة‬ ‫النظام‬ ‫مع‬ ‫تتعامل‬ ‫التي‬ ‫اﻷدوات‬ ‫مجال‬ – ‫اﻹنترنت‬ ‫برمجة‬ ‫مجال‬ – ‫الرسومية‬ ‫المستخدم‬ ‫واجهات‬ ‫برمجة‬ ‫مجال‬ – ‫البيانات‬ ‫قواعد‬ ‫برمجة‬ ‫مجال‬ – ‫الموزعة‬ ‫البرمجة‬ ‫مجال‬ 5
  • 7.
    ‫بشكل‬ ‫المبرمج‬ ‫عمل‬‫تسهل‬ ‫كثيرة‬ ‫أدوات‬ ‫وجود‬ ‫لها‬ ‫سهّل‬ ‫مما‬ ،‫المجالت‬ ‫من‬ ‫الكثير‬ ‫وغيرها‬ :‫اﻷدوات‬ ‫هذه‬ ‫أشهر‬ ‫فمن‬ ،‫ملحظ‬ ‫المجال‬ ‫اﻷدوات‬ ‫النظام‬ ‫برمجة‬ Sockets ‫و‬ threads ‫و‬ signals ‫و‬ pipes ‫و‬ RPC calls ‫و‬ POSIX bindings ‫الرسومية‬ ‫المستخدم‬ ‫واجهات‬ Tk ‫و‬ PMW ‫و‬ MFC ‫و‬ X11 ‫و‬ wxPython ‫و‬ KDE ‫و‬ Gnome ‫البيانات‬ ‫قواعد‬ ‫واجهات‬ Oracle ‫و‬ sybase ‫و‬ PostGres ‫و‬ mSQL ‫و‬ persistence ‫و‬ dbm ‫أدوات‬ Microsoft Windows MFC ‫و‬ COM ‫و‬ ActiveX ‫و‬ ASP ‫و‬ ODBC . ‫و‬ NET ‫النترنت‬ ‫أدوات‬ Jpython ‫و‬ CGI tools ‫و‬ HTML/XML parsers ‫و‬ email tools ‫و‬ Zope ‫الموزعة‬ ‫الكائنات‬ DCOM ‫و‬ CORBA ‫و‬ ILU ‫و‬ Fnorb ‫مشهورة‬ ‫أخرى‬ ‫أدوات‬ SWIG ‫و‬ PIL ‫و‬ regular expressions ‫و‬ numPy ‫و‬ cryptography ‫بلغة‬ ‫مكتوب‬ ‫برنامج‬ ‫تشغل‬ ‫كيف‬ Python ‫؟‬ ‫و‬ ،‫البرنامج‬ ‫لتشغيل‬ ‫فقط‬ ‫اللغة‬ ‫مفسر‬ ‫لديك‬ ‫يكون‬ ‫أن‬ ‫عليك‬ ‫يتوجب‬ ‫فإنه‬ ، ‫نصية‬ ‫بايثون‬ ‫لغة‬ ‫أن‬ ‫بما‬ ‫تعمل‬ ‫الذي‬ ‫النظام‬ ‫حسب‬ ‫المفسر‬ ‫نزل‬ ‫و‬ ، ‫بايثون‬ ‫لغة‬ ‫موقع‬ ‫إلى‬ ‫اذهب‬ ‫المفسر‬ ‫على‬ ‫للحصول‬ : ‫عليه‬ http://www.python.org ‫بلحقة‬ ‫الملف‬ ‫حفظ‬ ‫ثم‬ ‫نصوص‬ ‫محرر‬ ‫إلى‬ ‫ستحتاج‬ ‫بايثون‬ ‫برنامج‬ ‫لكتابة‬ ‫الحال‬ ‫بطبيعة‬ py . :‫اكتب‬ ‫و‬ ‫اﻷوامر‬ ‫سطر‬ ‫على‬ ‫ادخل‬ ‫ذلك‬ ‫بعد‬ 6 ‫النظام‬ ‫على‬ ‫مثبة‬ ‫افتراضيا‬ ‫فهي‬ ،‫اﻷساسية‬ ‫للغات‬ ‫من‬ ‫اللينكس‬ ‫نظام‬ ‫في‬ ‫بايثون‬ ‫لغة‬ ‫أرابيان‬ ‫توزيعة‬ ‫على‬ ‫مبنية‬ ‫ستكون‬ ‫الدروس‬ ‫هذه‬ ‫أن‬ ‫وخاصة‬ ، ‫النظام‬ ‫هذا‬ ‫استخدام‬ ‫يفضل‬ ‫لذلك‬ ‫الويندوز‬ ‫منصة‬ ‫على‬ ‫العمل‬ ‫من‬ ‫هذا‬ ‫يمنع‬ ‫ل‬ ‫لكن‬ ‫و‬
  • 8.
    >> python program.py ‫بحيث‬ program ‫سطر‬‫في‬ ‫اكتب‬ ، ‫بايثون‬ ‫لغة‬ ‫محث‬ ‫مع‬ ‫مباشرة‬ ‫للتعامل‬ ‫و‬ ،‫الملف‬ ‫اسم‬ : ‫اﻷوامر‬ >> python : ‫اكتب‬ ، ‫لك‬ ‫برنامج‬ ‫أول‬ ‫لكتابة‬ ‫و‬ >>> print ' My name is Fahad Al- Saidi' .‫قوتها‬ ‫و‬ ‫بايثون‬ ‫سهولة‬ ‫مدى‬ ‫بنفسك‬ ‫ستعرف‬ ،‫بايثون‬ ‫بواسطة‬ ‫لك‬ ‫برنامج‬ ‫ﻷول‬ ‫كتابتك‬ ‫بعد‬ ‫بـ‬ ‫الخاصة‬ ‫التطوير‬ ‫بيئات‬ Python ‫وهناك‬ ،‫الروتنية‬ ‫العمليات‬ ‫من‬ ‫الكثير‬ ‫أداء‬ ‫عليك‬ ‫تسهل‬ ‫تطوير‬ ‫بيئة‬ ‫امتلك‬ ‫في‬ ‫الوقت‬ ‫مع‬ ‫سترغب‬ ‫تابع‬ ‫فقط‬ ، ‫رغباتك‬ ‫حسب‬ ‫تختار‬ ‫أن‬ ‫إل‬ ‫عليك‬ ‫ما‬ ، ‫بايثون‬ ‫بلغة‬ ‫الخاصة‬ ‫التطوير‬ ‫بيئات‬ ‫من‬ ‫الكثير‬ : ‫الرابطين‬ ‫هذين‬ http://wiki.python.org/moin/PythonEditors http://wiki.python.org/moin/IntegratedDevelopmentEnvironments ‫تعلم‬ ‫في‬ ‫معنا‬ ‫مشوارك‬ ‫لتكمل‬ ‫عادي‬ ‫نصوص‬ ‫محرر‬ ‫مع‬ ‫بايثون‬ ‫لغة‬ ‫مفسر‬ ‫تملك‬ ‫أن‬ ‫يكفيك‬ ‫لكن‬ ‫و‬ ‫بايثون‬ ‫لغة‬ 7
  • 9.
    ‫الثاني‬ ‫الفصل‬ : ‫العمليات‬ ‫و‬‫اﻷنواع‬ :‫المهمة‬ ‫النقاط‬ ‫بايثون‬ ‫برنامج‬ ‫بنية‬ ‫المدمجة؟‬ ‫النواع‬ ‫نستخدم‬ ‫لماذا‬ ‫العداد‬ ‫النصية‬ ‫السلسل‬ ‫القوائم‬ ‫القواميس‬ ‫المجموعات‬ ‫الملفات‬ ‫للكائنات‬ ‫العامة‬ ‫الخصائص‬ ‫مهمة‬ ‫تلميحات‬ ‫الملخص‬ ‫بايثون‬ ‫برنامج‬ ‫بنية‬ ‫المكتوب‬ ‫البرنامج‬ ‫بنية‬ ‫على‬ ‫نعرج‬ ‫أن‬ ‫المهم‬ ‫من‬ ،‫بايثون‬ ‫لغة‬ ‫تفاصيل‬ ‫غمار‬ ‫خوض‬ ‫في‬ ‫البدء‬ ‫قبل‬ :‫نقول‬ ‫وباختصار‬ ،‫بايثون‬ ‫بلغة‬ ‫البرمجة‬ ‫حول‬ ‫عام‬ ‫بشكل‬ ‫واضح‬ ‫تصور‬ ‫لديك‬ ‫ليتكون‬ ،‫بايثون‬ ‫بلغة‬ :‫التالي‬ ‫نحو‬ ‫على‬ ،‫وكائنات‬ ،‫عبارات‬ ‫و‬ ،‫وحدات‬ :‫أجزاء‬ ‫ثلثة‬ ‫إلى‬ ‫يحلل‬ ‫أن‬ ‫يمكن‬ ‫بايثون‬ ‫برنامج‬ ١ ‫وحدات‬ ‫من‬ ‫يتكون‬ ‫البرنامج‬ - ٢ ‫عبارات‬ ‫على‬ ‫تحتوي‬ ‫الوحدات‬ ‫و‬ - ٣ .‫تعالجها‬ ‫و‬ ‫الكائنات‬ ‫تنشأ‬ ‫العبارات‬ ‫و‬ - ‫المدمجة؟‬ ‫النواع‬ ‫نستخدم‬ ‫لماذا‬ ‫الوقت‬ ‫من‬ ‫كم‬ ‫ستدرك‬ ‫الجافا‬ ‫أو‬ ‫بلس‬ ‫بلس‬ ‫السي‬ ‫أو‬ ‫السي‬ ‫باستخدام‬ ‫سابقا‬ ‫برمجت‬ ‫قد‬ ‫كنت‬ ‫إذا‬ 8
  • 10.
    ‫للعصاب‬ ‫مرهق‬ ‫هو‬‫وكم‬،‫المعطيات‬ ‫بنى‬ ‫يسمى‬ ‫بما‬ ‫الذاكرة‬ ‫في‬ ‫تنسيقها‬ ‫و‬ ‫الكائنات‬ ‫ترتيب‬ ‫يستغرق‬ ‫البحث‬ ‫و‬ ‫ترتيبها‬ ‫و‬ ‫إليها‬ ‫الوصول‬ ‫كيفية‬ ‫و‬ ‫الذاكرة‬ ‫مع‬ ‫التعامل‬ ‫و‬ ‫الذاكرة‬ ‫في‬ ‫الكائنات‬ ‫تلك‬ ‫ترتيب‬ ..‫خللها‬ ‫من‬ ‫ممن‬ ‫بكائنات‬ ‫تزودك‬ ‫بايثون‬ ‫ﻷن‬ ، ‫بعيدا‬ ‫عنمك‬ ‫يذهمب‬ ‫الجهمد‬ ‫ذلك‬ ‫معظمم‬، ‫المثاليمة‬ ‫بايثون‬ ‫براممج‬ ‫فمي‬ ‫اكتمب‬ ‫ثمم‬ ‫المشكلة‬ ‫حمل‬ ‫فمي‬ ‫فكمر‬ ‫فقمط‬ ،‫السمهولة‬ ‫بمنتهمى‬ ‫اﻷشياء‬ ‫تلك‬ ‫برمجمة‬ ‫تجعمل‬ ‫اللغمة‬ ‫صملب‬ ‫تريده‬ ‫ما‬ ‫كل‬ ،‫الحقيقة‬ ‫في‬ .‫الكائنات‬ ‫ترتيب‬ ‫في‬ ‫نفسك‬ ‫ترهق‬ ‫أن‬ ‫فصاعدا‬ ‫اﻵن‬ ‫من‬ ‫داعي‬ ‫ل‬ ،‫الحل‬ .‫خاصة‬ ‫أنواع‬ ‫إلى‬ ‫بحاجة‬ ‫تكن‬ ‫لم‬ ‫ما‬ ‫به‬ ‫تزودك‬ ‫اﻷنواع‬ ‫تلك‬ ‫ستجد‬ :‫منها‬ ‫أسباب‬ ‫لعدة‬، ‫الكائنات‬ ‫تلك‬ ‫تفضل‬ ‫أنك‬ ‫اﻷحيان‬ ‫غالب‬ ‫في‬ ‫ستجد‬ ‫الكتابة‬ ‫سهلة‬ ‫البسيطة‬ ‫البرامج‬ ‫تجعل‬ ‫المدمجة‬ ‫كائنات‬ ‫مشاكمل‬ ‫عمن‬ ‫بعيدا‬ ‫احتياجاتمك‬ ‫جميمع‬ ‫تلبمي‬ ‫المضمنمة‬ ‫الكائنات‬ ‫أنواع‬ ‫أن‬ ‫سمتجد‬ ‫البسميطة‬ ‫للمهمات‬ ‫ممي‬‫م‬‫ف‬ )‫ممس‬‫م‬‫(القوامي‬ ‫الجداول‬ ‫و‬ )‫القوائم‬ ( ‫المجموعات‬ ‫ممل‬‫م‬‫مث‬ ‫اﻷشياء‬ ‫ممتجد‬‫م‬‫س‬ ‫ﻷن‬.‫المعطيات‬ ‫ممى‬‫م‬‫بن‬ .‫المدمجة‬ ‫بايثون‬ ‫كائنات‬ ‫باستخدام‬ ‫فقط‬ ‫أنجز‬ ‫العمل‬ ‫من‬ ‫كثيرا‬ ‫أن‬ ‫وستجد‬ ،‫يدك‬ ‫متناول‬ ‫التوسعات‬ ‫تدعم‬ ‫و‬ ‫بالكائنات‬ ‫تزودك‬ ‫بايثون‬ ‫مثمل‬ ‫المضمنمة‬ ‫اﻷدوات‬ ‫تدعمم‬ ‫التمي‬ ‫اللغات‬ ‫ممن‬ ‫الطرق‬ ‫بعمض‬ ‫فمي‬ ‫تسمتعير‬ ‫بايثون‬ Lisp ‫اللغات‬ ‫و‬ ++ ‫مثل‬ ‫يحتاجه‬ ‫الذي‬ ‫العمل‬ ‫إطار‬ ‫أو‬ ‫المطلوبة‬ ‫باﻷدوات‬ ‫تزويدها‬ ‫في‬ ‫المبرمج‬ ‫على‬ ‫تعتمد‬ ‫التي‬ C ‫تحتاج‬ ‫ل‬ ‫الغالب‬ ‫فمي‬ ‫أنمك‬ ‫إل‬ ‫بايثون‬ ‫فمي‬ ‫فريدة‬ ‫كائنات‬ ‫أنواع‬ ‫تنشيمء‬ ‫أن‬ ‫سمتطيع‬ ‫أنمك‬ ‫ممن‬ ‫بالرغمم‬ ‫و‬ .‫ذلك‬ ‫إلى‬ ‫المخصصة‬ ‫المعطيات‬ ‫بنى‬ ‫من‬ ‫كفاءة‬ ‫أكثر‬ ‫المدمجة‬ ‫الكائنات‬ ‫لزيادة‬ ‫مي‬‫م‬‫بالس‬ ‫معمولة‬ ‫و‬ ‫محسممنة‬ ‫معطيات‬ ‫بنممى‬ ‫خوارزميات‬ ‫تسممتخدم‬ ‫بايثون‬ ‫فممي‬ ‫المدمجممة‬ ‫اﻷنواع‬ ‫ما‬‫م‬‫مضاعف‬ ‫جهدا‬ ‫متبذل‬‫م‬‫س‬ ‫مك‬‫م‬‫أن‬ ‫إل‬ ‫مة‬‫م‬‫مشابه‬ ‫كائنات‬ ‫أنواع‬ ‫مب‬‫م‬‫تكت‬ ‫أن‬ ‫متطيع‬‫م‬‫تس‬ ‫مك‬‫م‬‫أن‬ ‫مم‬‫م‬‫وبالرغ‬ ،‫مرعة‬‫م‬‫الس‬ .‫بايثون‬ ‫في‬ ‫الكائنات‬ ‫أنواع‬ ‫أداء‬ ‫على‬ ‫للحصول‬ ‫مد‬‫م‬‫ق‬ ‫مت‬‫م‬‫كن‬ ‫إذا‬ ،‫مل‬‫م‬‫الفص‬ ‫هذا‬ ‫مي‬‫م‬‫ف‬ ‫منأخذها‬‫م‬‫س‬ ‫مي‬‫م‬‫الت‬ ‫مة‬‫م‬‫المدمج‬ ‫الكائنات‬ ‫أنواع‬ ‫مبين‬‫م‬‫ي‬ ‫التالي‬ ‫الجدول‬ ‫ملسل‬‫م‬‫الس‬ ‫و‬ ‫اﻷعداد‬ ( ‫مل‬‫م‬‫مث‬ ‫مة‬‫م‬‫متشابه‬ ‫الكائنات‬ ‫هذه‬ ‫مض‬‫م‬‫بع‬ ‫أن‬ ‫متجد‬‫م‬‫س‬ ‫ذلك‬ ‫مل‬‫م‬‫قب‬ ‫مة‬‫م‬‫لغ‬ ‫متعملت‬‫م‬‫اس‬ 9
  • 11.
    ‫بايثون‬ ‫بهما‬ ‫تزودك‬)‫القواميمس‬ ‫و‬ ‫(القوائم‬ ‫مثمل‬ ‫وعاممة‬ ‫قويمة‬ ‫أنواع‬ ‫أيضما‬ ‫وسمتجد‬ )‫الملفات‬ ‫و‬ ‫النصمية‬ ‫مثل‬ ‫اللغات‬ ‫من‬ ‫لكثير‬ ‫خلفا‬ ‫تعب‬ ‫بدون‬ C ++ ‫و‬ C ‫و‬ Java ‫واحدا‬ ‫واحدا‬ ‫بشرحها‬ ‫وسنقوم‬. ‫الكائن‬ ‫نوع‬ ‫عليه‬ ‫مثال‬ ‫اﻷعداد‬ Numbers 3.1415 , 1234 , 999L, 3+4j ‫نصية‬ ‫سلسل‬ Strings ' spam', "guido's " ‫قوائم‬ Lists [ 1 [ , 2 ' , three'], 4 ] ‫قواميس‬ Dictionaries '{ food':'spam', 'taste':'yum }' ‫المجموعات‬ Tuples ( 1 ', spam', 4, 'U )' ‫الملفات‬ Files text = open('eggs', 'r').read() ‫العداد‬ ‫النقطة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ‫الصحيحة‬ ‫اﻷعداد‬ : ‫اﻷعداد‬ ‫أنواع‬ ‫من‬ ‫واسعة‬ ‫تشكيلة‬ ‫بايثون‬ ‫لغة‬ ‫تدعم‬ ‫مثل‬ ‫اﻷعداد‬ ‫من‬ ‫مركبة‬ ‫أنواع‬ ‫تدعم‬ ‫أيضا‬ ‫و‬ ،‫سابقة‬ ‫لغات‬ ‫مع‬ ‫تعامل‬ ‫لمن‬ ‫مألوف‬ ‫هذا‬ ‫و‬ ،‫العائمة‬ ‫اﻷدوات‬ ‫من‬ ‫واسعة‬ ‫تشكلية‬ ‫و‬ ‫محدود‬ ‫غير‬ ‫العائمة‬ ‫الفاصلة‬ ‫دقة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ‫المركبة‬ ‫اﻷعداد‬ :‫النوعين‬ ‫سنشرح‬ ‫يلي‬ ‫فيما‬ ‫و‬ :‫القياسية‬ ‫العداد‬ ‫أنواع‬ ‫تلك‬ ‫يبين‬ ‫جدول‬ ‫يلي‬ ‫ما‬ ‫في‬ ‫و‬ ‫جديدة‬ ‫بأنواع‬ ‫أتت‬ ‫و‬ ‫اللغات‬ ‫بقية‬ ‫في‬ ‫القياسية‬ ‫اﻷنواع‬ ‫تدعم‬ ‫بايثون‬ :‫نوع‬ ‫لكل‬ ‫أمثلة‬ ‫مع‬ ‫اﻷنواع‬ ‫النوع‬ ‫تفسيره‬ 1234, - 24, 0 Normal integers (C longs) 999999999999L Long integers (unlimited size) 1.23, 3.14e- 10, 4E210, 4.0e+210 Floating- point (C doubles) 0177, 0x9ff Octal and hex constants 3+4j, 3.0+4.0j, 3J Complex number constants – ‫العائمة‬ ‫الفاصلة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ‫الصحيحة‬ ‫اﻷعداد‬ 10
  • 12.
    ( ‫مثمل‬ ‫العشريمة‬‫اﻷعداد‬ ‫ممن‬ ‫مجموعمة‬ ‫همي‬ ‫الصمحيحة‬ ‫اﻷعداد‬ 10 ‫الفاصملة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ ، ) ( ‫مثل‬ ‫فاصلة‬ ‫على‬ ‫تحتوي‬ ‫التي‬ ‫هي‬ ‫العائمة‬ 10 ٫10 .) – ‫الرقمية‬ ‫الدقة‬ ‫معاملة‬ ‫تعامل‬ ‫الصحيحة‬ ‫اﻷعداد‬ longs ،‫رقمية‬ ‫بدقة‬ ‫محدود‬ ‫غير‬ ‫أنها‬ ‫يعني‬ ‫مما‬ ‫السي‬ ‫لغة‬ ‫في‬ ‫معاملة‬ ‫تعامل‬ ‫العائمة‬ ‫الفاصلة‬ ‫ذات‬ ‫اﻷعداد‬ ‫و‬ doubles ‫يمكنك‬ ‫أنك‬ ‫يعني‬ ‫مما‬ ‫السي‬ ‫لغة‬ ‫في‬ ‫حرف‬ ‫ألحقت‬ ‫إذا‬ ‫أنك‬ ‫ملحظة‬ ‫مع‬ ،‫بالك‬ ‫على‬ ‫يخطر‬ ‫رقم‬ ‫أي‬ ‫تكتب‬ ‫أن‬ L ‫أو‬ l ‫مفسر‬ ‫تخبر‬ ‫فإنك‬ .‫باثيون‬ ‫لغة‬ ‫مقايس‬ ‫على‬ ‫طويل‬ ‫صحيح‬ ‫عدد‬ ‫العدد‬ ‫هذا‬ ‫أن‬ ‫بايثون‬ ‫لغة‬ – ‫الستعشرية‬ ‫و‬ ‫الثمانية‬ ‫اﻷعداد‬ ‫بالصفر‬ ‫تبدأ‬ ‫التي‬ ‫هي‬ ‫الثمانية‬ ‫اﻷعداد‬ 0 ‫بم‬ ‫تبدأ‬ ‫التي‬ ‫هي‬ ‫الستعشرية‬ ‫اﻷعداد‬ ‫و‬ 0x ‫أو‬ 0X . ‫المركبة‬ ‫اﻷعداد‬- ( )‫التخيلي‬ ‫الجزء‬ + ‫الحقيقي‬ ‫(الجزء‬ ‫كالتالي‬ ‫يكتب‬ ‫هو‬ ‫و‬ ‫النوع‬ ‫بهذا‬ ‫تزودك‬ ‫بايثون‬ ‫لغة‬ real- part + imaginary- part ‫باللحقة‬ ‫ينتهي‬ ‫و‬ ) j ‫أو‬ J . :‫بايثون‬ ‫في‬ ‫المعاملت‬ ‫تعابير‬ ‫أو‬ ( ‫اﻷعداد‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫وهي‬ ‫التعابير‬ ‫هي‬ ‫اﻷعداد‬ ‫معالجة‬ ‫في‬ ‫اﻷساسية‬ ‫اﻷداءة‬ ‫ربما‬ ‫أن‬ ‫تريمد‬ ‫عندمما‬ ‫ذلك‬ ‫على‬ ‫المثال‬ ‫و‬ ،‫بايثون‬ ‫فمي‬ ‫تنفيذهما‬ ‫عنمد‬ ‫قيممة‬ ‫تنتنمج‬ ‫معاملت‬ ‫و‬ )‫أخرى‬ ‫كائنات‬ ‫مثل‬ ‫عددين‬ ‫تجمع‬ x ‫و‬ y ‫تقول‬ ‫فإنك‬ x + y . + ‫هنا‬ ‫فالمعامل‬ ‫أسمبقيتها‬ ‫يمبين‬ ‫و‬ ‫يشرحهما‬ ‫و‬ ‫يبينهما‬ ‫التالي‬ ‫الجدول‬ ‫و‬ ‫المعاملت‬ ‫هذه‬ ‫ممن‬ ‫طويلة‬ ‫بقائممة‬ ‫بايثون‬ ‫تزودنما‬ :‫تنازليا‬ ‫التنفيذ‬ ‫عند‬ ‫المعامل‬ ‫الوصف‬ x or y "‫"أو‬ ‫المنطقي‬ ‫معامل‬ x and y "‫"و‬ ‫المنطقي‬ ‫معامل‬ 11
  • 13.
    ‫المعامل‬ ‫الوصف‬ not x "‫"عكس‬ ‫المنطقي‬‫معامل‬ in, not in ‫الكائن‬ ‫العضوية‬ ‫اختبار‬ is, is not ‫الكائن‬ ‫هوية‬ ‫اختبار‬ x | y ‫البت‬ ‫مستوى‬ ‫على‬ "‫"أو‬ ‫معامل‬ x ^ y ‫البت‬ ‫مستوى‬ ‫على‬ "‫"عكس‬ ‫معامل‬ x & y ‫البت‬ ‫مستوى‬ ‫على‬ "‫"و‬ ‫معامل‬ x << y, x >> y ‫إزاحة‬ x ‫بمقدار‬ ‫شمال‬ ‫أو‬ ‫يمينا‬ y ‫البتات‬ ‫من‬ x + y, x – y ‫الجمع‬ ‫و‬ ‫الطرح‬ ‫معامل‬ x * y, x / y, x % y ‫القسمة‬ ‫باقي‬ ‫و‬ ‫القسمة‬ ‫و‬ ‫الضرب‬ ‫معامل‬ ‫العداد‬ ‫على‬ ‫العمل‬ ‫لنطبع‬ ‫اﻷوامر‬ ‫سطر‬ ‫نشغل‬ ‫فدعنا‬ ،‫واقعيا‬ ‫و‬ ‫عمليا‬ ‫تجربتها‬ ‫هي‬ ‫النظرية‬ ‫اﻷشياء‬ ‫لفهم‬ ‫طريقة‬ ‫أحسن‬ .‫عمليا‬ ‫سابقا‬ ‫قلناه‬ ‫ما‬ ‫ستشرح‬ ‫التي‬ ‫اﻷسطر‬ ‫بعض‬ ‫عليه‬ :‫اﻷسياسية‬ ‫العمليات‬ ‫مثمل‬ ‫اﻷعداد‬ ‫فئة‬ ‫ممن‬ ‫كائن‬ ‫إنشاء‬ ‫إلى‬ ‫نحتاج‬ ‫شيمء‬ ‫كمل‬ ‫قبمل‬ x ‫و‬ b ، ‫معاملت‬ ‫عليمه‬ ‫نطبق‬ ‫لكمي‬ ، ،‫معه‬ ‫نتعامل‬ ‫لكي‬ ‫إليه‬ ‫قيمة‬ ‫إسناد‬ ‫ثم‬ ‫تسميته‬ ‫ثم‬ ‫الكائن‬ ‫نوع‬ ‫ذكر‬ ‫إلى‬ ‫ستحتاج‬ ‫اﻷخرى‬ ‫اللغات‬ ‫في‬ ، ‫نوعمه‬ ‫على‬ ‫للتعرف‬ ‫بايثون‬ ‫الباقمي‬ ‫تتولى‬ ‫و‬ ‫قيممه‬ ‫إليمه‬ ‫أسمند‬ ‫ثمم‬ ‫الكائن‬ ‫سمم‬ ‫فقمط‬ ‫بايثون‬ ‫فمي‬ ‫ولكمن‬ .‫بنوعه‬ ‫لتعريف‬ ‫الكائن‬ ‫إلى‬ ‫القيمة‬ ‫اسناد‬ ‫فقط‬ ‫يكفي‬ ‫بايثون‬ ‫كائنات‬ ‫في‬ ‫عام‬ ‫بشكل‬ ‫وهذا‬ : ‫اﻷوامر‬ ‫سطر‬ ‫في‬ ‫التالي‬ ‫اكتب‬، ‫عمليا‬ ‫ذلك‬ ‫لتطبيق‬ %python >>> a = 3 # name created >>> b = 4 ‫إضافة‬ ‫كيفية‬ ‫لحظت‬ ‫ولعلك‬ ، ‫قيمتين‬ ‫إليهما‬ ‫وأسندنا‬ ‫اﻷعداد‬ ‫فئة‬ ‫من‬ ‫كائنين‬ ‫أنشأنا‬ ‫قد‬ ‫نكون‬ ‫وبهذا‬ ‫وسهولة‬ ‫الكود‬ ‫توضيح‬ ‫في‬ ‫كبرى‬ ‫أهمية‬ ‫وللتعليق‬ ، ‫تعليق‬ ‫فهو‬ # ‫بعد‬ ‫ما‬ ‫فكل‬ ‫بايثون‬ ‫في‬ ‫التعليقات‬ .‫آخرين‬ ‫مطورين‬ ‫قبل‬ ‫من‬ ‫تطويره‬ ‫وسهولة‬ ‫قراءته‬ 12
  • 14.
    ‫اﻷقواس‬ ‫بين‬ ‫المعاملت‬‫كانت‬ ‫وكلما‬ ، ‫المعاملت‬ ‫بعض‬ ‫تطبيق‬ ‫إلى‬ ‫ستحتاج‬ ‫الكائنات‬ ‫إنشاء‬ ‫بعد‬ ‫انتبه‬ ‫ولكن‬ ،‫اﻷقواس‬ ‫بدون‬ ‫تعمل‬ ‫ل‬ ‫المعاملت‬ ‫أن‬ ‫يعني‬ ‫ل‬ ‫هذا‬ ‫ولكن‬ ، ‫أوضح‬ ‫اﻷمور‬ ‫كانت‬ ‫كلما‬ : ‫اﻷمثلة‬ ‫بعض‬ ‫إليك‬ ‫و‬ ، ‫سابقا‬ ‫ذكر‬ ‫ما‬ ‫حسب‬ ‫على‬ ‫المعاملت‬ ‫أسبقية‬ ‫إلى‬ >>> b / 2 + a # same as ((4 / 2) + 3) 5 >>> b / (2.0 + a) # same as (4 / (2.0 + 3)) 0.8 ‫المعامل‬ ‫أن‬ ‫وبما‬ ،‫اﻷقواس‬ ‫في‬ ‫المعاملت‬ ‫ترتيب‬ ‫تولت‬ ‫بايثون‬ ‫أن‬ ‫اﻷول‬ ‫المثال‬ ‫في‬ ‫واضح‬ ‫هو‬ ‫فكما‬ ‫فأجبرنما‬ ‫قوسمين‬ ‫التعمبير‬ ‫إلى‬ ‫أضفنما‬ ‫المثال‬ ‫فمي‬ ‫ولكمن‬ ، ‫مقدم‬ ‫فهمو‬ ‫الجممع‬ ‫معاممل‬ ‫ممن‬ ‫أسمفل‬ ‫القسممة‬ ‫عند‬ ‫اﻷمور‬ ‫هذه‬ ‫مثل‬ ‫مراعاة‬ ‫يجب‬ ‫النهاية‬ ‫وفي‬ ، ‫أول‬ ‫تقديمها‬ ‫نريد‬ ‫التي‬ ‫المعاملت‬ ‫تنفيذ‬ ‫على‬ ‫بايثون‬ .‫بايثون‬ ‫لغة‬ ‫في‬ ‫برامجك‬ ‫كتابة‬ ‫المثال‬ ‫تنفيمذ‬ ‫جرب‬ ‫لك‬ ‫سمأقول‬ ، ‫الثانمي‬ ‫المثال‬ ‫فمي‬ ‫العائممة‬ ‫النقطمة‬ ‫إضافمة‬ ‫فائدة‬ ‫مما‬ ‫تسمأل‬ ‫ولعلك‬ ‫هي‬ ‫النتيجة‬ ‫أن‬ ‫وستجد‬ ‫العائمة‬ ‫النقطة‬ ‫إضافة‬ ‫بدون‬ 0 ‫أنه‬ ‫على‬ ‫بايثون‬ ‫تعاملت‬ ‫لقد‬ ‫حصل؟‬ ‫ماذا‬ ، ‫بدون‬ ‫هي‬ ‫كما‬ ‫النتيجة‬ ‫أريد‬ ‫أني‬ ‫بايثون‬ ‫تخبر‬ ‫فإنك‬ ‫العائمة‬ ‫النقطة‬ ‫تكتب‬ ‫عندما‬ ‫ولكن‬ ،‫صحيح‬ ‫عدد‬ .‫بنفسك‬ ‫النتيجة‬ ‫ستلحظ‬ ‫صفرين‬ ‫أضفت‬ ‫إذا‬ ‫وكذلك‬ ‫تقريب‬ :‫البت‬ ‫مستوى‬ ‫على‬ ‫معاملت‬ ‫الثنائي‬ ‫العمد‬ ‫تعرف‬ ‫أن‬ ‫عليمك‬ ‫فيجمب‬ ‫اﻷحيان‬ ‫بعمض‬ ‫فمي‬ ‫البمت‬ ‫المسمتوى‬ ‫على‬ ‫التعاممل‬ ‫إلى‬ ‫سمتحتاج‬ : ‫التالية‬ ‫اﻷمثلة‬ ‫لك‬ ‫وستتضح‬ ‫أول‬ >>> x = 1 # 0001 >>> x << 2 # shift left 2 bits: 0100 4 >>> x | 2 # bitwise OR: 0011 3 >>> x & 1 # bitwise AND: 0001 1 ‫ل‬ ‫الجزئية‬ ‫هذه‬ ‫أنه‬ ‫وستجد‬ ، ‫استمر‬ ، ‫عليك‬ ‫فل‬ ، ‫الثنائية‬ ‫اﻷعداد‬ ‫تدرس‬ ‫ولم‬ ‫تفهم‬ ‫لم‬ ‫إذا‬ 13
  • 15.
    !! ‫يطلبها‬ ‫من‬‫إل‬ ‫يحتاجها‬ : ‫المركبة‬ ‫اﻷعداد‬ ‫هذه‬ ‫مثمل‬ ‫فمي‬ ‫عندك‬ ‫تخصمص‬ ‫ل‬ ‫كشخمص‬ ، ‫الكهرباء‬ ‫و‬ ‫الهندسمة‬ ‫تخصمصات‬ ‫ممن‬ ‫المركبمة‬ ‫اﻷعداد‬ ‫مل‬‫م‬‫فص‬ ‫من‬‫م‬‫م‬ ‫مر‬‫م‬‫أكث‬ ‫إلى‬ ‫متحتاج‬‫م‬‫س‬ ‫ما‬‫م‬‫تفهمه‬ ‫مي‬‫م‬‫لك‬ ‫مك‬‫م‬‫ﻷن‬ ، ‫الكرام‬ ‫مرور‬ ‫مة‬‫م‬‫الجزئي‬ ‫هذه‬ ‫على‬ ‫مر‬‫م‬‫م‬، ‫اﻷمور‬ ‫إذا‬ ‫أما‬ ، ‫قياسي‬ ‫وقت‬ ‫في‬ ‫الباثون‬ ‫باستخدام‬ ‫البرمجة‬ ‫فهم‬ ‫إلى‬ ‫نوصلك‬ ‫أن‬ ‫نريد‬ ‫ونحن‬ ، ‫دراسي‬ :‫اﻷمثلة‬ ‫هذه‬ ‫إلى‬ ‫فانظر‬ ، ‫الكثير‬ ‫لك‬ ‫توفر‬ ‫بايثون‬ ‫ستجد‬ ‫فإنك‬ ‫تخصصه‬ ‫لب‬ ‫من‬ ‫اﻷعداد‬ ‫هذه‬ ‫كان‬ >>> 1j * 1J (- 1+0j) >>> 2 + 1j * 3 (2+3j) >>> (2+1j)*3 (6+3j) .‫التفصيل‬ ‫من‬ ‫للمزيد‬ ‫بايثون‬ ‫وثائق‬ ‫راجع‬ ‫المجال‬ ‫هذا‬ ‫في‬ ‫للستزاده‬ : ‫اﻷدوات‬ ‫من‬ ‫المزيد‬ ‫وحدة‬ ‫وتقدم‬ ، ‫الرياضيات‬ ‫مع‬ ‫تتعامل‬ ‫أدوات‬ ‫عدة‬ ‫بايثون‬ ‫لك‬ ‫توفر‬ math ‫جميع‬ ‫مع‬ ‫تتعامل‬ ‫التي‬ :‫المثال‬ ‫إليك‬ ‫و‬ ، ‫الوحدة‬ ‫هذه‬ ‫تستورد‬ ‫أن‬ ‫عليك‬ ‫يجب‬ ‫ولكن‬ ، ‫الرياضيات‬ ‫قوانين‬ >>> import math >>> math.pi 3.14159265359 >>> >>> abs(- 42), 2**4, pow(2, 4) (42, 16, 16) . ‫تعالى‬ ‫ال‬ ‫بإذن‬ ‫القادمة‬ ‫الفصول‬ ‫في‬ ‫التفصيل‬ ‫من‬ ‫بشيء‬ ‫وحدات‬ ‫عن‬ ‫سنتكلم‬ ‫و‬ 14
  • 16.
    ‫النصية‬ ‫السلسل‬ ‫النصمية‬ ‫والسملسل‬،‫النصمية‬‫السملسل‬ ‫همو‬ ‫بايثون‬ ‫فمي‬ ‫الرئيسمية‬ ‫المدمجمة‬ ‫الكائنات‬ ‫ممن‬ ‫الثانمي‬ ‫النوع‬ ‫استخدام‬ ‫يمكنك‬ ‫آخر‬ ‫وبمعنى‬، ‫واحدة‬ ‫وحدة‬ ‫في‬ ‫بيانات‬ ‫أو‬ ‫اسم‬ ‫لتخزين‬ ‫حروف‬ ‫تجمع‬ ‫عن‬ ‫عبارة‬ ‫شابمه‬ ‫ومما‬ ‫الكلمات‬ ‫و‬ ‫اﻷسمماء‬ ‫و‬ ‫الروابمط‬ ‫مثمل‬ ‫كنمص‬ ‫تمثيله‬ ‫يقبمل‬ ‫شيمء‬ ‫كمل‬ ‫فمي‬ ‫النصمية‬ ‫السملسل‬ .‫ذلك‬ ‫و‬ ‫النصمية‬ ‫سملسل‬ ‫الكائن‬ ‫على‬ ‫تحتوي‬ ‫أنهما‬ ‫سمتجد‬ ‫بايثون‬ ‫قبمل‬ ‫أخرى‬ ‫لغات‬ ‫اسمتخدمت‬ ‫كنمت‬ ‫إذا‬ ‫حرف‬ ‫كائن‬ ‫أيضا‬ char ‫وتسريعا‬ ‫للتعلم‬ ‫تسهيل‬ ‫وذلك‬ ‫نصية‬ ‫كسلسل‬ ‫تعامل‬ ‫الحروف‬ ‫بايثون‬ ‫في‬ .‫للبرمجة‬ ‫معرفة‬ ‫و‬ ‫التقطيع‬ ‫و‬ ‫الفهرسة‬ ‫مثل‬ ‫النصية‬ ‫السلسل‬ ‫مع‬ ‫تتعامل‬ ‫التي‬ ‫الدوال‬ ‫من‬ ‫بالكثير‬ ‫تزودنا‬ ‫بايثون‬ ‫بايثون‬ ‫في‬ ‫النصية‬ ‫السلسل‬ ‫لمعالجة‬ ‫مستقلة‬ ‫وحدات‬ ‫وهناك‬، ‫السلسل‬ ‫تجميع‬ ‫و‬ ‫السلسلة‬ ‫طول‬ ‫مثل‬ string ‫و‬ regex ‫و‬ re . : ‫دوالها‬ ‫وبعض‬ ‫النصية‬ ‫السلسل‬ ‫إنشاء‬ ‫كيفية‬ ‫سريع‬ ‫بشكل‬ ‫يعرض‬ ‫التالي‬ ‫الجدول‬ ‫و‬ ‫العملية‬ ‫شرحها‬ S1 = ' ' ‫فارغة‬ ‫سلسلة‬ s2 = "spam's" ‫مزدوجة‬ ‫اقتباس‬ ‫علمات‬ block = """...""" ‫تنصيص‬ ‫علمات‬ ‫ثلث‬ s1 + s2, s2 * 3 ‫الجمع‬ ‫التكرار‬ s2[i], s2[i:j], len(s2) ‫الفهرسة‬ ‫التقطيع‬ ‫الطول‬ ‫معرفة‬ "a %s parrot" %'dead' ‫النصية‬ ‫السلسل‬ ‫تهيئة‬ for x in s2, 'm' in s2 ‫تكرارية‬ ‫الحلقة‬ ‫العضوية‬ ‫ولك‬ ،‫نفسه‬ ‫العمل‬ ‫يؤدين‬ ‫فكلهن‬ ، ‫المزدوجة‬ ‫و‬ ‫المفردة‬ ‫القتباس‬ ‫علمة‬ ‫بين‬ ‫فرق‬ ‫ل‬ ‫أنه‬ ‫لحظ‬ .‫اﻷختيار‬ ‫حرية‬ 15
  • 17.
    ‫النصية‬ ‫السلسل‬ ‫على‬‫العمل‬ ‫نوع‬ ‫من‬ ‫قيمة‬ ‫له‬ ‫وتسند‬ ‫اسمه‬ ‫تذكر‬ ‫أن‬ ‫له‬ ‫يكفي‬ ‫النصية‬ ‫السلسل‬ ‫من‬ ‫كائن‬ ‫إنشاء‬ ‫أن‬ ‫عليك‬ ‫مر‬ ‫كما‬ ‫الجوانمب‬ ‫نسمتكشف‬ ‫فدعنما‬ ،‫السمابق‬ ‫الجدول‬ ‫فمي‬ ‫أمثلة‬ ‫ثلثمة‬ ‫عليمك‬ ‫ممر‬ ‫وقمد‬ ، ‫النصمية‬ ‫السملسل‬ ..‫اﻷخرى‬ ‫الساسية‬ ‫العمليات‬ ‫كائنات‬ ‫مي‬‫م‬‫ف‬ ‫ما‬‫م‬‫معه‬ ‫مل‬‫م‬‫التعام‬ ‫مف‬‫م‬‫كي‬ ‫مت‬‫م‬‫وعرف‬ * ‫الضرب‬ ‫مل‬‫م‬‫معام‬ ‫و‬ + ‫مع‬‫م‬‫الجم‬ ‫مل‬‫م‬‫المعام‬ ‫مك‬‫م‬‫علي‬ ‫مر‬‫م‬‫م‬ ‫مد‬‫م‬‫لق‬ ، ‫للنمص‬ ‫كتكرار‬ ‫الضرب‬ ‫و‬ ‫كإضافمة‬ ‫الجممع‬ ‫تعاممل‬ ‫فهمي‬ ‫النصمية‬ ‫السملسل‬ ‫كائنات‬ ‫أمما‬ ، ‫اﻷعداد‬ .‫نصية‬ ‫سلسل‬ ‫الطرفين‬ ‫كل‬ ‫يكون‬ ‫أن‬ ،‫الجمع‬ ‫معامل‬ ‫في‬ ‫يشترط‬ ‫ولكن‬ ‫الدالة‬ ‫وهي‬ ‫النصية‬ ‫السلسلة‬ ‫طول‬ ‫لنا‬ ‫تحسب‬ ‫بدالة‬ ‫بايثون‬ ‫وتزودنا‬ len ‫ل‬ ‫اللغة‬ ‫مع‬ ‫مدمجة‬ ‫هي‬ ‫و‬ :‫اﻷمثلة‬ ‫بعض‬ ‫وهذه‬ ، ‫استيراد‬ ‫إلى‬ ‫تحتاج‬ %python >>> len('abc') # length: number items 3 >>> 'abc' + 'def' # concatenation: a new string 'abcdef' >>> 'Ni!' * 4 # like "Ni!" + "Ni!" + ... 'Ni!Ni!Ni!Ni!' ‫باستخدام‬ ‫وذلك‬ ‫النصية‬ ‫السلسلة‬ ‫في‬ ‫تكرارية‬ ‫حلقة‬ ‫عمل‬ ‫إلى‬ ‫اﻵن‬ ‫سنأتي‬ for ‫العضوية‬ ‫اختبار‬ ‫و‬ ‫باستخدام‬ in : >>> myjob = "hacker" >>> for c in myjob: print c, # step though items ... h a c k e r >>> "k" in myjob # 1 means true 1 16
  • 18.
    ‫النصية‬ ‫السلسلة‬ ‫التقطيع‬‫و‬ ‫الفهرسة‬ ‫يعطينا‬ ‫التركيب‬ ‫هذا‬ ‫فإن‬ ، ‫الحروف‬ ‫من‬ ‫مجموعة‬ ‫كأنها‬ ‫بايثون‬ ‫في‬ ‫تعرف‬ ‫النصية‬ ‫السلسل‬ ‫أن‬ ‫بما‬ ‫توفر‬ ‫وكذلك‬ ، ‫المفهرس‬ ‫يسمى‬ ‫بما‬ ‫أعضاءه‬ ‫من‬ ‫أي‬ ‫إلى‬ ‫الوصول‬ ‫إمكانية‬ ‫من‬ ‫المجموعة‬ ‫مميزات‬ ‫من‬ ‫العد‬ ‫تبدأ‬ ‫بايثون‬ ‫أن‬ ‫لحظ‬ ‫ولكن‬ ،‫المفهرس‬ ‫باستخدام‬ ‫السلسلة‬ ‫تلك‬ ‫تقطيع‬ ‫إمكانية‬ ‫بايثون‬ ‫لنا‬ : ‫اﻷمثلة‬ ‫هذه‬ ‫إليك‬ ‫واﻵن‬ ،‫السي‬ ‫من‬ ‫مشتقة‬ ‫لغة‬ ‫كل‬ ‫مثل‬ ‫الواحد‬ ‫وليس‬ ‫المفهرس‬ ‫في‬ ‫الصفر‬ >>> S = 'spam' >>> S[0], S[- 2] # indexing from front or end ('s', 'a') >>> S[1:3], S[1:], S[:- 1] # slicing: extract section ('pa', 'pam', 'spa') ‫متغير‬ ‫بتعريف‬ ‫أول‬ ‫قمنا‬ s ‫من‬ ‫الفهرسة‬ ‫بعملية‬ ‫قمنا‬ ‫ثم‬ ، ‫معينة‬ ‫قيمة‬ ‫إليه‬ ‫وأسندنا‬ ‫نصية‬ ‫سلسلة‬ ‫بأنه‬ [‫فمم‬ ، ‫النهايمة‬ ‫وممن‬ ‫البدايمة‬ 0 ] S ‫فهرسمته‬ ‫الذي‬ ‫الحرف‬ ‫أظهمر‬ ‫تعنمي‬ 0 ‫كان‬ ‫الناتمج‬ ‫و‬ s [‫و‬ ، 2 ]- S ‫فهرسته‬ ‫الذي‬ ‫الحرف‬ ‫أظهر‬ ‫تعني‬ 2 .‫اﻷخير‬ ‫من‬ [‫فم‬ ‫المفهرس‬ ‫باستخدام‬ ‫التقطيع‬ ‫بعملية‬ ‫قمنتا‬ ‫ذلك‬ ‫بعد‬ 1:3 ] S ‫فما‬ ‫اﻷول‬ ‫الحرف‬ ‫من‬ ‫اجلب‬ ‫تعني‬ :[‫أمما‬ ، ‫فوقمه‬ ‫ومما‬ ‫الثالث‬ ‫الحرف‬ ‫تجلب‬ ‫ل‬ ‫ولكمن‬ ‫أعلى‬ 1 ] S ‫فمما‬ ‫اﻷول‬ ‫الحرف‬ ‫ممن‬ ‫اجلب‬ ‫فتعنمي‬ [ ‫أما‬ ، ‫النهاية‬ ‫إلى‬ ‫فوقه‬ 1 ]:- S ‫اﻷخير‬ ‫الحرف‬ ‫ماعدا‬ ‫السلسلة‬ ‫كل‬ ‫اجلب‬ ‫فتعني‬ ‫النصية‬ ‫السلسل‬ ‫تهيئة‬ ‫ممن‬‫م‬‫ولك‬ ،‫طرق‬ ‫عدة‬ ‫فهناك‬ ‫متغيرة‬ ‫كائنات‬ ‫مما‬‫م‬‫إليه‬ ‫ممف‬‫م‬‫تضي‬ ‫أن‬ ‫وأردت‬ ‫طويلة‬ ‫مملسلة‬‫م‬‫س‬ ‫عندك‬ ‫كان‬ ‫إذا‬ # ‫ولغة‬، ‫كبير‬ ‫بشكل‬ ‫السي‬ ‫لغة‬ ‫تستعملها‬ ‫طريقة‬ ‫لك‬ ‫توفر‬ ‫بايثون‬ C :‫التالي‬ ‫المثال‬ ‫انظر‬ ، ‫حديثا‬ 17
  • 19.
    >>> S ='spam' >>> S[0] = "x" Raises an error! >>> S = S + 'Spam!' # to change a string, make a new one >>> S 'spamSpam!' >>> S = S[:4] + 'Burger' + S[- 1] >>> S 'spamBurger!' >>> 'That is %d %s bird!' %(1, 'dead') # like C sprintf That is 1 dead bird! ‫كباقي‬ ‫اﻷعداد‬ ‫وعند‬ ، ‫النصية‬ ‫السلسل‬ ‫مع‬ ‫ليعمل‬ % ‫المعامل‬ ‫تعريف‬ ‫أعادة‬ ‫بايثون‬ ‫أن‬ ‫لحظ‬ ‫الدالة‬ ‫وخاصة‬ ‫النص‬ ‫ترتيب‬ ‫في‬ ‫السي‬ ‫هيئة‬ ‫استخدم‬ ‫اﻷخير‬ ‫السطر‬ ‫أن‬ ‫سابقا‬ ‫قلنا‬ ‫كما‬ ،‫القسمة‬ sprintf ‫على‬ ‫اليمين‬ ‫على‬ ‫ما‬ ‫يساوي‬ ‫اليسار‬ ‫على‬ ‫كل‬ ‫ما‬ ‫تعني‬ ‫بسيطة‬ ‫وهي‬ ،‫قواعدها‬ ‫كل‬ ‫أخذ‬ ‫و‬ :‫التهيئة‬ ‫هذه‬ ‫على‬ ‫أكثر‬ ‫أمثلة‬ ‫وإليك‬ ، ‫الترتيب‬ >>> exclamation = "Ni" >>> "The knights who say %s!" %exclamation 'The knights who say Ni!' >>> "%d %s %d you" %(1, 'spam', 4) '1 spam 4 you' >>> "%s - - %s - - %s" %(42, 3.14159, [1, 2, 3]) '42 - - 3.14159 - - [1, 2, 3]' ‫أما‬ ، ‫شيء‬ ‫على‬ ‫تدل‬ ‫واحدة‬ ‫كل‬ ‫ولكنها‬ ‫ل‬ ‫نقول‬ ‫؟‬ ‫اعتباطية‬ % ‫بعد‬ ‫الحروف‬ ‫هل‬ ‫ولكن‬ s ‫فهي‬ % :‫يشرحها‬ ‫التالي‬ ‫فالجدول‬ ‫البقية‬ ‫أما‬ ، ‫غيره‬ ‫أو‬ ‫نصية‬ ‫سلسلة‬ ‫أو‬ ‫عددا‬ ‫أكان‬ ‫سواء‬ ‫كائن‬ ‫لكل‬ ‫عامة‬ ‫ستعشري‬ ‫عدد‬ Hex integer %X ‫نصية‬ ‫سلسلة‬ String % ‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬ 1 Floating- point %e ‫حروف‬ Character %c ‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬ 2 Floating- point %E ‫عشري‬ ‫عدد‬ Decimal %d ‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬ 3 Floating- point %f ‫صحيح‬ ‫عدد‬ Integer %i ‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬ 4 Floating- point %g Unsigned (int) %u ‫الهيئة‬ ‫العائمة‬ ‫الفاصلة‬ 5 Floating- point %G ‫ثماني‬ ‫عدد‬ Octal integer %o 18
  • 20.
    % ‫حرف‬ %% ‫ستعشري‬ ‫عدد‬ Hexinteger %x ‫النصية‬ ‫لسلسل‬ ‫العامة‬ ‫أدوات‬ ‫واحدة‬ ‫أشهر‬ ‫ولعل‬ ،‫النصية‬ ‫السلسل‬ ‫مع‬ ‫للتعامل‬ ‫خاصة‬ ‫بوحدات‬ ‫تزودنا‬ ‫بايثون‬ ‫سابقا‬ ‫قلنا‬ ‫كما‬ ‫هي‬ ‫وأقواها‬ string ‫من‬ ‫الحروف‬ ‫تحويل‬ ‫على‬ ‫القدرة‬ ‫فمنها‬ ‫الدوال‬ ‫من‬ ‫بالعديد‬ ‫تزودنا‬ ‫فهي‬ . ‫السلسلة‬ ‫تحويل‬ ‫وكذلك‬ ، ‫المعرفة‬ ‫السلسل‬ ‫في‬ ‫البحث‬ ‫وكذلك‬، ‫والعكس‬ ‫الصغيرة‬ ‫إلى‬ ‫الكبيرة‬ ‫على‬ ‫مثال‬ ‫وهذا‬ ،‫اﻷدوات‬ ‫جميع‬ ‫للمعرفة‬ ‫بايثون‬ ‫وثائق‬ ‫راجع‬ ، ‫الكثير‬ ‫وغيرها‬ ، ‫عدد‬ ‫إلى‬ ‫النصية‬ ‫وحدة‬ ‫قدرة‬ string : >>> import string # standard utilities module >>> S = "spammify" >>> string.upper(S) # convert to uppercase 'SPAMMIFY' >>> string.find(S, "mm") # return index of substring 3 >>> string.atoi("42") # convert from/to string 42 >>> string.join(string.split(S, "mm"), "XX") 'spaXXify' ‫الدالة‬ ‫أن‬ ‫القضيمة‬ ‫فمي‬ ‫مما‬ ‫فكمل‬ ‫الفهمم‬ ‫سمهل‬ ‫فهمو‬،‫تعقيدا‬ ‫اﻷكثمر‬ ‫وهمو‬ ‫اﻷخيمر‬ ‫المثال‬ ‫لعمل‬ split ‫الحرف‬ ‫عند‬ ‫قسمين‬ ‫إلى‬ ‫السلسلة‬ ‫بتجزئة‬ ‫قامت‬ mm ‫الدالة‬ ‫قامت‬ ‫ثم‬ ، join ‫بدمج‬ XX ‫بين‬ .‫عملها‬ ‫كيفية‬ ‫ومعرفة‬ ‫واحدة‬ ‫دالة‬ ‫كل‬ ‫تجربة‬ ‫يمكنك‬ ، ‫السابقين‬ ‫القسمين‬ ‫الدالة‬ ‫أن‬ ‫لحمظ‬ atoi ‫أخرى‬ ‫دالة‬ ‫توجمد‬ ‫ولكمن‬ ، ‫فقمط‬ ‫عدد‬ ‫إلى‬ ‫النصمية‬ ‫السملسلة‬ ‫بتحويمل‬ ‫تقوم‬ ‫تسممى‬ ‫مدمجمة‬ eval ‫ممن‬ ‫الحال‬ ‫بطبيعمة‬ ‫أبطمأ‬ ‫ولكنهما‬ ‫نوع‬ ‫أي‬ ‫إلى‬ ‫النصمية‬ ‫السملسلة‬ ‫بتحويمل‬ ‫تقوم‬ .‫اﻷولى‬ ‫الدالة‬ ‫النصية‬ ‫السلسلة‬ ‫كتابة‬ ‫في‬ ‫الختلفات‬ ‫تنسمق‬ ‫أن‬ ‫تسمتطيع‬ ‫بهما‬ ‫التمي‬ ‫الهروب‬ ‫أحرف‬ ‫عمن‬ ‫سمنتكلم‬ ، ‫النصمية‬ ‫السملسل‬ ‫عمن‬ ‫كلمنما‬ ‫نهايمة‬ ‫فمي‬ ‫فمي‬ ‫اﻷحرف‬ ‫هذه‬ ‫لك‬ ‫يمبين‬ ‫التالي‬ ‫والجدول‬ ‫وغيرهما‬ ‫السمطر‬ ‫بدايمة‬ ‫حرف‬ ‫مثمل‬ ، ‫جيمد‬ ‫بشكمل‬ ‫النمص‬ 19
  • 21.
    :‫بايثون‬ newli ne ‫الستمرار‬ n ‫جديد‬ ‫سطر‬ ‫إظهار‬ v Tab ‫عمودية‬ ' ‫واحدة‬‫اقتباس‬ ‫علمة‬ ‫إظهار‬ t Tab ‫رأسية‬ " ‫مزدوجة‬ ‫اقتباس‬ ‫علمة‬ ‫إظهار‬ r ‫السطر‬ ‫بداية‬ ‫إلى‬ ‫العودة‬ Carriage return a ‫جرس‬ f ‫جديدة‬ ‫صفحة‬ Formfeed b ‫الخلفي‬ ‫الحذف‬ ‫مفتاح‬ Backspace 0XX Octal value XX e ‫الهروب‬ ‫زر‬ Escape xXX Hex value XX 000 Null ‫السلسلة‬ ‫إنهاء‬ ‫عدم‬ other ‫آخر‬ ‫حرف‬ ‫أي‬ ‫القوائم‬ ‫أل‬ ‫وترتيب‬ ‫مرونة‬ ‫المدمجة‬ ‫الكائنات‬ ‫أكثر‬ ‫يعتبر‬ ‫كائن‬ ‫إلى‬ ‫ونصل‬ ‫بايثون‬ ‫لغة‬ ‫غمار‬ ‫في‬ ‫مشوارنا‬ ‫نكمل‬ ‫القائممة‬ ‫وهمو‬ list ‫عدة‬ ‫ضمنهما‬ ‫فمي‬ ‫تجممع‬ ‫أن‬ ‫تسمتطيع‬ ‫أنهما‬ ‫النصمية‬ ‫السملسل‬ ‫عمن‬ ‫القوائم‬ ‫تمتاز‬ ، ‫كائنات‬ ‫و‬ ‫أعداد‬ ‫و‬ ‫مية‬‫م‬‫نص‬ ‫ملسلة‬‫م‬‫س‬ ‫من‬‫م‬‫م‬ ‫تكون‬ ‫أن‬ ‫من‬‫م‬‫يمك‬ ‫مة‬‫م‬‫فالقائم‬ ، ‫مط‬‫م‬‫فق‬ ‫موص‬‫م‬‫النص‬ ‫مت‬‫م‬‫وليس‬ ‫كائنات‬ ‫و‬ ‫السمي‬ ‫لغمة‬ ‫مثمل‬ ‫اﻷخرى‬ ‫اللغات‬ ‫فمي‬ ‫المعطيات‬ ‫بنمى‬ ‫مقام‬ ‫القائممة‬ ‫وتقوم‬ .‫أخرى‬ ‫قوائم‬ ‫حتمى‬ ‫أخرى‬ :‫منها‬ ‫مميزات‬ ‫بعدة‬ ‫بايثون‬ ‫في‬ ‫القوائم‬ ‫وتتميز‬،‫الجافا‬ ‫متجانسة‬ ‫غير‬ ‫كائنات‬ ‫من‬ ‫مرتبة‬ ‫مجموعة‬ ‫القائمة‬ ‫و‬ ‫كمجموعة‬ ‫تنظمهم‬ ‫أن‬ ‫يمكنك‬ ‫لذا‬ ‫الكائنات‬ ‫للتجميع‬ ‫مكان‬ ‫القائمة‬ ،‫الوظيفية‬ ‫الناحية‬ ‫من‬ . ‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫بترتيبهم‬ ‫تقوم‬ ‫أيضا‬ ‫المفهرس‬ ‫باستخدام‬ ‫الوصول‬ ‫عملية‬ ‫وإجراء‬ ،‫المفهرس‬ ‫باستخدام‬ ‫القائمة‬ ‫أعضاء‬ ‫إلى‬ ‫تصل‬ ‫أن‬ ‫تستطيع‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬ .‫والسلسلة‬ ‫التقطيع‬ ‫عالية‬ ‫مرونة‬ ‫حسب‬ ‫وتصغر‬ ‫تكبر‬ ‫أن‬ ‫يمكن‬ ‫بحيث‬ ،‫النصية‬ ‫السلسل‬ ‫مرونة‬ ‫من‬ ‫أكبر‬ ‫عالية‬ ‫بمرونة‬ ‫القوائم‬ ‫تتمتع‬ .‫متشابكة‬ ‫تصير‬ ‫بحيث‬ ‫قوائم‬ ‫في‬ ‫قوائم‬ ‫وضع‬ ‫ويمكنك‬ ،‫برنامجك‬ ‫متطلبات‬ 20
  • 22.
    ‫المرجعية‬ ‫الكائنات‬ ‫من‬‫مصفوفة‬ ‫الناحية‬ ‫هذه‬ ‫من‬ ‫وهي‬،‫السي‬ ‫لغة‬ ‫في‬ ‫المصفوفات‬ ‫من‬ ‫خاص‬ ‫نوع‬ ‫القوائم‬ ‫تعتبر‬ ‫التقنية‬ ‫الناحية‬ ‫من‬ ‫ب‬ ‫ما‬‫م‬‫معه‬ ‫مل‬‫م‬‫نتعام‬ ‫ما‬‫م‬‫عندم‬ ‫أي‬ ، ‫مة‬‫م‬‫مرجعي‬ ‫ما‬‫م‬‫بقولن‬ ‫ما‬‫م‬‫هن‬ ‫مد‬‫م‬‫ونقص‬ ،‫مة‬‫م‬‫مرجعي‬ ‫كائنات‬ ‫من‬‫م‬‫ع‬ ‫عبارة‬ can't read superblock ،‫عنه‬ ‫نسخة‬ ‫وليس‬ ‫الكائن‬ ‫إلى‬ ‫يؤشر‬ ‫مؤشر‬ ‫مع‬ ‫نتعامل‬ ‫فإننا‬ ‫تعريفها‬ ‫عد‬ .‫البرمجة‬ ‫علينا‬ ‫يسهل‬ ‫و‬ ‫أكبر‬ ‫سرعة‬ ‫يعطينا‬ ‫وهذا‬ :‫القوائم‬ ‫عمليات‬ ‫أهم‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬ ‫العملية‬ ‫الوصف‬ L1 = [] ‫فارغة‬ ‫قائمة‬ L2 = [0, 1, 2, 3] ‫من‬ ‫اﻷدلة‬ ‫و‬ ‫عناصر‬ ‫أربعة‬ 0 ‫إلى‬ 3 L3 = ['abc', ['def', 'ghi']] ‫متداخلة‬ ‫قوائم‬ L2[i], L3[i][j] L2[i:j], len(L2) ‫الفهرسة‬ ‫التقطيع‬ ‫الطول‬ L1 + L2, L2 * 3 ‫سلسلة‬ ‫إعادة‬ for x in L2, 3 in L2 ‫تكرار‬ ‫العضوية‬ L2.append(4), L2.sort(), L2.index(1), L2.reverse() :‫الدوال‬ ‫توسيع‬ ‫ترتيب‬ ‫البحث‬ ‫عكس‬ del L2[k], L2[i:j] = [] ‫النكماش‬ L2[i] = 1, L2[i:j] = [4,5,6] ‫الفهرس‬ ‫إسناد‬ ‫المقطع‬ ‫اسناد‬ range(4), xrange(0, 4) ‫اﻷعداد‬ ‫من‬ ‫مجموعات‬ ‫أو‬ ‫قوائم‬ ‫إنشاء‬ ‫مي‬‫م‬‫ف‬ ‫مك‬‫م‬‫علي‬ ‫مرت‬ ‫مد‬‫م‬‫ق‬ ‫مابق‬‫م‬‫الس‬ ‫الجدول‬ ‫مي‬‫م‬‫ف‬ ‫ذكرت‬ ‫مي‬‫م‬‫الت‬ ‫العمليات‬ ‫مم‬‫م‬‫معظ‬ ‫مت‬‫م‬‫رأي‬ ‫مد‬‫م‬‫ق‬ ‫مك‬‫م‬‫أن‬ ‫متلحظ‬‫م‬‫س‬ ‫مثمل‬ ‫النصمية‬ ‫السملسل‬ ‫تدعمهما‬ ‫ول‬ ‫القوائم‬ ‫تدعمهما‬ ‫التمي‬ ‫العمليات‬ ‫بعمض‬ ‫إل‬ ، ‫النصمية‬ ‫السملسل‬ .‫والنكماش‬ ‫التوسع‬ ‫و‬ ‫المقاطع‬ ‫إسناد‬ ‫و‬ ‫الفهرس‬ ‫إسناد‬ 21
  • 23.
    ‫القوائم‬ ‫على‬ ‫العمل‬ ‫مي‬‫م‬‫ف‬‫ذكرت‬ ‫مي‬‫م‬‫الت‬ ‫العمليات‬ ‫منأخذ‬‫م‬‫س‬ ‫أخرى‬ ‫ومرة‬،‫ما‬‫م‬‫عليه‬ ‫مل‬‫م‬‫العم‬ ‫مي‬‫م‬‫ه‬ ‫القوائم‬ ‫مم‬‫م‬‫لفه‬ ‫مة‬‫م‬‫طريق‬ ‫مل‬‫م‬‫أفض‬ .‫العملية‬ ‫اﻷمثلة‬ ‫من‬ ‫بشيء‬ ‫نشرحها‬ ‫أن‬ ‫ونحاول‬ ‫السابق‬ ‫الجدول‬ ‫اﻷساسية‬ ‫العمليات‬ : ‫التالي‬ ‫المثال‬ ‫إليك‬ ‫و‬ ‫النصية‬ ‫السلسل‬ ‫تدعمها‬ ‫التي‬ ‫العمليات‬ ‫معظم‬ ‫تدعم‬ ‫القوائم‬ %python >>> len([1, 2, 3]) # length 3 >>> [1, 2, 3] + [4, 5, 6] # concatenation [1, 2, 3, 4, 5, 6] >>> ['Ni!'] * 4 # repetition ['Ni!', 'Ni!', 'Ni!', 'Ni!'] >>> for x in [1, 2, 3]: print x, # iteration ... 1 2 3 ‫والتقطيع‬ ‫الفهرسة‬ ‫مثمل‬ ‫جيمد‬ ‫بشكمل‬ ‫عليهما‬ ‫تعممل‬ ‫والتقطيمع‬ ‫الفهرسمة‬ ‫عمليتمي‬ ‫فإن‬، ‫سملسل‬ ‫عمن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫بمما‬ :‫المثال‬ ‫هذا‬ ‫وإليك‬ ، ‫كائن‬ ‫لكل‬ ‫الحقيقي‬ ‫الموقع‬ ‫ملحظة‬ ‫مع‬ ‫النصية‬ ‫السلسل‬ >>> L = ['spam', 'Spam', 'SPAM!'] >>> L[2] # offsets start at zero 'SPAM!' >>> L[-2] # negative: count from the right 'Spam' >>> L[1:] # slicing fetches sections ['Spam', 'SPAM!'] ‫القوائم‬ ‫في‬ ‫اﻹسناد‬ ‫قيم‬ ‫إسناد‬ ‫على‬ ‫المقدرة‬ ‫هي‬ ‫النصية‬ ‫السلسل‬ ‫عن‬ ‫متميزة‬ ‫وتعتبر‬ ‫القوائم‬ ‫بها‬ ‫أتت‬ ‫التي‬ ‫اﻷشياء‬ ‫لفعل‬ ‫تحتاج‬ ‫التي‬ ‫النصية‬ ‫السلسل‬ ‫بخلف‬ ‫ذلك‬ ‫و‬ ‫القوائم‬ ‫في‬ ‫والمقاطع‬ ‫الفهارس‬ ‫إلى‬ ‫جديدة‬ .‫الكائن‬ ‫من‬ ‫جديدة‬ ‫نسخة‬ ‫إنشاء‬ ‫إلى‬ ‫ذلك‬ 22
  • 24.
    ‫ذلك‬ ‫يبين‬ ‫كما‬‫المقطع‬ ‫أو‬ ‫الفهرس‬ ‫باستخدام‬ ‫المحتوى‬ ‫تغيير‬ ‫تستطيع‬ ‫القوائم‬ ‫استخدام‬ ‫عند‬ : ‫التالي‬ ‫المثال‬ >>> L = ['spam', 'Spam', 'SPAM!'] >>> L[1] = 'eggs' # index assignment >>> L ['spam', 'eggs', 'SPAM!'] >>> L[0:2] = ['eat', 'more'] # slice assignment: delete+insert >>> L # replaces items 0,1 ['eat', 'more', 'SPAM!'] ‫بحذف‬ ‫تقوم‬ ‫أول‬ ‫فإنها‬ ، ‫المقاطع‬ ‫طريق‬ ‫عن‬ ‫القوائم‬ ‫إلى‬ ‫باﻹسناد‬ ‫تقوم‬ ‫حين‬ ‫بايثون‬ ‫أن‬ ‫ملحظة‬ ‫مع‬ ‫سبيل‬ ‫على‬ ،‫واحد‬ ‫كائن‬ ‫من‬ ‫أكثر‬ ‫القيمة‬ ‫كانت‬ ‫ولو‬ ‫مكانه‬ ‫الجديدة‬ ‫القيمة‬ ‫تضع‬ ‫ثم‬ ‫المختار‬ ‫المقطع‬ ‫قائمة‬ ‫عندنا‬ ‫المثال‬ L [ ‫تساوي‬ 1 , 2 , 3 ‫التالي‬ ‫المقطع‬ ‫باستخدام‬ ‫اﻹسناد‬ ‫عملية‬ ‫تطبيق‬ ‫فعند‬ ] L[1:2] = [4, 5 [ ‫ستكون‬ ‫النتيجة‬ ‫فإن‬ ] 1 , 4 , 5 , 3 .] :‫التالي‬ ‫المثال‬ ‫إليك‬ ‫و‬ ‫العكس‬ ‫و‬ ‫البحث‬ ‫و‬ ‫الترتيب‬ ‫و‬ ‫توسيع‬ ‫منها‬ ‫الدوال‬ ‫بعض‬ ‫تدعم‬ ‫القوائم‬ >>> L.append('please') >>> L ['eat', 'more', 'SPAM!', 'please'] >>> L.sort() >>> L ['SPAM!', 'eat', 'more', 'please'] >>> L.reverse() >>> L ['please', 'more', 'eat', 'SPAM!'] >>> L.index('eat') 2 ‫أو‬ ‫الفهرس‬ ‫باستخدام‬ ‫الحذف‬ ‫تدعم‬ ‫فإنها‬ ، ‫مرنة‬ ‫سلسلة‬ ‫عن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫بما‬ ‫وأخيرا‬ : ‫المقطع‬ ‫أو‬ ‫الفهرس‬ ‫طريق‬ ‫عن‬ ‫الحذف‬ ‫أو‬ ‫فارغة‬ ‫قائمة‬ ‫إلى‬ ‫السناد‬ ‫طريق‬ ‫عن‬ ‫وذلك‬ ،‫المقطع‬ 23
  • 25.
    >>> L.sort() >>> L ['SPAM!','eat', 'more', 'please'] >>> del L[0] # delete one item >>> L ['eat', 'more', 'please'] >>> del L[1:] # delete an entire section >>> L # same as L[1:] = [] ['eat'] ‫القواميس‬ ‫كنا‬ ‫وإذا‬،‫بايثون‬ ‫لغة‬ ‫في‬ ‫المرنة‬ ‫المدمجة‬ ‫الكائنات‬ ‫أهم‬ ‫من‬ ‫القواميس‬ ‫تعتبر‬ ‫القوائم‬ ‫إلى‬ ‫باﻷضافة‬ ‫فهي‬ ‫ذلك‬ ‫بعكس‬ ‫القواميس‬ ‫فإن‬ ، ‫المرتبة‬ ‫الكائنات‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫اعتبرنا‬ ‫و‬ ‫ترتيب‬ ‫عليه‬ ‫يقوم‬ ‫الذي‬ ‫القوائم‬ ‫في‬ ‫الرئيسي‬ ‫الشيء‬ ‫ويعتبر‬ ،‫المرتبة‬ ‫غير‬ ‫الكائنات‬ ‫من‬ ‫مجموعة‬ .‫العنصر‬ ‫موقع‬ ‫وليس‬ ‫المفتاح‬ ‫هو‬ ‫القاموس‬ ‫عناصر‬ ‫إحضار‬ ‫التي‬ ‫المعطيات‬ ‫بنى‬ ‫و‬ ‫خوارزميات‬ ‫من‬ ‫الكثير‬ ‫استبدال‬ ‫استطاعت‬ ‫القواميس‬ ‫فإن‬ ‫تلحظ‬ ‫وكما‬ ‫في‬ ‫القواميس‬ ‫تستخدم‬ ‫وأيضا‬ ،‫المستوى‬ ‫منخفضة‬ ‫اللغات‬ ‫بعض‬ ‫في‬ ‫يدويا‬ ‫استخدامها‬ ‫إلى‬ ‫ستضطر‬ .‫المستوى‬ ‫منخفضة‬ ‫اللغات‬ ‫بعض‬ ‫في‬ ‫الجداول‬ ‫عمل‬ ‫ﻷداء‬ ‫اﻷحيان‬ ‫بعض‬ :‫منها‬ ‫خصائص‬ ‫بعدة‬ ‫القواميس‬ ‫وتتميز‬ ‫الموقع‬ ‫وليس‬ ‫المفتاح‬ ‫باستخدام‬ ‫الوصول‬ ‫باستخدام‬ ‫القيم‬ ‫يضع‬ ‫الترابط‬ ‫هذا‬،‫المترابطة‬ ‫المصفوفات‬ ‫عليها‬ ‫يطلق‬ ‫اﻷحيان‬ ‫بعض‬ ‫في‬ ‫القواميس‬ ،‫به‬ ‫خزن‬ ‫الذي‬ ‫المفتاح‬ ‫باستخدام‬ ‫القاموس‬ ‫في‬ ‫عنصر‬ ‫أي‬ ‫إحضار‬ ‫وباستطاعتك‬ ،‫المفاتيح‬ .‫الموقع‬ ‫باستخدام‬ ‫وليس‬ ‫المفتاح‬ ‫باستخدام‬ ‫ولكن‬ ‫الفهرس‬ ‫عمليات‬ ‫نفس‬ ‫ستستخدم‬ ‫متجانسة‬ ‫غير‬ ‫كائنات‬ ‫من‬ ‫منظمة‬ ‫غير‬ ‫مجموعة‬ ‫ترتيب‬ ‫تقدم‬ ‫بايثون‬ ‫الحقيقة‬ ‫في‬،‫معين‬ ‫ترتيب‬ ‫على‬ ‫تبقى‬ ‫ل‬ ‫القواميس‬ ‫في‬ ‫العناصر‬ ،‫القوائم‬ ‫بخلف‬ ‫العناصر‬ ‫أماكن‬ ‫إلى‬ )‫فيزيائية‬ ‫(غير‬ ‫راوبط‬ ‫تقدم‬ ‫المفاتيح‬ ،‫سريعة‬ ‫مشاهدة‬ ‫تقديم‬ ‫يضمن‬ ‫عشوائي‬ .‫القواميس‬ ‫في‬ ‫مرنة‬ ‫خصائص‬ 24
  • 26.
    ‫يمكنها‬ ‫وكذلك‬ ،‫جديدة‬‫نسخة‬ ‫إنشاء‬ ‫بدون‬ ‫والتقلص‬ ‫التوسيع‬ ‫بميزة‬ ‫تزودك‬ ‫القواميس‬ ‫القوائم‬ ‫مثل‬ ‫في‬ ‫قواميس‬ ‫تنشأ‬ ‫أن‬ ‫يمكنك‬ ‫بحيث‬ ‫التداخل‬ ‫ميزة‬ ‫وكذلك‬،‫نوع‬ ‫كل‬ ‫من‬ ‫عناصر‬ ‫على‬ ‫تحتوي‬ ‫على‬ ‫بالعتماد‬ ‫جديدة‬ ‫قيم‬ ‫تسند‬ ‫أن‬ ‫يمكنك‬ ‫وأيضا‬،‫قواميس‬ ‫في‬ ‫قوائم‬ ‫يمكنك‬ ‫وكذلك‬ ‫قواميس‬ ‫المفاتيح‬ ‫المرجعية‬ ‫كائنات‬ ‫من‬ ‫جداول‬ ‫عن‬ ‫عبارة‬ ‫القواميس‬ ‫فإن‬ ، ‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫مصفوفة‬ ‫عن‬ ‫عبارة‬ ‫القوائم‬ ‫أن‬ ‫قلنا‬ ‫كنا‬ ‫إذا‬ ‫المعطيات‬ ‫بنى‬ ‫من‬ ‫جداول‬ ‫تستخدم‬ ‫القواميس‬ ‫داخليا‬ .‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫منظمة‬ ‫غير‬ ‫جداول‬ ‫بايثون‬ ‫ذلك‬ ‫على‬ ‫وعلوة‬ ،‫الطلب‬ ‫حسب‬ ‫تكبر‬ ‫و‬ ‫صغيرة‬ ‫تبدأ‬ ‫وهي‬ ‫السريع‬ ‫السترجاع‬ ‫ميزة‬ ‫تدعم‬ ‫التعمق‬ ‫وعند‬ .‫كبيرة‬ ‫سرعة‬ ‫السترجاع‬ ‫يعطي‬ ‫مما‬ ‫المفاتيح‬ ‫ﻹيجاد‬ ‫محسنة‬ ‫خوارزميات‬ ‫توظف‬ .‫بالضبط‬ ‫القوائم‬ ‫مثل‬ ‫منها‬ ‫نسخ‬ ‫وليس‬ ‫الكائنات‬ ‫مراجع‬ ‫تخزن‬ ‫القواميس‬ ‫أن‬ ‫نجد‬ ‫تكتب‬ .‫القوائم‬ ‫تشابه‬ ‫أنها‬ ‫لحظ‬ ،‫القواميس‬ ‫على‬ ‫الشائعة‬ ‫العمليات‬ ‫أهم‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬ :‫التالي‬ ‫شكل‬ ‫على‬ ‫القواميس‬ key:value ‫العملية‬ ‫الوصف‬ D1 = { } ‫فارغ‬ ‫قاموس‬ d2 = {'spam': 2, 'eggs': 3} ‫القاموس‬ ‫في‬ ‫عنصرين‬ d3 = {'food': {'ham': 1, 'egg': 2}} ‫التداخل‬ d2['eggs'], d3['food']['ham'] ‫المفتاح‬ ‫باستخدام‬ ‫الفهرسة‬ d2.has_key('eggs'), d2.keys(), d2.values() ‫العضوية‬ ‫دالة‬ : ‫الدوال‬ ‫المفاتيح‬ ‫قائمة‬ ‫القيم‬ ‫قائمة‬ len(d1) )‫المخزنة‬ ‫اﻹدخالت‬ ‫(عدد‬ ‫الطول‬ d2[key] = new, del d2[key] ‫والتعديل‬ ‫اﻹضافة‬ ‫الحذف‬ ‫القواميس‬ ‫على‬ ‫العمل‬ :‫السابق‬ ‫الجدول‬ ‫في‬ ‫ذكرت‬ ‫التي‬ ‫العمليات‬ ‫بعض‬ ‫تطبيق‬ ‫في‬ ‫حريتنا‬ ‫لنأخذ‬ ‫المفسر‬ ‫إلى‬ ‫نرجع‬ ‫دعنا‬ :‫اﻷساسية‬ ‫العمليات‬ ‫المفتاح‬ ‫باسمتخدام‬ ‫عناصمره‬ ‫إلى‬ ‫والوصمول‬ ‫قاموس‬ ‫إنشاء‬ ‫يمكنمك‬ ، ‫عام‬ ‫بشكمل‬ key ‫الدالة‬ ‫و‬ ، 25
  • 27.
    len ‫أو‬ ‫القاموس‬ ‫فمي‬‫المخزنمة‬ ‫العناصمر‬ ‫عدد‬ ‫ترجمع‬ ‫وهمي‬ ،‫القواميمس‬ ‫ممع‬ ‫أيضما‬ ‫تعممل‬ ‫المدمجمة‬ ‫الدالة‬ ‫فإن‬ ‫المفاتيح‬ ‫عن‬ ‫حديثنا‬ ‫وعند‬ .‫المفاتيح‬ ‫قائمة‬ ‫طول‬ ‫ترجع‬ ‫آخر‬ ‫بمعنى‬ keys ‫كل‬ ‫ترجع‬ ‫بشكممل‬ ‫القواميممس‬ ‫لمعالجممة‬ ‫قويممة‬ ‫أداة‬ ‫يعتممبر‬ ‫هذا‬ ،‫قائمممة‬ ‫فممي‬ ‫مجموعممة‬ ‫القاموس‬ ‫فممي‬ ‫المفاتيممح‬ .)‫عشوائية‬ ‫القواميس‬ ‫أن‬ ‫(تذكر‬، ‫المفتايح‬ ‫قائمة‬ ‫ترتيب‬ ‫في‬ ‫عليه‬ ‫تعتمد‬ ‫ل‬ ‫ولكن‬ ،‫متسلسل‬ %python >>> d2 = {'spam': 2, 'ham': 1, 'eggs': 3} >>> d2['spam'] # fetch value for key 2 >>> len(d2) # number of entries in dictionary 3 >>> d2.has_key('ham') # key membership test (1 means true) 1 >>> d2.keys() # list of my keys ['eggs', 'spam', 'ham'] ‫القواميس‬ ‫في‬ ‫التغيير‬ ‫بدون‬، ‫أيضا‬ ‫جديدة‬ ‫قيم‬ ‫اسناد‬ ‫و‬ ‫تصغر‬ ‫و‬ ‫تكبر‬ ‫أن‬ ‫تستطيع‬ ‫فلذا‬ ،‫مرتبة‬ ‫غير‬ ‫القواميس‬ ‫أن‬ ‫قلنا‬ ‫كما‬ ‫ﻹنشاء‬ ‫تغييرها‬ ‫أو‬ ‫قيمة‬ ‫إسناد‬ ‫عليك‬ ‫فقط‬ ،‫بالضبط‬ ‫القوائم‬ ‫مثل‬ ‫جديدة‬ ‫قواميس‬ ‫إنشاء‬ ‫إلى‬ ‫الحاجة‬ ‫والدالة‬ .‫القاموس‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬ del ‫القوائم‬ ‫على‬ ‫تعمل‬ ‫مثلما‬ ‫القواميس‬ ‫على‬ ‫أيضا‬ ‫تعمل‬ :‫التالي‬ ‫المثال‬ ‫إليك‬ ، ‫بالضبط‬ >>> d2['ham'] = ['grill', 'bake', 'fry'] # change entry >>> d2 {'eggs': 3, 'spam': 2, 'ham': ['grill', 'bake', 'fry']} >>> del d2['eggs'] # delete entry >>> d2 {'spam': 2, 'ham': ['grill', 'bake', 'fry']} >>> d2['brunch'] = 'Bacon' # add new entry >>> d2 {'brunch': 'Bacon', 'spam': 2, 'ham': ['grill', 'bake', 'fry']} ‫طريقة‬ ‫عن‬ ‫تختلف‬ ‫فهي‬ ، ‫اﻷخير‬ ‫المثال‬ ‫القاموس‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬ ‫إنشاء‬ ‫في‬ ‫الطريقة‬ ‫هنا‬ ‫لحظ‬ 26
  • 28.
    ‫المفتاح‬ ‫على‬ ‫بل‬‫موقع‬ ‫على‬ ‫تعتمد‬ ‫ل‬ ‫القواميس‬ ‫أن‬ ‫وذلك‬ ، ‫القوائم‬ ‫في‬ ‫الجديدة‬ ‫مدخلة‬ ‫إضافة‬ ‫الدالة‬ ‫إلى‬ ‫تحتاج‬ ‫فهي‬ ‫القواميس‬ ‫بعكس‬ ،‫المكان‬ ‫يهمها‬ ‫ل‬ ‫و‬ ‫عشوائية‬ ‫فهي‬ append ‫ﻹضافة‬ .‫القائمة‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬ ‫واقعي‬ ‫مثال‬ ‫العمود‬ ‫في‬ -‫هنا‬ ‫ثلث‬- ‫اللغات‬ ‫أسماء‬ ‫يحوي‬ ‫جدول‬ ‫إنشاء‬ ‫وهو‬ ‫واقعية‬ ‫أكثر‬ ‫مثال‬ ‫هنا‬ ‫سنأخذ‬ ‫وحاول‬ ‫المثال‬ ‫هذا‬ ‫في‬ ‫ركز‬،-‫القيمة‬ – ‫مؤلفيها‬ ‫أسماء‬ ‫يحوي‬ ‫الثاني‬ ‫والعمود‬ -‫المفتاح‬- ‫اﻷول‬ :‫تطبيقه‬ >>> table = {'Python': 'Guido van Rossum', ... 'Perl': 'Larry Wall', ... 'Tcl': 'John Ousterhout' } ... >>> language = 'Python' >>> creator = table[language] >>> creator 'Guido van Rossum' >>> for lang in table.keys(): print lang, 't', table[lang] ... Tcl John Ousterhout Python Guido van Rossum Perl Larry Wall ‫باستخدام‬ ‫مباشر‬ ‫بشكل‬ ‫تكررها‬ ‫أن‬ ‫يمكن‬ ‫فل‬ ‫متسلسلة‬ ‫ليست‬ ‫القواميس‬ ‫ﻷن‬،‫اﻷخير‬ ‫اﻷمر‬ ‫لحظ‬ for ،‫القاموس‬ ‫عناصر‬ ‫جميع‬ ‫تعرض‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫ولكن‬ .‫القوائم‬ ‫أو‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬ ‫الدالة‬ ‫باستخدام‬ ‫أول‬ ‫فقم‬ keys ‫قيمتها‬ ‫واعرض‬ ‫كررها‬ ‫ثم‬ ‫القاموس‬ ‫في‬ ‫المفاتيح‬ ‫قائمة‬ ‫لجلب‬ ‫باستخدام‬ for ‫تعرف‬ ‫تكن‬ ‫لم‬ ‫إذا‬ ، for ‫الدروس‬ ‫في‬ ‫بالتفصيل‬ ‫ندرسها‬ ‫فسوف‬ ‫تتضايق‬ ‫فل‬ .‫القادمة‬ :‫اﻷخرى‬ ‫الكائنات‬ ‫إلى‬ ‫ننتقل‬ ‫أن‬ ‫قبل‬ ‫القواميس‬ ‫حول‬ ‫تتذكرها‬ ‫أن‬ ‫يجب‬ ‫الملحظات‬ ‫بعض‬ ‫وهنا‬ – ‫اﻷخير‬ ‫المثال‬ ‫في‬ ‫رأينا‬ ‫مثلما‬ ‫القواميس‬ ‫مع‬ ‫تعمل‬ ‫ل‬ ‫التسلسل‬ ‫على‬ ‫تعتمد‬ ‫التي‬ ‫العمليات‬ – ‫القاموس‬ ‫في‬ ‫جديدة‬ ‫مدخلة‬ ‫تضيف‬ ‫فإنك‬ ‫جديدة‬ ‫قيمة‬ ‫إسناد‬ ‫عند‬ – ‫القوائم‬ ‫ماعدا‬ ‫الكائنات‬ ‫كل‬ ‫تعمل‬ ‫بل‬ ، ‫نصية‬ ‫سلسلة‬ ‫المفتاح‬ ‫يكون‬ ‫أن‬ ‫شرطا‬ ‫ليس‬ 27
  • 29.
    ‫المجموعات‬ ‫ببساطة‬ ‫تتركب‬ ‫المجموعات‬،‫المجموعات‬‫هي‬ ‫المجمعات‬ ‫ﻷنواع‬ ‫لبايثون‬ ‫اسكشافنا‬ ‫في‬ ‫نوع‬ ‫آخر‬ ‫تتغير‬ ‫أن‬ ‫يمكن‬ ‫ل‬ ‫القوائم‬ ‫أن‬ ‫باستثناء‬ ‫القوائم‬ ‫مثل‬ ‫بالضبط‬ ‫تعمل‬ ‫وهي‬،‫الكائنات‬ ‫من‬ ‫مجموعة‬ ‫من‬ ‫قوسين‬ ‫بين‬ ‫وليس‬ ‫قوسين‬ ‫بين‬ ‫محصورة‬ ‫متسلسلة‬ ‫كعناصر‬ ‫عادة‬ ‫وتكتب‬ ‫ثابتة‬ ‫فهي‬ ‫مكانها‬ ‫من‬ :‫وهي‬ ‫القوائم‬ ‫من‬ ‫خصائصها‬ ‫معظم‬ ‫تستمد‬ ‫والمجموعات‬.‫القوائم‬ ‫مثل‬ ‫معكوفين‬ ‫الكائنات‬ ‫من‬ ‫منظمة‬ ‫مجموعة‬ ‫نسق‬ ‫في‬ ‫المنظمة‬ ‫الكائنات‬ ‫من‬ ‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫المجموعات‬ ‫والقوائم‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬ ‫الكائنات‬ ‫أنواع‬ ‫كل‬ ‫على‬ ‫تحتوي‬ ‫أن‬ ‫يمكن‬ ‫القوائم‬ ‫ومثل‬ ‫معين‬ ‫الموقع‬ ‫باستخدام‬ ‫الوصول‬ ‫موقعه‬ ‫باستخدام‬ ‫المجموعة‬ ‫في‬ ‫عنصر‬ ‫أي‬ ‫إلى‬ ‫الوصول‬ ‫يمكنك‬ ‫والقوائم‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬ ‫أخذناها‬ ‫وأن‬ ‫سبق‬ ‫والتي‬ ‫الموقع‬ ‫تستخدم‬ ‫التي‬ ‫العلميات‬ ‫كل‬ ‫تدعم‬ ‫المجموعات‬ ‫و‬ ،‫مفتاحه‬ ‫وليس‬ .‫والتقطيع‬ ‫الفهرس‬ ‫باستخدام‬ ‫الوصول‬ ‫مثل‬ ‫الكائنات‬ ‫من‬ ‫ثابتة‬ ‫سلسلة‬ ‫المكان‬ ‫في‬ ‫تغيير‬ ‫عملية‬ ‫أي‬ ‫تدعم‬ ‫ل‬ ‫أنها‬ ‫ذلك‬ ‫ويعني‬ ‫ثابتة‬ ‫المجموعات‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬ ‫لفعل‬ ‫يجب‬ ‫بل‬ ‫والتقلص‬ ‫التوسع‬ ‫تدعم‬ ‫ل‬ ‫أيضا‬ ‫وهي‬ ،‫القوائم‬ ‫في‬ ‫رأيتها‬ ‫التي‬ ‫مثل‬ )‫(السناد‬ .‫تصغيرها‬ ‫أو‬ ‫تكبيرها‬ ‫المراد‬ ‫المجموعة‬ ‫من‬ ‫جديدة‬ ‫نسخة‬ ‫إنشاء‬ ‫ذلك‬ ‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫مصفوفة‬ .‫المرجعية‬ ‫الكائنات‬ ‫من‬ ‫مصفوفة‬ ‫عن‬ ‫عبارة‬ ‫المجموعة‬ ،‫بالضبط‬ ‫القوائم‬ ‫مثل‬ ‫فارغة‬ ‫مجموعة‬ ‫تنشيء‬ ‫لكي‬ ‫ملحظة‬ ‫مع‬ ،‫المجموعات‬ ‫على‬ ‫العمليات‬ ‫أهم‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬ .‫فقط‬ ‫قوسين‬ ‫وضع‬ ‫يكفي‬ ‫فقط‬ ‫العملية‬ ‫الوصف‬ () ‫فارغة‬ ‫مجموعة‬ t1 = (0,) ‫المجموعة‬ ‫في‬ ‫واحد‬ ‫عنصر‬ t2 = (0, 1, 2, 3) ‫عناصر‬ ‫أربعة‬ t2 = 0, 1, 2, 3 ‫أيضا‬ ‫عناصر‬ ‫أربعة‬ 28
  • 30.
    ‫العملية‬ ‫الوصف‬ t3 = ('abc',('def', 'ghi')) t1[i], t3[i][j] t1[i:j], len(t1) ‫التداخل‬ ‫الفهرسة‬ ‫التقطيع‬ ‫الطول‬ t1 + t2 t2 * 3 ‫الجمع‬ ‫اﻹعادة‬ for x in t2, 3 in t2 ‫التكرار‬ ‫العضوية‬ ‫إغلق‬ ‫في‬ ‫تستخدم‬ ‫اﻷقواس‬ ‫أن‬ ‫بسبب‬ ،‫أكثر‬ ‫إيضاحا‬ ‫تستحق‬ ‫الجدول‬ ‫في‬ ‫اﻷولى‬ ‫الصفوف‬ ‫أربعة‬ ‫بين‬ ‫واحدا‬ ‫كائنا‬ ‫أن‬ ‫بايثون‬ ‫ﻹخبار‬ ‫مميز‬ ‫شيء‬ ‫إلى‬ ‫تحتاج‬ ‫فإنك‬ )‫اﻷعداد‬ ‫راجع‬ ( ‫المعاملت‬ ‫قبل‬ ‫سفلية‬ ‫فاصلة‬ ‫ضع‬ ‫بساطة‬ ‫بكل‬،‫بسيط‬ ‫تعبير‬ ‫عن‬ ‫عبارة‬ ‫وليس‬ ‫المجموعات‬ ‫فئة‬ ‫من‬ ‫هو‬ ‫القوسين‬ .‫مجموعة‬ ‫عن‬ ‫عبارة‬ ‫هو‬ ‫القوسين‬ ‫بين‬ ‫ما‬ ‫أن‬ ‫بايثون‬ ‫تخبر‬ ‫وبذلك‬ ،‫القوسين‬ ‫إقفال‬ ‫في‬ ‫كما‬ ‫المجموعات‬ ‫إنشاء‬ ‫في‬ ‫ل‬ ‫أو‬ ‫اﻷقواس‬ ‫وضع‬ ‫في‬ ‫الحرية‬ ‫لك‬ ‫تتيح‬ ‫بايثون‬ ‫فإن‬ ‫خاصة‬ ‫وكحالة‬ ‫تضمن‬ ‫ﻷنها‬ ‫اﻷقواس‬ ‫تستخدم‬ ‫بأن‬ ‫الفرص‬ ‫لك‬ ‫سمحت‬ ‫إذا‬ ‫دائما‬ ‫يفضل‬ ‫ولكن‬ ،‫الرابع‬ ‫الصف‬ .‫التشويش‬ ‫عدم‬ ‫لك‬ ‫النصية‬ ‫السلسل‬ ‫على‬ ‫لمثيلتها‬ ‫تماما‬ ‫مشابهة‬ ‫فهي‬ ‫السابق‬ ‫الجدول‬ ‫في‬ ‫اﻷخيرة‬ ‫العمليات‬ ‫في‬ ‫بايثون‬ ‫مفسر‬ ‫على‬ ‫أنت‬ ‫تتطبقها‬ ‫أن‬ ‫يكفي‬ ‫فقط‬ ، ‫أخرى‬ ‫مرة‬ ‫لشرحها‬ ‫داعي‬ ‫يوجد‬ ‫ل‬ ‫فلذا‬ ‫والقوائم‬ .‫لها‬ ‫فهمك‬ ‫من‬ ‫للتأكد‬ ‫المجموعات؟‬ ‫نستخدم‬ ‫لماذا‬ ‫هذا‬ ‫يكون‬ ‫قد‬ ‫القوائم؟‬ ‫عندنا‬ ‫كان‬ ‫إذا‬ ‫المجموعات‬ ‫نستخدم‬ ‫لماذا‬ ‫للمبتدئ‬ ‫يتبادر‬ ‫سؤال‬ ‫أول‬ ‫باستخدام‬ ‫يمكن‬ ‫مثل‬ ،‫مميزات‬ ‫من‬ ‫العديد‬ ‫يوفر‬ ‫المجموعات‬ ‫ثبات‬ ‫أن‬ ‫إجابة‬ ‫أفضل‬ ‫ولكن‬ ‫تاريخيا‬ .‫البرنامج‬ ‫في‬ ‫آخر‬ ‫مكان‬ ‫في‬ ‫أخرى‬ ‫مراجع‬ ‫باستخدام‬ ‫تتغير‬ ‫ل‬ ‫الكائنات‬ ‫أن‬ ‫التأكد‬ ‫المجموعات‬ ‫القوائم‬ ‫استخدم‬ ‫عام‬ ‫وبشكل‬ ،‫القوائم‬ ‫وليس‬ ‫المجموعات‬ ‫إلى‬ ‫تحتاج‬ ‫المدمجة‬ ‫العمليات‬ ‫بعض‬ .‫المجموعات‬ ‫فاستخدم‬ ‫الحالت‬ ‫بقية‬ ‫في‬ ‫أما‬ ‫التغيير‬ ‫عليها‬ ‫يطرأ‬ ‫التي‬ ‫المنظمة‬ ‫المجموعات‬ ‫في‬ 29
  • 31.
    ‫الملفات‬ ‫في‬ ‫المعلومات‬ ‫تخزن‬‫التي‬ ‫الملفات‬ ‫أسماء‬ ‫فكرة‬ ‫عن‬ ‫خلفية‬ ‫عندهم‬ ‫القراء‬ ‫معظم‬ ‫أن‬ ‫أمل‬ ‫على‬ ‫الوصول‬ ‫بطريقة‬ ‫يزودنا‬ ‫بايثون‬ ‫في‬ ‫مدمج‬ ‫كائن‬ ‫آخر‬ ‫يكون‬،‫التشغيل‬ ‫نظام‬ ‫يديرها‬ ‫التي‬ ‫و‬ ‫الكميبوتر‬ ‫مدمجة‬ ‫الدالة‬ ‫إن‬.‫بايثون‬ ‫برامج‬ ‫ضمن‬ ‫الملفات‬ ‫تلك‬ ‫إلى‬ open ‫وهي‬ ‫بايثون‬ ‫في‬ ‫الملف‬ ‫كائن‬ ‫تنشأ‬ ‫الدالة‬ ‫مناداة‬ ‫بعد‬،‫جهازنا‬ ‫على‬ ‫المستقر‬ ‫الملف‬ ‫إلى‬ ‫الربط‬ ‫خدمة‬ ‫لنا‬ ‫تقدم‬ open ‫القراءة‬ ‫يمكننا‬، .‫ملف‬ ‫الكائن‬ ‫دوال‬ ‫بمناداة‬،‫المربوط‬ ‫الملف‬ ‫من‬ ‫والكتابة‬ ‫كائنات‬ ‫و‬ ‫عددا‬ ‫ليس‬ ‫ﻷنه‬ ،‫قليل‬ ‫غريبا‬ ‫سنجده‬ ‫اﻷخرى‬ ‫بالكائنات‬ ‫الملفات‬ ‫كائن‬ ‫مقارنة‬ ‫عند‬ ‫وهذا‬ ،‫الملفات‬ ‫في‬ ‫الشائعة‬ ‫العمليات‬ ‫لمعالجة‬ ‫دوال‬ ‫استخدام‬ ‫هو‬ ‫إنما‬ ،‫خرائطية‬ ‫أو‬ ‫متسلسلة‬ ‫وهو‬،‫والدخل‬ ‫الخرج‬ ‫معالجة‬ ‫مجال‬ ‫في‬ ‫يدرس‬ ‫وإنما‬ ، ‫اﻷخرى‬ ‫اللغات‬ ‫في‬ ‫موجودا‬ ‫ليس‬ ‫الكائن‬ .‫الملفات‬ ‫لمعالجة‬ ‫أخرى‬ ‫دوال‬ ‫يستخدم‬ ‫إنما‬ ‫و‬ ‫مستقل‬ ‫ليس‬ ‫الدالة‬ ‫مناداة‬ ‫يجب‬ ‫الملف‬ ‫لفتح‬ ،‫الملفات‬ ‫على‬ ‫العلميات‬ ‫ﻷهم‬ ‫ملخص‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬ open ‫للقراء‬ ‫الملف‬ ‫معاملة‬ ‫طريقة‬ ‫الثاني‬ ‫و‬، ‫مساره‬ ‫مع‬ ‫الملف‬ ‫اسم‬ ‫اﻷول‬ ‫بمعاملين‬ ‫تزويدها‬ ‫و‬ r ‫للكتابة‬ w ‫الملف‬ ‫آخر‬ ‫في‬ ‫للكتابة‬ a ‫سلسل‬ ‫يكونا‬ ‫أن‬ ‫يجب‬ ‫المعاملين‬ ‫كل‬ ‫أن‬ ‫ملحظة‬ ‫مع‬ ، :‫نصية‬ ‫العملية‬ ‫الوصف‬ output = open('/tmp/spam', 'w') ‫ملف‬ ‫إنشاء‬ output ‫الكتابة‬ ‫نمط‬ ‫في‬ input = open('data', 'r') ‫ملف‬ ‫إنشاء‬ output ‫القراءة‬ ‫نمط‬ ‫في‬ S = input.read() ‫سلسل‬ ‫إلى‬ ‫بالكامل‬ ‫الملف‬ ‫خرج‬ ‫اسناد‬ ‫نصية‬ S = input.read(N) ‫قراءة‬ N )‫أكثر‬ ‫أو‬ ‫(واحد‬ ‫البايتات‬ ‫من‬ S = input.readline() ‫التالي‬ ‫السطر‬ ‫قراءة‬ L = input.readlines() ‫بحيث‬ ‫قائمة‬ ‫في‬ ‫ووضعه‬ ‫الملف‬ ‫خرج‬ ‫قراءة‬ ‫في‬ ‫عنصر‬ ‫يساوي‬ ‫الملف‬ ‫في‬ ‫سطر‬ ‫كل‬ ‫القائمة‬ output.write(S) ‫كتابة‬ S ‫الملف‬ ‫داخل‬ output output.writelines(L) ‫في‬ ‫النصية‬ ‫السلسلة‬ ‫أسطر‬ ‫جميع‬ ‫كتابة‬ ‫قائمة‬ L ‫الملف‬ ‫داخل‬ output output.close() ‫يمكن‬ ‫ل‬ ‫الملف‬ ‫إغلق‬ ‫بعد‬ ،‫الملف‬ ‫إغلق‬ ‫خطأ‬ ‫ويعطي‬ ‫عليه‬ ‫الكتابة‬ ‫أو‬ ‫منه‬ ‫القراءة‬ ‫ذلك‬ ‫محاولة‬ ‫عند‬ 30
  • 32.
    ‫محتويات‬ ‫مع‬ ‫تتعامل‬‫بايثون‬ ‫الحالت‬ ‫كل‬ ‫وفي‬ ،‫منه‬ ‫والقراءة‬ ‫الكتابة‬ ‫يمكنك‬ ‫للملف‬ ‫إنشائك‬ ‫عند‬ ‫كسلسل‬ ‫تعاملها‬ ‫فهي‬ ‫الملفات‬ ‫إلى‬ ‫الكتابة‬ ‫عند‬ ‫وكذلك‬ ،‫أعداد‬ ‫كانت‬ ‫ولو‬ ‫نصية‬ ‫كسلسل‬ ‫الملف‬ ‫كل‬ ‫على‬ ‫للحصول‬ ‫بايثون‬ ‫وثائق‬ ‫مراجعة‬ ‫يمكنك‬ ‫و‬ ‫العمليات‬ ‫أهم‬ ‫يحوي‬ ‫السابق‬ ‫الجدول‬ ،‫النصية‬ .‫الملفات‬ ‫عمليات‬ ‫الملف‬ ‫إغلق‬ ‫عملية‬ close ‫وهي‬ ‫الخارجي‬ ‫والملف‬ ‫البرنامج‬ ‫بين‬ ‫التصال‬ ‫إغلق‬ ‫على‬ ‫تعمل‬ ، ‫بغلق‬ ‫يقوم‬ ‫نفايات‬ ‫مجمع‬ ‫تملك‬ ‫بايثون‬ ‫أن‬ ‫تعلم‬ ‫كما‬ ‫ولكن‬ ،‫الذاكرة‬ ‫من‬ ‫مساحة‬ ‫لتحرير‬ ‫مهم‬ ‫الصغيرة‬ ‫البرامج‬ ‫في‬ ‫لتضر‬ ‫الملف‬ ‫إغلق‬ ‫وعملية‬ ،‫تلقائي‬ ‫إليه‬ ‫حاجة‬ ‫في‬ ‫تكون‬ ‫ل‬ ‫عندما‬ ‫التصال‬ ‫بنفسك‬ ‫الملفات‬ ‫غلق‬ ‫عن‬ ‫تتهاون‬ ‫أل‬ ‫يجب‬ ‫كبيرة‬ ‫أنظمة‬ ‫على‬ ‫العمل‬ ‫عند‬ ‫ولكن‬ ،‫سكربتات‬ ‫مثل‬ .‫جيدا‬ ‫أداء‬ ‫لتضمن‬ ‫النفايات‬ ‫مجمع‬ ‫على‬ ‫العتماد‬ ‫وعدم‬ ‫الملفات‬ ‫على‬ ‫العمل‬ ‫ممط‬‫م‬‫نم‬ ‫ممي‬‫م‬‫ف‬ ‫ملف‬ ‫ممح‬‫م‬‫بفت‬ ‫مما‬‫م‬‫قمن‬ ‫ممء‬‫م‬‫شي‬ ‫أول‬ ،‫الملفات‬ ‫على‬ ‫ممل‬‫م‬‫العم‬ ‫ممة‬‫م‬‫كيفي‬ ‫ممح‬‫م‬‫يوض‬ ‫مميط‬‫م‬‫بس‬ ‫مثال‬ ‫مما‬‫م‬‫هن‬ ‫يعطيمه‬ ‫و‬ ‫جديمد‬ ‫ملف‬ ‫بإنشاء‬ ‫يقوم‬ ‫يجده‬ ‫لم‬ ‫فإن‬ ‫المعطمى‬ ‫السمم‬ ‫عمن‬ ‫بالبحمث‬ ‫المفسمر‬ ‫فيقوم‬،‫الكتابمة‬ ‫إعطاءه‬ ‫ملحظمة‬ ‫ممع‬ ‫واحمد‬ ‫سمطر‬ ‫المنشمئ‬ ‫الملف‬ ‫فمي‬ ‫بالكتابمة‬ ‫قمنما‬ ‫ثمم‬ ،‫إياه‬ ‫أعطيناه‬ ‫الذي‬ ‫السمم‬ ‫السمطر‬ ‫بقراءة‬ ‫وقمنما‬ ‫القراءة‬ ‫نممط‬ ‫فمي‬ ‫بفتحمه‬ ‫قمنما‬ ‫ثمم‬ ،‫الملف‬ ‫بإغلق‬ ‫قمنما‬ ‫ثمم‬ ،‫جديمد‬ ‫سمطر‬ ‫علممة‬ :‫فارغ‬ ‫الثاني‬ ‫السطر‬ ‫ﻷنه‬ ‫فراغ‬ ‫الناتج‬ ‫فأعطنا‬ ‫الثاني‬ ‫السطر‬ ‫قراءة‬ ‫حاولنا‬ ‫ثم‬،‫منه‬ ‫اﻷول‬ >>> myfile = open('myfile', 'w') # open for output (creates) >>> myfile.write('hello text filen') # write a line of text >>> myfile.close() >>> myfile = open('myfile', 'r') # open for input >>> myfile.readline() # read the line back 'hello text file012' >>> myfile.readline() # empty string: end of file '' :‫الملفات‬ ‫حول‬ ‫الملحظات‬ ‫بعض‬ ‫وهناك‬ – ‫اﻹصدار‬ ‫من‬ 2.2 ‫الدالة‬ ‫استبدلت‬ ‫لبايثون‬ open ‫بالدالة‬ file ‫الدالة‬ ‫استخدام‬ ‫فيمكنك‬ 31
  • 33.
    file ‫للدالة‬ ‫كقناع‬ ‫تعمل‬‫ﻷنها‬ ‫السابقة‬ ‫الدالة‬ ‫استخدام‬ ‫يمكنك‬ ‫وكذلك‬ ،‫السابقة‬ ‫الدالة‬ ‫مكان‬ ‫الجديدة‬ ‫اﻹصدارات‬ ‫في‬ ‫الجديدة‬ – ‫الدالة‬ ‫باستخدام‬ ‫ثانية‬ ‫مرة‬ ‫عرضه‬ ‫عند‬ ‫الملف‬ ‫و‬ ‫واحدة‬ ‫مرة‬ ‫تتم‬ ‫الملف‬ ‫قراءة‬ ‫أن‬ ‫لحظ‬ read ‫اﻹصدار‬ ‫على‬ ‫لحظته‬ ‫ما‬ ‫ثانية(هذا‬ ‫مرة‬ ‫الملف‬ ‫قراءة‬ ‫إعادة‬ ‫فيجب‬ ،‫فراغ‬ ‫ويعطي‬ ‫عرضه‬ ‫يتم‬ ‫ل‬ 2.3 )‫بايثون‬ ‫من‬ ‫للكائنات‬ ‫العامة‬ ‫الخصائص‬ ‫الخصائص‬ ‫عن‬ ‫سريعة‬ ‫جولة‬ ‫نأخذ‬ ‫دعنا‬ ،‫بايثون‬ ‫في‬ ‫المدمجة‬ ‫الكائنات‬ ‫جميع‬ ‫أنهينا‬ ‫أن‬ ‫وبعد‬ ‫اﻵن‬ .‫فيها‬ ‫تتشارك‬ ‫التي‬ ‫باثيون‬ ‫في‬ ‫المدمجة‬ ‫للكائنات‬ ‫العامة‬ ‫الكائنات‬ ‫تصنيف‬ :‫سابقا‬ ‫رأيناها‬ ‫التي‬ ‫اﻷنواع‬ ‫جميع‬ ‫يصنف‬ ‫التالي‬ ‫الجدول‬ ‫الكائن‬ ‫نوع‬ ‫صنفه‬ ‫للتوسع؟‬ ‫قابل‬ ‫اﻷعداد‬ Numbers ‫عددي‬ ‫ل‬ ‫النصية‬ ‫السلسل‬ Strings ‫متسلسل‬ ‫ل‬ ‫القوائم‬ Lists ‫متسلسل‬ ‫نعم‬ ‫القواميس‬ Dictionaries ‫تخطيطي‬ ‫نعم‬ ‫المجموعات‬ Tuples ‫متسلسل‬ ‫ل‬ ‫الملفات‬ Files ‫امتدادي‬ N/A ‫أن‬ ‫و‬،‫متسلسلة‬ ‫أنها‬ ‫في‬ ‫تشترك‬ ‫والمجموعات‬ ‫القوائم‬ ‫و‬ ‫النصية‬ ‫السلسل‬ ‫فإن‬ ‫الجدول‬ ‫من‬ ‫نرى‬ ‫كما‬ ‫تستخدم‬ ‫الملفات‬ .‫فل‬ ‫غيرها‬ ‫أما‬ ‫فقط‬ ‫اﻹنكماش‬ ‫و‬ ‫التوسع‬ ‫قابلية‬ ‫تدعم‬ ‫فقط‬ ‫القواميس‬ ‫و‬ ‫القوائم‬ ‫ليس‬ ‫ولكن‬ ،‫الكتابة‬ ‫يتم‬ ‫حين‬ ‫تتوسع‬ ‫صحيح‬ ،‫بالضبط‬ ‫للتوسع‬ ‫قابلة‬ ‫ليست‬ ‫فهي‬،‫للتوسع‬ ‫دوال‬ .‫اﻷنواع‬ ‫على‬ ‫بايثون‬ ‫تفرضها‬ ‫التي‬ ‫بالقيود‬ ‫العمومية‬ :‫نقول‬ ‫أن‬ ‫نستطيع‬ ‫عام‬ ‫وبشكل‬ ،‫المركبة‬ ‫الكائنات‬ ‫من‬ ‫العديد‬ ‫رأينا‬ ‫لقد‬ ‫الكائنات‬ ‫من‬ ‫نوع‬ ‫أي‬ ‫تخزن‬ ‫أن‬ ‫يمكنها‬ ‫والمجموعات‬ ‫والقواميس‬ ‫القوائم‬- ‫المركب‬ ‫التداخل‬ ‫تدعم‬ ‫والمجموعات‬ ‫والقواميس‬ ‫القوائم‬- 32
  • 34.
    ‫دينامكيا‬ ‫وتصغر‬ ‫تكبر‬‫أن‬ ‫تستطيع‬ ‫والقواميس‬ ‫القوائم‬- ‫في‬ ‫المركبة‬ ‫المعلومات‬ ‫للتمثيل‬ ‫جدا‬ ‫مناسبة‬ ‫فهي‬ ‫المركب‬ ‫التداخل‬ ‫تدعم‬ ‫الكائنات‬ ‫هذه‬ ‫أن‬ ‫بسبب‬ :‫التالي‬ ‫المثال‬ ‫إلى‬ ‫انظر‬،‫التطبيق‬ >>> L = ['abc', [(1, 2), ([3], 4)], 5] >>> L[1] [(1, 2), ([3], 4)] >>> L[1][1] ([3], 4) >>> L[1][1][0] [3] >>> L[1][1][0][0] 3 ‫عن‬ ‫اﻷعضاء‬ ‫إلى‬ ‫بالوصول‬ ‫قمنا‬ ‫قم‬ ‫ثم‬ ،‫متداخلة‬ ‫ومجموعات‬ ‫قوائم‬ ‫على‬ ‫تحوي‬ ‫قائمة‬ ‫بإنشاء‬ ‫قمنا‬ ‫الكائن‬ ‫موقع‬ ‫إلى‬ ‫الوصول‬ ‫في‬ ‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫تبدأ‬ ‫بايثون‬ ‫أن‬ ‫لحظ‬ ،‫المفهرس‬ ‫طريق‬ ‫حتى‬ ‫مرة‬ ‫كل‬ ‫في‬ ‫المراد‬ ‫الكائن‬ ‫إلى‬ ‫الوصول‬ ‫في‬ ‫تعمقنا‬ ‫كيف‬ ‫ولحظ‬ ،‫المفهرس‬ ‫باستخدام‬ ‫تقدمه‬ ‫وما‬ ‫المعطيات‬ ‫بنى‬ ‫في‬ ‫التداخل‬ ‫أهمية‬ ‫تعلم‬ ‫هنا‬ ‫ومن‬ ،‫بالضبط‬ ‫المراد‬ ‫الكائن‬ ‫إلى‬ ‫وصلنا‬ .‫اﻷغراض‬ ‫لتأدية‬ ‫سهلة‬ ‫أدوات‬ ‫من‬ ‫بايثون‬ ‫المشتركة‬ ‫المراجع‬ ‫أغلب‬ ‫في‬ ‫تريده‬ ‫ما‬ ‫هذا‬ ‫وعمليا‬،‫عنها‬ ‫نسخة‬ ‫وليس‬ ‫الكائنات‬ ‫إلى‬ ‫مراجع‬ ‫نخزن‬ ‫إننا‬ ‫سابقا‬ ‫قلنا‬ ‫لقد‬ ‫مشتركة‬ ‫مراجع‬ ‫هناك‬ ‫كانت‬ ‫إذا‬ ‫وخاصة‬ ‫النقطة‬ ‫هذه‬ ‫في‬ ‫التركيز‬ ‫عليك‬ ‫ينبغى‬ ‫أحيانا‬ ‫ولكن‬،‫اﻷحيان‬ ‫قائمة‬ ‫أنشأنا‬ ‫إذا‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫النتائج‬ ‫كل‬ ‫يغيير‬ ‫اﻷصلي‬ ‫المرجع‬ ‫في‬ ‫تغيير‬ ‫أي‬ ‫فإن‬ X ‫ثم‬ ‫أخرى‬ ‫قائمة‬ ‫بإنشاء‬ ‫قمنا‬ L ‫القائمة‬ ‫إلى‬ ‫مرجعا‬ ‫وضمناها‬ X ‫قاموس‬ ‫إنشاء‬ ‫قمنا‬ ‫ثم‬ D ‫ضمنا‬ ‫وكذلك‬ ‫القائمة‬ ‫إلى‬ ‫مرجع‬ ‫مدخلته‬ ‫قيم‬ ‫أحد‬ X :‫التالي‬ ‫الشكل‬ ‫على‬ ‫المثال‬ ‫سيكون‬ >>> X = [1, 2, 3] >>> L = ['a', X, 'b'] >>> D = {'x':X, 'y':2} ‫القائمة‬ ‫إلى‬ ‫مرجعين‬ ‫هناك‬ ‫الحالة‬ ‫هذه‬ ‫في‬ X ،‫إليها‬ ‫جديدة‬ ‫قيم‬ ‫إسناد‬ ‫تقبل‬ ‫القوائم‬ ‫أن‬ ‫وبما‬ ، :‫جديدة‬ ‫قيمة‬ ‫إسناد‬ ‫عند‬ ‫يحدث‬ ‫ماذا‬ ‫فانظر‬ 33
  • 35.
    >>> X[1] ='surprise' # changes all three references! >>> L ['a', [1, 'surprise', 3], 'b'] >>> D {'x': [1, 'surprise', 3], 'y': 2} .‫النقطة‬ ‫لهذه‬ ‫منتبها‬ ‫فكنا‬ ، ‫المقارنة‬ ‫والمساواة‬ ‫التحقق‬ ‫و‬ ‫أعداد‬ ‫وكأنها‬ ،‫بينها‬ ‫فيما‬ ‫التحقق‬ ‫وعمليات‬ ‫المقارنة‬ ‫لعمليات‬ ‫تستجيب‬ ‫بايثون‬ ‫في‬ ‫كائنات‬ ‫جميع‬ :‫التالي‬ ‫المثال‬ ‫إلى‬ ‫انظر‬ ،‫المقارنات‬ ‫هذه‬ ‫بمثل‬ ‫تسمح‬ ‫ل‬ ‫التي‬ ‫اللغات‬ ‫من‬ ‫كثير‬ ‫بخلف‬ ‫وهذا‬ >>> L1 = [1, ('a', 3)] # same value, unique objects >>> L2 = [1, ('a', 3)] >>> L1 == L2, L1 is L2 # equivalent?, same object? (True, False) :‫التالي‬ ‫المثال‬ ‫وانظر‬ ،‫التحقق‬ ‫علقة‬ ‫و‬ ‫المساواة‬ ‫علقة‬ ‫اختبرنا‬ ‫وهنا‬ >>> L1 = [1, ('a', 3)] >>> L2 = [1, ('a', 2)] >>> L1 < L2, L1 == L2, L1 > L2 # less, equal, greater: a tuple of results? (False, False, True) :‫بايثون‬ ‫في‬ ‫المختلفة‬ ‫الكائنات‬ ‫بين‬ ‫المقارنة‬ ‫في‬ ‫ملحظات‬ ‫عدة‬ ‫وهنا‬ – ‫التقريبية‬ ‫بمقاديرها‬ ‫تقارن‬ ‫اﻷعداد‬ – "‫أي‬ ‫بحرف‬ ‫حرفا‬ ‫أي‬ ،‫معجميا‬ ‫تقارن‬ ‫النصية‬ ‫السلسل‬ abc" < "ac ‫أن‬ ‫لحظ‬ " c ‫أكبر‬ ‫من‬ b ‫المعجم‬ ‫في‬ – ‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫يقابله‬ ‫ما‬ ‫مع‬ ‫عنصر‬ ‫كل‬ ‫تقارن‬ ‫والمجموعات‬ ‫القوائم‬ – ‫والقيمة‬ ‫المفتاح‬ ‫من‬ ‫المخزنة‬ ‫القائمة‬ ‫باستخدام‬ ‫أيضا‬ ‫تقارن‬ ‫القواميس‬ ‫مهمة‬ ‫تلميحات‬ ‫مع‬ ‫أعمق‬ ‫بشكل‬ ‫بايثون‬ ‫فهم‬ ‫على‬ ‫تساعدك‬ ‫وحيل‬ ‫تلميحات‬ ‫سنأخذ‬ ‫فصل‬ ‫كل‬ ‫من‬ ‫القسم‬ ‫هذا‬ ‫في‬ :‫اللغة‬ ‫في‬ ‫مبتدئ‬ ‫أنت‬ ‫و‬ ‫إجابة‬ ‫لها‬ ‫تعرف‬ ‫ول‬ ‫تواجهك‬ ‫قد‬ ‫مشاكل‬ ‫حل‬ 34
  • 36.
    ‫المشتركة‬ ‫المراجع‬ ‫إسناد‬ ‫إلى‬‫يؤدي‬ ‫فهمها‬ ‫عدم‬ ‫النقطة؛ﻷن‬ ‫هذه‬ ‫شرح‬ ‫نكرر‬ ‫ونعود‬ ،‫مسبقا‬ ‫النقطة‬ ‫هذا‬ ‫عن‬ ‫تكلمنا‬ ‫قد‬ ‫سنقوم‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫برنامجك‬ ‫ضمن‬ ‫المشتركة‬ ‫المراجع‬ ‫في‬ ‫يجري‬ ‫ما‬ ‫فهم‬ ‫في‬ ‫غموض‬ ‫قائمة‬ ‫بإنشاء‬ L ‫قائمة‬ ‫بإنشاء‬ ‫نقوم‬ ‫ثم‬ M ‫القائمة‬ ‫نضمنها‬ L ‫القائمة‬ ‫في‬ ‫جديدة‬ ‫قيمة‬ ‫بإسناد‬ ‫نقوم‬ ‫ثم‬ L :‫يحدث‬ ‫ماذا‬ ‫انظر‬ ، >>> L = [1, 2, 3] >>> M = ['X', L, 'Y'] # embed a reference to L >>> M ['X', [1, 2, 3], 'Y'] >>> L[1] = 0 # changes M too >>> M ['X', [1, 0, 3], 'Y'] ‫تلميح‬ ‫بما‬ ‫تقوم‬ ‫المشتركة‬ ‫المراجع‬ ‫وعادة‬ ،‫الضخمة‬ ‫البرامج‬ ‫في‬ ‫فقط‬ ‫مهما‬ ‫يكون‬ ‫الجزئية‬ ‫هذه‬ ‫تأثير‬ ‫إن‬ ‫أضف‬ ‫بساطة‬ ‫بكل‬ ‫تفعل؟‬ ‫فماذا‬ ‫مرجع‬ ‫وليس‬ ‫نسخة‬ ‫تسند‬ ‫أن‬ ‫أردت‬ ‫إذا‬ ‫ولكن‬ ،‫بالضبط‬ ‫تريده‬ :‫التالي‬ ‫الشكل‬ ‫على‬ ‫نقطتين‬ >>> L = [1, 2, 3] >>> M = ['X', L[:], 'Y'] # embed a copy of L >>> L[1] = 0 # only changes L, not M >>> L [1, 0, 3] >>> M ['X', [1, 2, 3], 'Y'] ‫واحد‬ ‫مستوى‬ ‫على‬ ‫التكرار‬ ‫هذا‬،‫المرات‬ ‫من‬ ‫عدد‬ ‫السلسلة‬ ‫إعادة‬ ‫عن‬ ‫عبارة‬ ‫أنه‬ ‫قلنا‬ ‫السلسلة‬ ‫تكرار‬ ‫عن‬ ‫سابقا‬ ‫تكلمنا‬ ‫عندما‬ ‫انظر‬ ،‫بالضبط‬ ‫تريده‬ ‫عما‬ ‫تختلف‬ ‫النتيجة‬ ‫تكون‬ ‫متداخلة‬ ‫السلسلة‬ ‫تكون‬ ‫عندما‬ ‫ولكن‬ ‫صحيح‬ ‫اﻷمر‬ :‫التالي‬ ‫المثال‬ ‫إلى‬ 35
  • 37.
    >>> L =[4, 5, 6] >>> X = L * 4 # like [4, 5, 6] + [4, 5, 6] + ... >>> Y = [L] * 4 # [L] + [L] + ... = [L, L,...] >>> X [4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6] >>> Y [[4, 5, 6], [4, 5, 6], [4, 5, 6], [4, 5, 6]] ‫قيمة‬ ‫بإسناد‬ ‫نقوم‬ ‫عندما‬ ‫يتجلى‬ ‫أيضا‬ ‫الفرق‬ ‫وهذا‬ ،‫القوسين‬ ‫وضعنا‬ ‫عندما‬ ‫عندما‬ ‫الفرق‬ ‫لحظ‬ ‫القائمة‬ ‫إلى‬ ‫جديدة‬ L :‫التالي‬ ‫المثال‬ ‫انظر‬ >>> L[1] = 0 # impacts Y but not X >>> X [4, 5, 6, 4, 5, 6, 4, 5, 6, 4, 5, 6] >>> Y [[4, 0, 6], [4, 0, 6], [4, 0, 6], [4, 0, 6]] ‫تلميح‬ ‫التلميح‬ ‫طبق‬ ‫فقط‬ ‫المشكلة‬ ‫هذه‬ ‫تحل‬ ‫ولكي‬ ،‫المشتركة‬ ‫المراجع‬ ‫متاهات‬ ‫من‬ ‫ثانية‬ ‫حالة‬ ‫هذه‬ .‫منتبها‬ ‫فكن‬ ‫التقطيع‬ ‫و‬ ‫الجمع‬ ‫أيضا‬ ‫ينطبق‬ ‫وهذا‬،‫السابق‬ ‫مكانها‬ ‫في‬ ‫تتغير‬ ‫أن‬ ‫يمكن‬ ‫ل‬ ‫الثابتة‬ ‫اﻷنواع‬ ‫إذا‬ ‫ولكن‬ ،‫والمجموعات‬ ‫النصية‬ ‫السلسل‬ ‫مثل‬ ‫تغيير‬ ‫يمكن‬ ‫ل‬ ‫الثابتة‬ ‫اﻷنواع‬ ‫أن‬ ‫سابقا‬ ‫علينا‬ ‫مر‬ ‫كما‬ :‫التالي‬ ‫المثال‬ ‫انظر‬ ‫جديدة‬ ‫نسخة‬ ‫إنشاء‬ ‫إلى‬ ‫فتضطر‬ ‫تغيرها‬ ‫أن‬ ‫أردت‬ T = (1, 2, 3) T[2] = 4 # error! T = T[:2] + (4,) # okay: (1, 2, 4) ‫تلميح‬ ‫التقطيع‬ ‫ميزة‬ ‫باستخدام‬ ‫السابق‬ ‫الكائن‬ ‫إليه‬ ‫نسند‬ ‫ثم‬ ‫جديدة‬ ‫كائن‬ ‫بإنشاء‬ ‫نقوم‬، ‫جديدة‬ ‫نسخة‬ ‫ﻹنشاء‬ ‫السابق‬ ‫المثال‬ ‫مثل‬ ‫إضافته‬ ‫نريد‬ ‫ما‬ ‫إليه‬ ‫نضيف‬ ‫ثم‬ 36
  • 38.
    ‫الملخص‬ ‫ببنة‬ ‫بدأنا‬،‫بايثون‬ ‫في‬‫الكائنات‬ ‫بأنواع‬ ‫تتعلق‬ ‫التي‬ ‫المواضيع‬ ‫من‬ ‫العديد‬ ‫تناولنا‬ ‫الفصل‬ ‫هذا‬ ‫في‬ ‫أخير‬ ‫ثم‬ ‫والمجموعات‬ ‫القواميس‬ ‫و‬ ‫القوائم‬ ‫ثم‬ ‫النصية‬ ‫السلسل‬ ‫و‬ ‫اﻷعداد‬ ‫ثم‬ ‫بايثون‬ ‫في‬ ‫البرامج‬ ‫أهم‬ ‫باستعراض‬ ‫قمنا‬ ‫ثم‬ ‫بايثون‬ ‫في‬ ‫المدمجة‬ ‫للكائنات‬ ‫العامة‬ ‫الخصائص‬ ‫أهم‬ ‫أخذنا‬ ‫ثم‬ ‫الملفات‬ .‫بايثون‬ ‫في‬ ‫بالكائنات‬ ‫تتعلق‬ ‫التي‬ ‫المشكلة‬ ‫القادمة‬ ‫الفصول‬ ‫في‬ ،‫اﻷساسية‬ ‫اﻷشياء‬ ‫لتبيين‬ ‫خصصت‬ ‫بأنها‬ ‫تميزت‬ ‫الفصل‬ ‫هذا‬ ‫في‬ ‫اﻷمثلة‬ .‫واقعية‬ ‫أكثر‬ ‫اﻷمثلة‬ ‫ستكون‬ 37
  • 39.
    ‫الثالث‬ ‫الفصل‬ : ‫اﻷساسية‬ ‫التعابير‬ :‫المهمة‬‫النقاط‬ ‫السناد‬ Print ‫الختبار‬ ‫جملة‬ if ‫التكرارية‬ ‫الحلقة‬ while ‫التكرارية‬ ‫الحلقة‬ for ‫تلميحات‬ ‫المخلص‬ ‫سنتحرك‬ ،‫السابق‬ ‫الفصل‬ ‫في‬ ‫بايثون‬ ‫في‬ ‫المدمجة‬ ‫للكائنات‬ ‫اﻷساسية‬ ‫اﻷنواع‬ ‫رأينا‬ ‫أن‬ ‫وبعد‬ ‫اﻵن‬ ‫نكتبها‬ ‫أشياء‬ ‫عن‬ ‫عبارة‬ ‫هي‬ ‫التعابير‬ ‫بساطة‬ ‫وبكل‬ .‫اﻷساسية‬ ‫التعابير‬ ‫أنواع‬ ‫لشرح‬ ‫الفصل‬ ‫هذا‬ ‫في‬ .‫بالضبط‬ ‫يفعله‬ ‫أن‬ ‫البرنامج‬ ‫على‬ ‫ما‬ ‫بايثون‬ ‫تخبر‬ ،‫بايثون‬ ‫في‬ ‫البرنامج‬ ‫بنية‬ ‫عن‬ ‫تكلمنا‬ ‫لما‬ ‫الثاني‬ ‫الفصل‬ ‫في‬ ‫قلناه‬ ‫ما‬ ‫نسترجع‬ ‫بايثون‬ ‫في‬ ‫التعابير‬ ‫ولفهم‬ :‫كالتالي‬ ‫تكون‬ ‫البرنامج‬ ‫هرمية‬ ‫أن‬ ‫وقلنا‬ ١ ‫وحدات‬ ‫من‬ ‫يتكون‬ ‫البرنامج‬ - ٢ ‫عبارات‬ ‫على‬ ‫تحتوي‬ ‫الوحدات‬ ‫و‬ - ٣ .‫تعالجها‬ ‫و‬ ‫الكائنات‬ ‫تنشأ‬ ‫العبارات‬ ‫و‬ - ‫ذلك‬ ‫على‬ ‫علوة‬،-‫السابق‬ ‫الفصل‬ ‫في‬ ‫علينا‬ ‫مرت‬ ‫التي‬- ‫الكائنات‬ ‫تعالج‬ ‫التي‬ ‫هي‬ ‫التعابير‬ ‫إذا‬ ‫من‬ ‫جديدة‬ ‫أنواع‬ ‫تنشأ‬ ‫أيضا‬ ‫وكذلك‬ ،‫إليها‬ ‫قيم‬ ‫إسناد‬ ‫بواسطة‬ ‫الكائنات‬ ‫تنشأ‬ ‫التي‬ ‫هي‬ ‫التعابير‬ .‫والوحدات‬ ‫الدوال‬ ‫و‬ ‫الفصول‬ ‫مثل‬ ‫الكائنات‬ ‫و‬ ‫اﻹسناد‬ ‫مثل‬ ‫الثاني‬ ‫الفصل‬ ‫في‬ ‫منها‬ ‫بعضا‬. ‫علينا‬ ‫مرت‬ ‫لقد‬،‫بايثون‬ ‫تعابير‬ ‫يلخص‬ ‫التالي‬ ‫الجدول‬ ‫الحذف‬ del ‫تحتاج‬ ‫التي‬ ‫التعابير‬ ‫إل‬ ‫الجدول‬ ‫هذا‬ ‫في‬ ‫ورد‬ ‫ما‬ ‫معظم‬ ‫سنأخذ‬ ‫الفصل‬ ‫هذا‬ ‫في‬، :‫التالية‬ ‫الفصول‬ ‫في‬ ‫سنأخذها‬ ‫و‬ ‫أكثر‬ ‫متطلبات‬ ‫إلى‬ 38
  • 40.
    ‫التعبير‬ ‫الدور‬ ‫مثال‬ ‫السناد‬ ‫المراجع‬ curly, moe, larry= 'good', 'bad', 'ugly' ‫مناداة‬ ‫الدوال‬ stdout.write("spam, ham, toastn") Print ‫الكائنات‬ ‫طباعة‬ print 'The Killer', joke If/elif/else ‫الختيار‬ ‫عمليات‬ if "python" in text: print text For/else ‫التكرار‬ for x in mylist: print x While/else ‫العامة‬ ‫الحلقات‬ while 1: print 'hello' Pass ‫المسؤلية‬ while 1: pass Continue ‫الحلقات‬ ‫في‬ ‫قفز‬ while 1: if not line: break Try/except/finally ‫الستثناءات‬ try: action() except: print 'action error' Raise ‫الستثناء‬ raise endSearch, location Import, From ‫الوحدات‬ ‫إلى‬ ‫الوصول‬ import sys; from sys import stdin Def, Return ‫الوسائل‬ def f(a, b, c=1, *d): return a+b+c+d[0] Class ‫الكائنات‬ ‫إنشاء‬ class subclass: staticData = [] Global ‫الفضاء‬ ‫اسم‬ def function(): global x, y; x = 'new' Del ‫اﻷشياء‬ ‫حذف‬ del data[k]; del data[i:j]; del obj.attr Exec ‫اﻷكواد‬ ‫نصوص‬ ‫تشغيل‬ exec "import " + modName in gdict, ldict Assert ‫التنقيحات‬ ‫تأكيد‬ assert X > Y ‫السناد‬ ‫تسند‬ ‫أن‬ ‫تريد‬ ‫الذي‬ ‫الهدف‬ ‫ستكتب‬ ‫أنك‬ ‫نقول‬ ‫بساطة‬ ‫وبكل‬،‫سابقا‬ ‫التعابير‬ ‫في‬ ‫السناد‬ ‫رأينا‬ ‫لقد‬ ‫من‬ ‫الهدف‬ ‫و‬ ،= ‫يساوي‬ ‫علمة‬ ‫بينهما‬ ‫اليمين‬ ‫ناحية‬ ‫على‬ ‫إليه‬ ‫والمسند‬، ‫الشمال‬ ‫ناحية‬ ‫على‬ ‫إليه‬ ‫الكائنات‬ ‫من‬ ‫نوع‬ ‫أي‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫إليه‬ ‫المسند‬ ‫أما‬ ، ‫كائن‬ ‫أو‬ ‫اسم‬ ‫يكون‬ ‫أن‬ ‫يمكن‬ ‫الشمال‬ ‫ناحية‬ .‫علينا‬ ‫مرت‬ ‫التي‬ ‫في‬ ‫تضعها‬ ‫أن‬ ‫يجب‬ ‫الخائص‬ ‫بعض‬ ‫هناك‬ ‫ولكن‬ ، ‫بسيطة‬ ‫عملية‬ ‫اﻹسناد‬ ‫اﻷحيان‬ ‫معظم‬ ‫في‬ 39
  • 41.
    :‫ذهنك‬ ‫مرجعية‬ ‫كائنات‬ ‫ينشئ‬‫السناد‬ ‫تنشئ‬ ‫ودائما‬ ،‫معطيات‬ ‫بنى‬ ‫و‬ ‫أسماء‬ ‫في‬ ‫الكائنات‬ ‫إلى‬ ‫المراجع‬ ‫تخزن‬ ‫بايثون‬،‫سابقا‬ ‫رأيت‬ ‫كما‬ ‫إلى‬ ‫ماتكون‬ ‫أقرب‬ ‫بايثون‬ ‫متغيرات‬ ‫تبدو‬ ‫ذلك‬ ‫بسبب‬.‫المراجع‬ ‫نسخ‬ ‫من‬ ‫بدل‬ ،‫الكائنات‬ ‫إلى‬ ‫مراجع‬ .‫معطيات‬ ‫مخزن‬ ‫من‬ ‫أكثر‬ ،‫السي‬ ‫لغة‬ ‫في‬ ‫المؤشرات‬ ‫إسناد‬ ‫أول‬ ‫عند‬ ‫تنشئ‬ ‫اﻷسماء‬ ‫إلى‬ ‫بحاجة‬ ‫ولست‬ ،‫إليها‬ ‫إسناد‬ ‫عملية‬ ‫أول‬ ‫عند‬ ‫بايثون‬ ‫في‬ ‫تنشئ‬ ‫المتغيرات‬ ‫أسماء‬ ‫أيضا‬ ‫رأينا‬ ‫وكما‬ ‫كلها‬ ‫وليس‬ ‫المعطيات‬ ‫بنى‬ ‫وبعض‬،‫القيمة‬ ‫إليها‬ ‫تسند‬ ‫ثم‬ ‫أول‬ ‫المتغيرات‬ ‫اﻷسماء‬ ‫عن‬ ‫تعلن‬ ‫أن‬ ‫الفصل‬ ‫في‬ ‫القواميس‬ ‫جزئية‬ ‫(راجع‬ ‫القواميس‬ ‫مثل‬ ‫اﻹسناد‬ ‫بواسطة‬ ‫فيها‬ ‫جديد‬ ‫إدخال‬ ‫تنشء‬ .)‫الثاني‬ ‫استخدامها‬ ‫قبل‬ ‫اﻷسماء‬ ‫تسند‬ ‫أن‬ ‫يجب‬ ‫من‬ ‫المزيد‬ ‫وستظهر‬ ‫بعد‬ ‫قيمة‬ ‫إليه‬ ‫تسند‬ ‫ولم‬ ‫السم‬ ‫استخدمت‬ ‫إذا‬ ‫خطأ‬ ‫بايثون‬ ‫تظهر‬ ‫بالمقابل‬ ‫ذلك‬ ‫تفعل‬ ‫أن‬ ‫حاولت‬ ‫إذا‬ ‫الستثناءات‬ :‫الضمني‬ ‫السناد‬ import ‫و‬ from ‫و‬ del ‫و‬ class ..‫إلخ‬ ‫في‬ ‫يحدث‬ ‫اﻹسناد‬ ‫ولكن‬، = ‫بالمعامل‬ ‫يتم‬ ‫اﻹسناد‬ ‫أن‬ ‫على‬ ‫تعودنا‬ ‫قد‬ ‫نحن‬ ‫الجزئية‬ ‫هذه‬ ‫في‬ ‫كذلك‬ ‫و‬ ‫الدوال‬ ‫و‬ ‫الوحدات‬ ‫جلب‬ ‫رأينا‬ ‫لقد‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫بايثون‬ ‫في‬ ‫سياقات‬ ‫من‬ ‫العديد‬ ،‫ضمني‬ ‫إسناد‬ ‫تعتبر‬ ‫كلها‬ ‫وهذه‬ ‫إلخ‬.. ‫التكرارية‬ ‫الحلقات‬ ‫تعابير‬ ‫و‬ ‫الدوال‬ ‫معاملت‬ ‫و‬ ‫الفصول‬ ‫إلى‬ ‫السماء‬ ‫تسند‬ ‫ببساطة‬ ‫السياقات‬ ‫هذه‬ ‫جميع‬ ،‫ظهر‬ ‫أينما‬ ‫العمل‬ ‫نفس‬ ‫يعمل‬ ‫اﻹسناد‬ ‫أن‬ ‫وبما‬ .‫التنفيذ‬ ‫زمن‬ ‫في‬ ‫الكائنات‬ ‫مراجع‬ :‫بايثون‬ ‫لغة‬ ‫في‬ ‫اﻹسنادية‬ ‫التعابير‬ ‫نكهات‬ ‫يبين‬ ‫التالي‬ ‫الجدول‬ ‫العلمية‬ ‫تفسيرها‬ spam = 'Spam' ‫والعتيادية‬ ‫اﻷساسية‬ ‫الصيغة‬ spam, ham = 'yum', 'YUM' )‫(اختياري‬ ‫المجموعي‬ ‫السناد‬ [spam, ham] = ['yum', 'YUM'] )‫(اختياري‬ ‫القوائم‬ ‫طريق‬ ‫عن‬ ‫السناد‬ spam = ham = 'lunch' ‫اﻷهداف‬ ‫تعدد‬ ‫الباقية‬ ‫الصيغ‬ ‫أما‬ ، ‫معطيات‬ ‫بنى‬ ‫أو‬ ‫قيمة‬ ‫إلى‬ ‫اسم‬ ‫إسناد‬ ‫وهي‬ ‫مشهور‬ ‫الصيغة‬ ‫يظهر‬ ‫اﻷول‬ ‫السطر‬ :‫التفصيل‬ ‫من‬ ‫بشئ‬ ‫وسنأخذها‬ ‫خاصة‬ ‫هيئات‬ ‫فهي‬ 40
  • 42.
    :‫والقوائمي‬ ‫المجموعي‬ ‫السناد‬ ‫=تقوم‬‫يساوي‬ ‫علمة‬ ‫يسار‬ ‫في‬ ‫قائمة‬ ‫أو‬ ‫مجموعة‬ ‫تستخدم‬ ‫عندما‬،‫علقة‬ ‫بينهما‬ ‫والثالث‬ ‫الثاني‬ ‫السطر‬ ‫ناحية‬ ‫من‬ ‫يقابله‬ ‫ما‬ ‫مع‬ ‫اليسار‬ ‫من‬ ‫عنصر‬ ‫كل‬ ‫تسند‬ ‫بحيث‬ ‫اليمين‬ ‫جهة‬ ‫من‬ ‫مزاوجة‬ ‫بعملية‬ ‫بايثون‬ ‫العنصر‬ ‫الثاني‬ ‫السطر‬ ‫في‬ ‫المثال‬ ‫سبيل‬ ‫على‬ ،‫اليمين‬ ‫إلى‬ ‫اليسار‬ ‫من‬ ‫بالترتيب‬ ‫اليمين‬ spam ' ‫القيمة‬ ‫إلية‬ ‫أسندت‬ yum . ' ‫اﻷهداف‬ ‫متعدد‬ ‫اﻹسناد‬ ‫جميع‬ ‫إلى‬ ‫الكائن‬ ‫نفس‬ ‫إلى‬ ‫مرجع‬ ‫بإسناد‬ ‫بايثون‬ ‫قامت‬،‫هدف‬ ‫من‬ ‫أكثر‬ ‫هناك‬ ‫كان‬ ‫اﻷخير‬ ‫السطر‬ ‫في‬ ‫الكائن‬ ‫الجدول‬ ‫من‬ ‫اﻷخير‬ ‫السطر‬ ‫في‬ ،‫اليسار‬ ‫ناحية‬ ‫من‬ ‫اﻷهداف‬ spam ‫و‬ ham ‫أسندا‬ ' ‫وهي‬ ‫القيمة‬ ‫نفس‬ ‫إليهما‬ lunch ‫إلى‬ ‫مرة‬ ‫كل‬ ‫في‬ ‫قيمة‬ ‫أسندنا‬ ‫أننا‬ ‫ولو‬ ‫تعادل‬ ‫النتيجة‬ ‫وهذه‬ ،' .‫واحد‬ ‫هدف‬ :‫المتعدد‬ ‫اﻹسناد‬ ‫عملية‬ ‫أكثر‬ ‫يوضح‬ ‫التالي‬ ‫المثال‬ >>> nudge = 1 >>> wink = 2 >>> A, B = nudge, wink # tuples >>> A, B (1, 2) >>> [C, D] = [nudge, wink] # lists >>> C, D (1, 2) >>> nudge, wink = wink, nudge # tuples: swaps values >>> nudge, wink # same as T=nudge; nudge=wink; wink=T (2, 1) :‫المتغيرات‬ ‫تسمية‬ ‫قواعد‬ ‫التي‬ ‫المتغيرات‬ ‫تسمية‬ ‫قضية‬ ‫في‬ ‫نتوسع‬ ‫أن‬ ‫نريد‬ ،‫بايثون‬ ‫في‬ ‫اﻹسناد‬ ‫قضية‬ ‫عن‬ ‫تكلمنا‬ ‫أن‬ ‫وبعد‬ ‫اﻵن‬ ‫إليها‬ ‫نسند‬ ‫عندما‬ ‫تنشأ‬ ‫المتغيرات‬ ‫أسماء‬ ‫بايثون‬ ‫في‬ .‫قواعدها‬ ‫ونفهم‬ ‫القيم‬ ‫إليها‬ ‫سنسند‬ :‫وهي‬ ‫السي‬ ‫لغة‬ ‫لقواعد‬ ‫مشابهة‬ ‫وهي‬ ،‫أيضا‬ ‫السم‬ ‫اختيار‬ ‫تحكم‬ ‫قواعد‬ ‫هناك‬ ‫ولكن‬،‫القيمة‬ – ‫سفلية‬ ‫شرطة‬ ‫أو‬ ‫بحرف‬ ‫يبدأ‬ ‫أن‬ ‫يجب‬ ‫المتغير‬ ‫اسم‬ ‫من‬ ‫عدد‬ ‫أي‬ ‫يتبعه‬ ‫أن‬ ‫ذلك‬ ‫بعد‬ ‫ويمكن‬ ‫فقط‬ ‫سفلية‬ ‫شرطة‬ ‫أو‬ ‫بحرف‬ ‫يبدأ‬ ‫أن‬ ‫يجب‬ ‫المتغير‬ ‫اسم‬ 41
  • 43.
    :‫المثال‬ ‫سبيل‬ ‫على‬،‫سفلية‬ ‫شرطة‬ ‫أو‬ ‫اﻷعداد‬ ‫أو‬ ‫اﻷحرف‬ :‫صحيحة‬ ‫أسماء‬ spam _spam Spam :‫صحيحة‬ ‫غير‬ ‫أسماء‬ 1spam !#@$ : ‫اﻷحرف‬ ‫هذه‬ ‫على‬ ‫السماء‬ ‫يحتوي‬ ‫ل‬ ‫أن‬ ‫ويجب‬ – ‫اﻷحرف‬ ‫لحالة‬ ‫حساسة‬ ‫بايثون‬ ‫فالمتغير‬ ‫بالضبط‬ ‫السي‬ ‫مثل‬ ‫الحروف‬ ‫لحالة‬ ‫حساسة‬ ‫بايثون‬ omlx ‫المتغير‬ ‫عن‬ ‫يختلف‬ Omlx ‫النقطة‬ ‫لهذه‬ ‫منتبها‬ ‫فكن‬ – ‫المحجوزة‬ ‫الكلمات‬ ‫بها‬ ‫سميت‬ ‫وإذا‬ ،‫بها‬ ‫متغيرك‬ ‫تسمى‬ ‫أن‬ ‫يمكن‬ ‫ول‬ ‫محجوزة‬ ‫بايثون‬ ‫لغة‬ ‫في‬ ‫معينة‬ ‫كلمات‬ ‫هناك‬ ‫أو‬ ‫فقط‬ ‫الحروف‬ ‫حالة‬ ‫فغير‬ ‫بها‬ ‫تسمي‬ ‫أن‬ ‫إلى‬ ‫اضطررت‬ ‫وإذا‬، ‫تحذيرا‬ ‫اللغة‬ ‫تعطيك‬ ‫متغيرك‬ ‫مثل‬ ‫معين‬ ‫حرف‬ class ‫ولكن‬ ‫بها‬ ‫التسمية‬ ‫يمكنك‬ ‫ل‬ Class ‫أو‬ klass ،‫يمكنك‬ :‫التالي‬ ‫الجدول‬ ‫في‬ ‫موضحة‬ ‫المحجوزة‬ ‫والكلمات‬ continue class break assert and except else elif del def global from for finally exec lambda is in import if raise print pass or not while try return ‫رأينا‬ ‫كما‬ ،‫بايثون‬ ‫في‬ ‫الكائنات‬ ‫و‬ ‫اﻷسماء‬ ‫بين‬ ‫بالفرق‬ ‫ننوه‬ ‫أن‬ ‫نريد‬ ،‫النقطة‬ ‫هذه‬ ‫عن‬ ‫نتحرك‬ ‫أن‬ ‫قبل‬ .‫ثابتة‬ ‫غير‬ ‫أخرى‬ ‫و‬ ‫ثابثة‬ ‫كائنات‬ ‫هناك‬ ‫أن‬ ‫ورأينا‬ ‫بايثون‬ ‫في‬ ‫الكائنات‬ ‫أنواع‬ ‫الثاني‬ ‫الفصل‬ ‫في‬ ‫سابقا‬ ‫الكائنات‬ ‫بنوع‬ ‫ترتبط‬ ‫ول‬ ‫الكائنات‬ ‫إلى‬ ‫تؤشر‬ ‫مراجع‬ ‫مجرد‬ ‫فقط‬ ‫فهي‬ ‫أخرى‬ ‫ناحية‬ ‫من‬ ‫اﻷسماء‬ ‫أما‬ :‫التالي‬ ‫المثال‬ ‫انظر‬، ‫ثابتة‬ ‫غير‬ ‫فهي‬ ‫السم‬ ‫وبنفس‬ ‫الكائنات‬ ‫من‬ ‫نوع‬ ‫أي‬ ‫إلى‬ ‫تؤشر‬ ‫أن‬ ‫تستطيع‬ ‫بل‬ >>> x = 0 # x bound to an integer object >>> x = "Hello" # now it's a string >>> x = [1, 2, 3] # and now it's a list .‫عام‬ ‫بشكل‬ ‫بايثون‬ ‫في‬ ‫اﻷسماء‬ ‫مميزات‬ ‫لنا‬ ‫يوضح‬ ‫اﻷخير‬ ‫المثال‬ ‫فإن‬ ‫نرى‬ ‫وكما‬ 42
  • 44.
    Print ‫التعبير‬ print ‫التعبير‬ ‫هذا‬ ‫يقوم‬‫التقنية‬ ‫الناحية‬ ‫من‬،‫الكائنات‬ ‫يطبع‬ ‫الذي‬ ‫التعبير‬ ‫هو‬ ‫بساطة‬ ‫بكل‬ ‫ما‬ ‫غالبا‬ ‫القياسي‬ ‫والخرج‬ .‫للبرنامج‬ ‫القياسي‬ ‫الخرج‬ ‫إلى‬ ‫ويرسله‬ ‫للكائن‬ ‫النصي‬ ‫التمثيل‬ ‫بكتابة‬ ‫ملف‬ ‫إلى‬ ‫الخرج‬ ‫النتائج‬ ‫إرسال‬ ‫تم‬ ‫إذا‬ ‫إل‬ ،‫بها‬ ‫بايثون‬ ‫برنامج‬ ‫تنفيذ‬ ‫بدأ‬ ‫التي‬ ‫النافذة‬ ‫يكون‬ .‫الشل‬ ‫أوامر‬ ‫باستخدام‬ ‫الملف‬ ‫إلى‬ ‫تكتب‬ ‫التي‬ ‫الملف‬ ‫الكائن‬ ‫دوال‬ ‫رأينا‬ ‫الثاني‬ ‫الفصل‬ ‫في‬ write ‫التعبير‬، print ‫التعبير‬ :‫أكثر‬ ‫بتركيز‬ ‫ولكن‬ ‫إليها‬ ‫مشابهة‬ print ‫القياسي‬ ‫الخرج‬ ‫إلى‬ ‫الكائنات‬ ‫بكتابة‬ ‫يقوم‬ stdout ‫الدالة‬ ‫أما‬ ، write ‫الخرج‬ ‫توفر‬ ‫أن‬ ‫ومنذ‬،‫الملف‬ ‫إلى‬ ‫النصية‬ ‫السلسل‬ ‫بكتابة‬ ‫تقوم‬ ‫ككائن‬ ‫بايثون‬ ‫في‬ ‫القياسي‬ stdout ‫وحدة‬ ‫في‬ sys ‫التعبير‬ ‫تحاكي‬ ‫أن‬ ‫يمكنك‬ print ‫باستخدام‬ ‫الملفات‬ ‫كتابة‬ ‫دالة‬ write ‫استخدام‬ ‫ولكن‬ )‫التالية‬ ‫اﻷمثلة‬ ‫(انظر‬ print .‫بكثير‬ ‫أسهل‬ ‫التعبير‬ ‫صيغ‬ ‫يوضح‬ ‫التالي‬ ‫الجدول‬ print : ‫العملية‬ ‫تفسيرها‬ print spam, ham ‫إلى‬ ‫الكائنات‬ ‫طباعة‬ sys.stdout ‫وإضافة‬ ‫فراغ‬ ‫بينهما‬ print spam, ham, ‫سطر‬ ‫إضافة‬ ‫بدون‬ ‫ولكن‬ ‫السابق‬ ‫نفس‬ ‫النهاية‬ ‫في‬ ‫جديد‬ ‫التعبير‬ ‫يقوم‬ ‫افتراضي‬ ‫بشكل‬ print ‫إضافة‬ ‫مع‬ ‫فاصلة‬ ‫بينهما‬ ‫تفصل‬ ‫التي‬ ‫الكائنات‬ ‫بين‬ ‫فراغ‬ ‫بإضافة‬ ‫إضافة‬ ‫يمكنك‬ ‫(وبالتالي‬ ‫السطر‬ ‫نهاية‬ ‫علمة‬ ‫لتجاوز‬.‫الخرج‬ ‫من‬ ‫السطر‬ ‫نهاية‬ ‫في‬ ‫السطر‬ ‫نهاية‬ ‫علمة‬ ‫تعبير‬ ‫أنه‬ )‫لحقا‬ ‫السطر‬ ‫نفس‬ ‫في‬ ‫أخرى‬ ‫نصوص‬ print ‫السطر‬ ‫في‬ ‫يظهر‬ ‫مثلما‬، ‫فاصلة‬ ‫بإضافة‬ ‫السابق‬ ‫الجدول‬ ‫من‬ ‫الثاني‬ 43