Python - موسوعة حسوب - 240108 - 045329
Python - موسوعة حسوب - 240108 - 045329
ٌ
ﻣﺮﻧﺔ وﺗﺤﺎول اﻟﺘﻌﺒﻴﺮ ﻋﻦ اﻟﻤﻔﺎﻫﻴﻢ اﻟﺒﺮﻣﺠﻴﺔ ﻣﺠﺎل ﻋﺎم ،وﻫﻲ ﻟﻐﺔ Pythonﻫﻲ ﻟﻐﺔ ﻋﺎﻟﻴﺔ اﻟﻤﺴﺘﻮى ُﻣﻔﺴﺮة ذات
ٍ
ﺑﺄﻗﻞ ﻗﺪر ﻣﻤﻜﻦ ﻣﻦ اﻟﺸﻴﻔﺮات .ﺗﺪﻋﻢ ﻟﻐﺔ Pythonاﻟﺒﺮﻣﺠﺔ اﻟﻜﺎﺋﻨﻴﺔ واﻟﺒﺮﻣﺠﺔ اﻹﺟﺮاﺋﻴﺔ ،وﻓﻴﻬﺎ ﻣﻜﺘﺒﺔ ﻗﻴﺎﺳﻴﺔ
ﻛﺒﻴﺮة.
ٌ
وﻣﺪﻋﻮﻣﺔ ﻣﻦ أﻏﻠﺒﻴﺔ أﻧﻈﻤﺔ اﻟﺘﺸﻐﻴﻞ. ﻟﻐﺔ Pythonﻫﻲ ٌ
ﻟﻐﺔ ﻣﻔﺘﻮﺣﺔ اﻟﻤﺼﺪر،
ﻣﺤﺘﻮﻳﺎت
1ﻟﻤﺤﺔ ﻋﻦ Python
2ﺑﻨﻴﺔ اﻟﻠﻐﺔ
3ﻣﻔﺴﺮ ﺑﺎﻳﺜﻮن
4أﻧﻮاع اﻟﺒﻴﺎﻧﺎت
4.1اﻟﻘﻴﻤﺔ اﻟﻤﻨﻄﻘﻴﺔ )(boolean
4.2اﻷﻋﺪاد اﻟﺼﺤﻴﺤﺔ )(int
4.3اﻷﻋﺪاد اﻟﻌﺸﺮﻳﺔ )(float
4.4اﻷﻋﺪاد اﻟﻌﺸﺮﻳﺔ )(decimal
4.5اﻷﻋﺪاد اﻟﻜﺴﺮﻳﺔ )(fraction
4.6اﻷﻋﺪاد اﻟﻤﺮﻛﺒﺔ )(complex
4.7اﻟﺴﻼﺳﻞ اﻟﻨﺼﻴﺔ )(str
4.8اﻟﺼﻔﻮف )(tuples
4.9اﻟﻘﻮاﺋﻢ )(lists
4.10اﻟﻤﺠﻤﻮﻋﺎت )(set
4.11اﻟﻘﻮاﻣﻴﺲ )(dict
4.12اﻟﺒﺎﻳﺘﺎت )(bytes
4.13ﻣﺼﻔﻮﻓﺎت اﻟﺒﺎﻳﺘﺎت )(bytesarray
5اﻟﻌﻤﻠﻴﺎت Operations
5.1اﻟﻌﻤﻠﻴﺎت اﻟﻤﻨﻄﻘﻴﺔ )(Boolean Operations
5.2ﻋﻤﻠﻴﺎت اﻟﻤﻘﺎرﻧﺔ )(Comparison Operations
5.3اﻟﻌﻤﻠﻴﺎت اﻟﻌﺪدﻳﺔ )(Numeric Operations
5.4ﻋﻤﻠﻴﺎت اﻷﻋﺪاد اﻟﺜﻨﺎﺋﻴﺔ )(Bitwise Operations
5.5ﻋﻤﻠﻴﺎت اﻟﺘﺴﻠﺴﻼت )(Sequence Operations
5.6ﻋﻮاﻣﻞ اﻟﺒﺎﻳﺘﺎت وﻣﺼﻔﻮﻓﺎت اﻟﺒﺎﻳﺘﺎت )(Byte and Bytesarray Operations
5.7ﻋﻤﻠﻴﺎت اﻟﻤﺠﻤﻮﻋﺎت )(Sets operations
6ﺑﻨﻰ اﻟﺘﺤﻜﻢ
If 6.1
for 6.2
while 6.3
pass 6.4
6.5ﻃﺮق اﺳﺘﺨﺪام اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﺔ
7اﻟﺪوال
7.1ﺗﻌﺮﻳﻒ اﻟﺪوال
7.2ﻣﻌﺎﻣﻼت اﻟﺪوال
7.3ﺗﻌﺎﺑﻴﺮ lambda
7.4ﺳﻼﺳﻞ اﻟﺘﻮﺛﻴﻖ اﻟﻨﺼﻴﺔ
8اﻷﺻﻨﺎف
8.1ﻣﻘﺪﻣﺔ
8.2اﻟﻨﻄﺎﻗﺎت وﻣﺠﺎﻻت اﻷﺳﻤﺎء
8.3ﺗﻌﺮﻳﻒ اﻷﺻﻨﺎف
8.4اﻟﻮراﺛﺔ
اﻟﺨﺎﺻﺔ private variables
ّ 8.5اﻟﻤﺘﻐﻴﺮات
8.6اﻟﻤﻜﺮرات iterators
ّ
اﻟﻤﻮﻟﺪات generators 8.7
9اﻟﻮﺣﺪات modules
9.1اﻟﻮﺣﺪات
9.2اﻟﺪاﻟﺔ )(dir
9.3اﻟﺤﺰم packages
10اﻟﻮﺣﺪات اﻟﻘﻴﺎﺳﻴﺔ ﻓﻲ ﺑﺎﻳﺜﻮن
10.1اﻟﻮﺣﺪة reﻓﻲ ﺑﺎﻳﺜﻮن
10.2اﻟﻮﺣﺪة stringﻓﻲ ﺑﺎﻳﺜﻮن
10.3اﻟﻮﺣﺪة datetimeﻓﻲ ﺑﺎﻳﺜﻮن
10.4اﻟﻮﺣﺪة calendarﻓﻲ ﺑﺎﻳﺜﻮن
10.5اﻟﻮﺣﺪة bisectﻓﻲ ﺑﺎﻳﺜﻮن
10.6اﻟﻮﺣﺪة heapqﻓﻲ ﺑﺎﻳﺜﻮن
10.7اﻟﻮﺣﺪة enumﻓﻲ ﺑﺎﻳﺜﻮن
10.8اﻟﻮﺣﺪة itertoolsﻓﻲ ﺑﺎﻳﺜﻮن
10.9اﻟﻮﺣﺪة functoolsﻓﻲ ﺑﺎﻳﺜﻮن
10.10اﻟﻮﺣﺪة operatorﻓﻲ ﺑﺎﻳﺜﻮن
10.11اﻟﻮﺣﺪة collectionsﻓﻲ ﺑﺎﻳﺜﻮن
10.12اﻟﻮﺣﺪة collections.abcﻓﻲ ﺑﺎﻳﺜﻮن
10.13اﻟﻮﺣﺪة pprintﻓﻲ ﺑﺎﻳﺜﻮن
10.14اﻟﻮﺣﺪة copyﻓﻲ ﺑﺎﻳﺜﻮن
10.15اﻟﻮﺣﺪة typesﻓﻲ ﺑﺎﻳﺜﻮن
10.16اﻟﻮﺣﺪة weakrefﻓﻲ ﺑﺎﻳﺜﻮن
10.17اﻟﻮﺣﺪة reprlibﻓﻲ ﺑﺎﻳﺜﻮن
10.18اﻟﻮﺣﺪة arrayﻓﻲ ﺑﺎﻳﺜﻮن
10.19اﻟﻮﺣﺪة sqlite3ﻓﻲ ﺑﺎﻳﺜﻮن
10.20اﻟﻮﺣﺪة copyregﻓﻲ ﺑﺎﻳﺜﻮن
10.21اﻟﻮﺣﺪة marshalﻓﻲ ﺑﺎﻳﺜﻮن
10.22اﻟﻮﺣﺪة zlibﻓﻲ ﺑﺎﻳﺜﻮن
10.23اﻟﻮﺣﺪة gzipﻓﻲ ﺑﺎﻳﺜﻮن
10.24اﻟﻮﺣﺪة bz2ﻓﻲ ﺑﺎﻳﺜﻮن
10.25اﻟﻮﺣﺪة lzmaﻓﻲ ﺑﺎﻳﺜﻮن
10.26اﻟﻮﺣﺪة zipfileﻓﻲ ﺑﺎﻳﺜﻮن
10.27اﻟﻮﺣﺪة tarfileﻓﻲ ﺑﺎﻳﺜﻮن
10.28اﻟﻮﺣﺪة csvﻓﻲ ﺑﺎﻳﺜﻮن
10.29اﻟﻮﺣﺪة configparserﻓﻲ ﺑﺎﻳﺜﻮن
10.30اﻟﻮﺣﺪة webbrowserﻓﻲ ﺑﺎﻳﺜﻮن
10.31اﻟﻮﺣﺪة cgiﻓﻲ ﺑﺎﻳﺜﻮن
10.32اﻟﻮﺣﺪة cgitbﻓﻲ ﺑﺎﻳﺜﻮن
10.33اﻟﻮﺣﺪة wsgirefﻓﻲ ﺑﺎﻳﺜﻮن
11اﻟﻤﺪﺧﻼت واﻟﻤﺨﺮﺟﺎت Inputs and Outputs
11.1ﺗﻨﺴﻴﻖ اﻟﻤﺨﺮﺟﺎت
11.2ﻗﺮاءة اﻟﻤﻠﻔﺎت واﻟﻜﺘﺎﺑﺔ ﻓﻴﻬﺎ
11.3ﺣﻔﻆ اﻟﺒﻴﺎﻧﺎت اﻟﻤﻬﻴﻜﻠﺔ ﺑﺼﻴﻐﺔ json
12اﻟﺜﻮاﺑﺖ
13اﻷﺧﻄﺎء واﻻﺳﺘﺜﻨﺎءات
13.1أﺧﻄﺎء اﻟﺼﻴﻐﺔ
13.2اﻻﺳﺘﺜﻨﺎءات
13.3اﻻﺳﺘﺜﻨﺎءات اﻟﻤﻌﺮﻓﺔ ﻣﻦ ﻃﺮف اﻟﻤﺴﺘﺨﺪم
13.4ﺗﻌﺮﻳﻒ أﺣﺪاث اﻟﺘﻨﻈﻴﻒ clean-up actions
14ﺗﻨﺴﻴﻖ اﻟﺸﻴﻔﺮة اﻟﺒﺮﻣﺠﻴﺔ
ﻟﻤﺤﺔ ﻋﻦ Python
ﺄ
إن ﻛﻨﺖ ﺗﻨﺠﺰ اﻟﻜﺜﻴﺮ ﻣﻦ اﻷﻋﻤﺎل ﺑﺎﺳﺘﺨﺪام اﻟﺤﺎﺳﻮب ،ﻓﺴﺘﺠﺪ ﻧﻔﺴﻚ ﺑﺤﺎﺟﺔ إﻟﻰ ﺗﺄدﻳﺔ ﺑﻌﺾ اﻟﻤﻬﺎم ﺑﺼﻮرة
أوﺗﻮﻣﺎﺗﻴﻜﻴﺔ .ﻓﻌﻠﻰ ﺳﺒﻴﻞ اﻟﻤﺜﺎل ﻗﺪ ﺗﺮﻏﺐ ﻓﻲ إﻧﺠﺎز ﻋﻤﻠﻴﺔ ﺑﺤﺚ واﺳﺘﺒﺪال ﻋﻠﻰ ﻋﺪد ﻛﺒﻴﺮ ﻣﻦ اﻟﻤﻠﻔﺎت ،أو إﻋﺎدة
ﺗﺴﻤﻴﺔ وﺗﺮﺗﻴﺐ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻣﻠﻔﺎت اﻟﺼﻮر وﺑﻄﺮﻳﻘﺔ ﻣﻌﻘﺪة .ﻗﺪ ﺗﺮﻏﺐ رﺑّﻤﺎ ﺑﻜﺘﺎﺑﺔ ﻗﺎﻋﺪة ﺑﻴﺎﻧﺎت ﺻﻐﻴﺮة ،أو إﻧﺸﺎء
ﺧﺎﺻﺔ ،أو ﺣﺘﻰ ﻟﻌﺒﺔ ﺻﻐﻴﺮة.
ّ ﺗﻄﺒﻴﻖ ﻳﻤﺘﻠﻚ واﺟﻬﺔ رﺳﻮﻣﻴﺔ
إن ﻛﻨﺖ ﻣﻦ اﻟﻤﺤﺘﺮﻓﻴﻦ ﻓﻲ ﻣﺠﺎل ﺗﻄﻮﻳﺮ اﻟﺒﺮﻣﺠﻴﺎت ﻓﺈ ّﻧﻚ ﺳﺘﻠﺠﺄ ﻋﻠﻰ اﻷرﺟﺢ إﻟﻰ اﺳﺘﺨﺪام اﻟﻌﺪﻳﺪ ﻣﻦ ﻣﻜﺘﺒﺎت
أن ﻋﻤﻠﻴﺎت اﻟﻜﺘﺎﺑﺔ ﺛﻢ اﻟﺘﺼﺮﻳﻒ ﺛﻢ اﻻﺧﺘﺒﺎر ﺛﻢ إﻋﺎدة اﻟﺘﺼﺮﻳﻒ ﻗﺪ أﺻﺒﺤﺖ
اﻟﻠﻐﺎت C/C++/Javaوﻟﻜﻨّﻚ ﺳﺘﺠﺪ ّ
ﺳﻠﺴﻠﺔ ﻣﻦ اﻟﻌﻤﻠﻴﺎت اﻟﻤﺘﻜﺮرة اﻟﺒﻄﻴﺌﺔ ﻟﻠﻐﺎﻳﺔ.
ﻟﺮﺑّﻤﺎ ﻛﻨﺖ ﺗﻜﺘﺐ ﺣﺰﻣﺔ اﺧﺘﺒﺎر ﻟﻤﺜﻞ ﻫﻜﺬا ﻣﻜﺘﺒﺔ ﻓﻮﺟﺪت أن ﻛﺘﺎﺑﺔ ﺷﻴﻔﺮة اﻻﺧﺘﺒﺎر أﻣﺮ ﻣﺘﻌﺐ ﻟﻠﻐﺎﻳﺔ ،أو أ ّﻧﻚ ﻛﺘﺒﺖ
ﺑﺮﻧﺎﻣﺠﺎ ﺑﻤﻘﺪوره اﺳﺘﺨﺪام ﻟﻐﺔ ﻣﻠﺤﻘﺔ ،وﻟﻜﻨّﻚ ﻻ ﺗﺮﻏﺐ ﺑﺘﺼﻤﻴﻢ وﺗﻀﻤﻴﻦ ﻟﻐﺔ ﺟﺪﻳﺪة ﻟﻠﺘﻄﺒﻴﻖ.
ً
ﻳﻤﻜﻨﻚ ﻛﺘﺎﺑﺔ ﺷﻴﻔﺮة ﺻﺪﻓﺔ ﻓﻲ أﻧﻈﻤﺔ ﻳﻮﻧﻜﺲ ) (Unixأو ﻛﺘﺎﺑﺔ ﻣﻠﻔﺎت batchﻓﻲ ﻧﻈﺎم وﻳﻨﺪوز )(Windows
ً
ﺳﺎﺑﻘﺎ ،وﻟﻜﻦ ﺷﻴﻔﺮات اﻟﺼﺪﻓﺔ ) (shell scriptsﻣﻼﺋﻤﺔ ﻟﻨﻘﻞ اﻟﻤﻠﻔﺎت وإﺟﺮاء ﻷداء ﺑﻌﺾ ﻣﻦ اﻟﻤﻬﻤﺎت اﻟﺘﻲ ذﻛﺮﻧﺎﻫﺎ
ً ً
اﻟﺘﻌﺪﻳﻼت ﻋﻠﻰ اﻟﺒﻴﺎﻧﺎت اﻟﻨﺼﻴﺔ ،وﻫﻲ ﻟﻴﺴﺖ ﻣﻼﺋﻤﺔ إﻃﻼﻗﺎ ﻟﻠﺘﻄﺒﻴﻘﺎت ذات اﻟﻮاﺟﻬﺎت اﻟﺮﺳﻮﻣﻴﺔ أو اﻷﻟﻌﺎب.
ً
وﻟﻜﻦ ﻗﺪ ﺗﺄﺧﺬ ﻋﻤﻠﻴﺔ اﻟﻨﺴﺨﺔ اﻷوﻟﻴﺔ وﻗﺘً ﺎ ﻃﻮﻳﻼ.
ّ ﺑﺮﻧﺎﻣﺠﺎ ﺑﺎﺳﺘﺨﺪام اﻟﻠﻐﺎت C/C++/Java
ً ﻳﻤﻜﻨﻚ أن ﺗﻜﺘﺐ
ّ
ﺗﻤﺘﺎز ﻟﻐﺔ ﺑﺎﻳﺜﻮن ﺑﺴﻬﻮﻟﺔ اﻻﺳﺘﺨﺪام ،وﺗﻮﻓﺮﻫﺎ ﻓﻲ أﻧﻈﻤﺔ ،Windowsو Mac OS Xو ،Unixوﺳﺘﺴﺎﻋﺪك ﻓﻲ
إﻧﺠﺎز أﻋﻤﺎﻟﻚ ﺑﺴﺮﻋﺔ أﻛﺒﺮ.
ﺑﺎﻳﺜﻮن ﺳﻬﻠﺔ اﻻﺳﺘﺨﺪام ،وﻟﻜﻨّﻬﺎ ﻓﻲ اﻟﻮﻗﺖ ﻋﻴﻨﻪ ﻟﻐﺔ ﺑﺮﻣﺠﻴﺔ ﺣﻘﻴﻘﻴﺔ ،ﺗﻘﺪّ م ً
دﻋﻤﺎ وﺑﻨﻴﺔ أﻛﺒﺮ ﻟﻠﺒﺮاﻣﺞ اﻟﻜﺒﻴﺮة ﻣﻦ
ﺗﻔﺤﺺ اﻷﺧﻄﺎء ﻣﻦ ﻟﻐﺔ ،C ﺷﻴﻔﺮات اﻟﺼﺪﻓﺔ أو ﻣﻠﻔﺎت .batchوﻣﻦ ﺟﺎﻧﺐ آﺧﺮ ،ﺗﻘﺪّ م ﺑﺎﻳﺜﻮن ﻗﺪرة أﻛﺒﺮ ﻋﻠﻰ ّ
ً
ﻋﺎل أﻳﻀﺎ ،ﻛﺎﻟﻤﺼﻔﻮﻓﺎت اﻟﻤﺮﻧﺔ
ﺗﺘﻀﻤﻦ أﻧﻮاﻋً ﺎ ذات ﻣﺴﺘﻮى ٍ
ّ وﻧﻈﺮا ﻟﻜﻮن ﺑﺎﻳﺜﻮن ﻟﻐﺔ ﻣﻦ اﻟﻤﺴﺘﻮى اﻟﻌﺎﻟﻲ ﺟﺪا ،ﻓﺈ ّﻧﻬﺎ
ً
وﻟﻤﺎ ﻛﺎﻧﺖ اﻷﻧﻮاع أﻛﺜﺮ ﺷﻤﻮﻟﻴﺔ ﻓﻲ ﺑﺎﻳﺜﻮن ﻓﺒﺎﻹﻣﻜﺎن اﻻﺳﺘﻔﺎدة ﻣﻦ اﻟﻠﻐﺔ ﻓﻲ ﺣﻞ ﻣﺸﺎﻛﻞ أﻛﺒﺮ ﻣﻦ ّ واﻟﻘﻮاﻣﻴﺲ.
ﻓﺈن اﻷﻣﻮر ﺗﻜﻮن ﻓﻲ ﺑﺎﻳﺜﻮن ﻋﻠﻰ ّ
أﻗﻞ ّ ذﻟﻚ وﻣﻊ ،Perl ﺣﺘﻰ أو Awk ﻣﺜﻞ ﻟﻐﺎت ﺑﻮاﺳﻄﺔ ﻬﺎ ّ
ﺣﻠ ﺗﻠﻚ اﻟﺘﻲ ﻳﻤﻜﻦ
ﺗﻘﺪﻳﺮ ﺑﻨﻔﺲ ﺳﻬﻮﻟﺔ اﻟﻠﻐﺘﻴﻦ اﻟﺴﺎﺑﻘﺘﻴﻦ.
ﺗﺘﻴﺢ ﺑﺎﻳﺜﻮن ﺗﻘﺴﻴﻢ اﻟﺒﺮﻧﺎﻣﺞ إﻟﻰ ﺣﺰم ﻣﺘﻌﺪدة ﻳﻤﻜﻦ إﻋﺎدة اﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﺑﺮاﻣﺞ ﺑﺎﻳﺜﻮن أﺧﺮى ،وﺗﻤﺘﻠﻚ اﻟﻠﻐﺔ
ّ
ﺑﺘﻌﻠﻢ ﻣﺠﻤﻮﻋﺔ ﻛﺒﻴﺮة ﻣﻦ اﻟﺤﺰم اﻷﺳﺎﺳﻴﺔ اﻟﺘﻲ ﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ أﺳﺎﺳﺎ ﻟﺒﺮاﻣﺠﻚ ،أو أﻣﺜﻠﺔ ﺗﺴﺎﻋﺪك ﻓﻲ اﻟﺒﺪء
اﻟﺒﺮﻣﺠﺔ ﺑﻮاﺳﻄﺔ ﺑﺎﻳﺜﻮن .ﺗﻘﺪّ م ﺑﻌﺾ ﻫﺬه اﻟﺤﺰم أﻣﻮ ًرا ﻣﺜﻞ ﻧﻈﺎم اﻟﻤﺪﺧﻼت واﻟﻤﺨﺮﺟﺎت ﻟﻠﻤﻠﻔﺎت ،file I/O
اﺳﺘﺪﻋﺎءات اﻟﻨﻈﺎم sockets ،وﺣﺘﻰ واﺟﻬﺎت ﻟﺒﻌﺾ ﺣﺰم اﻟﻮاﺟﻬﺎت ﻣﺜﻞ .Tk
ﻣﻔﺴﺮة ) ،interpretedوﻟﻴﺴﺖ ﻣﺒﻨﻴﺔ ] ([compiledﻣﺎ ﻳﺘﻴﺢ ﺗﻮﻓﻴﺮ اﻟﻜﺜﻴﺮ ﻣﻦ اﻟﻮﻗﺖ أﺛﻨﺎء ﻋﻤﻠﻴﺔ ﺑﺎﻳﺜﻮن ﻫﻲ ﻟﻐﺔ ّ
ﻧﻈﺮا ﻻﻧﺘﻔﺎء اﻟﺤﺎﺟﺔ إﻟﻰ إﺟﺮاء ﻋﻤﻠﻴﺔ اﻟﺘﺼﺮﻳﻒ واﻟﺮﺑﻂ .ﻳﻤﻜﻦ اﺳﺘﺨﺪام اﻟﻤﻔﺴﺮ ﺑﺼﻮرة ﺗﻔﺎﻋﻠﻴﺔ ،اﻷﻣﺮ اﻟﺘﻄﻮﻳﺮ ً
اﻟﺬي ﻳﺴﻬّ ﻞ اﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻟﺨﺼﺎﺋﺺ اﻟﺘﻲ ﺗﻘﺪّ ﻣﻬﺎ اﻟﻠﻐﺔ ،وﻟﻜﺘﺎﺑﺔ ﺑﺮاﻣﺞ ﻟﻐﺮض اﻟﺘﺪرﻳﺐ أو اﻻﺧﺘﺒﺎر ،أو ﻻﺧﺘﺒﺎر داﻟﺔ
اﻟﻤﻔﺴﺮ ﻛﺂﻟﺔ ﺣﺎﺳﺒﺔ.
ّ أﺛﻨﺎء ﻋﻤﻠﻴﺔ ﺗﻄﻮﻳﺮ ﺑﺮﻧﺎﻣﺞ ﻣﺎ ،إﺿﺎﻓﺔ إﻟﻰ إﻣﻜﺎﻧﻴﺔ اﺳﺘﺨﺪام
ﺗﺘﻴﺢ ﺑﺎﻳﺜﻮن ﻛﺘﺎﺑﺔ اﻟﺒﺮاﻣﺞ ﺑﺄﺳﻠﻮب ﻣﺨﺘﺼﺮ وﻣﻘﺮوء ،ﻓﺎﻟﺒﺮاﻣﺞ اﻟﻤﻜﺘﻮﺑﺔ ﻓﻲ ﺑﺎﻳﺜﻮن ﺗﻜﻮن ﻋﺎدة أﻗﺼﺮ ﺑﻜﺜﻴﺮ ﻣﻦ
ﻣﻜﺎﻓﺌﺎﺗﻬﺎ ﻓﻲ ﻟﻐﺎت ،Cأو ،C++أو ،Javaوﻟﻌﺪّ ة أﺳﺒﺎب:
ﺗﺘﻴﺢ أﻧﻮاع اﻟﺒﻴﺎﻧﺎت ذات اﻟﻤﺴﺘﻮى اﻟﻌﺎﻟﻲ إﻣﻜﺎﻧﻴﺔ اﺳﺘﺨﺪام ﺗﻌﺎﺑﻴﺮ ﻣﻌﻘﺪّ ة ﻓﻲ ﻋﺒﺎرة واﺣﺪة.
ﻳﺠﺮي ﺗﺠﻤﻴﻊ اﻟﻌﺒﺎرات ﺑﺎﺳﺘﺨﺪام اﻹزاﺣﺎتً ،
ﺑﺪﻻ ﻣﻦ أﻗﻮاس اﻟﺒﺪاﻳﺔ واﻟﻨﻬﺎﻳﺔ.
ﻻ ﺣﺎﺟﺔ ﻟﻠﺘﺼﺮﻳﺢ ﻋﻦ ﻧﻮع اﻟﻤﺘﻐﻴﺮ أو اﻟﻮﺳﻴﻂ.
ﺑﻨﻴﺔ اﻟﻠﻐﺔ
اﻟﻤﻌﺮﻓﺎت وﻏﻴﺮﻫﺎ.
ّ ﺑﻴﺎن ﻟﻠﺒﻨﻴﺔ اﻟﻌﺎﻣﺔ ﻟﻠﻐﺔ ﺑﺎﻳﺜﻮن وﺑﻌﺾ اﻷﻣﻮر اﻟﻌﺎﻣﺔ ﻣﺜﻞ اﻟﺘﻌﻠﻴﻘﺎت وﺗﺴﻤﻴﺔ
ﻣﻔﺴﺮ ﺑﺎﻳﺜﻮن
ﻳﺴﺘﺨﺪم ﻣﻔﺴﺮ ﺑﺎﻳﺜﻮن ﻟﻤﻌﺎﻟﺠﺔ اﻟﺸﻴﻔﺮات اﻟﻤﻜﺘﻮﺑﺔ ﺑﻬﺎ ،وﻫﻮ ﻳﻘﺒﻞ ﻋﺪدً ا ﻣﻦ اﻟﺨﻴﺎرات ،وﻳﻤﻜﻦ ﺗﺸﻐﻴﻠﻪ ﻓﻲ اﻟﻮﺿﻊ
اﻟﺘﻔﺎﻋﻠﻲ.
أﻧﻮاع اﻟﺒﻴﺎﻧﺎت
اﻟﻘﻴﻤﺘﺎن اﻟﻤﻨﻄﻘﻴﺘﺎن اﻟﻠﺘﺎن ﺗﺪﻋﻤﻬﻤﺎ ﺑﺎﻳﺜﻮن ﻫﻤﺎ Trueو Falseوﻫﻤﺎ ﻛﺎﺋﻨﺎن ﺛﺎﺑﺘﺎن )(Constant objects
ﺻﺤﻴﺤﺎ Trueأو ﺧﻄﺎ .False
ً ﻓﺈﻣﺎ أن ﻳﻜﻮن
ﺻﺤﺔ ﺗﻌﺒﻴﺮ ﻣﺎّ ،
ﻳﻌﺒﺮان ﻋﻦ ّ
اﻟﻌﺪد اﻟﺼﺤﻴﺢ integerﻫﻮ أي ﻋﺪد ﻣﻮﺟﺐ أو ﺳﺎﻟﺐ ﻻ ﻳﺘﻀﻤﻦ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ ،وﻳﻤﻜﻦ ﺗﻤﺜﻴﻠﻪ ﺑﺎﻟﻨﻈﺎم اﻟﻌﺸﺮي
) ،decimalاﻷﺳﺎس (10واﻟﺴﺖ ﻋﺸﺮي ) ،hexadecimalاﻷﺳﺎس (16واﻟﺜﻤﺎﻧﻲ ) ،octalاﻷﺳﺎس (8واﻟﺜﻨﺎﺋﻲ
) ،binaryاﻷﺳﺎس .(2
اﻷﻋﺪاد اﻟﻌﺸﺮﻳﺔ )ذات اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻤﺔ (floating pointﻫﻲ اﻷﻋﺪاد اﻟﺘﻲ ﺗﺘﻀﻤﻦ ﻓﺎﺻﻠﺔ ﻋﺸﺮﻳﺔ أو ﻋﻼﻣﺔ أﺳﻴﺔ
ﺗﺘﻴﺢ وﺣﺪة decimalإﺟﺮاء ﺣﺴﺎﺑﺎت ﺳﺮﻳﻌﺔ ﻋﻠﻰ اﻷﻋﺪاد اﻟﻌﺸﺮﻳﺔ ﻣﻊ ﺿﻤﺎن اﻟﺘﻘﺮﻳﺐ اﻟﺼﺤﻴﺢ.
ﺗﺘﻴﺢ وﺣﺪة fractionsاﻟﺘﻌﺎﻣﻞ ﻣﻊ اﻷﻋﺪاد اﻟﻜﺴﺮﻳﺔ ﻣﺜﻞ )⅓( أو ) (4/18وإﺟﺮاء اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻤﺨﺘﻠﻔﺔ
ﻋﻠﻴﻬﺎ.
ّ
اﻟﺼﻒ ﻣﻦ ﻋﺪد ﻣﻦ اﻟﻘﻴﻢ اﻟﻤﻔﺼﻮﻟﺔ ﻋﻦ ﺑﻌﻀﻬﺎ ﺑﻔﺎﺻﻠﺔ. ﻳﺘﻜﻮن
ّ
اﻟﻘﻮاﺋﻢ )(lists
ﻗﺎﺋﻤﺔ ﻣﻦ اﻟﻘﻴﻢ )اﻟﻌﻨﺎﺻﺮ( اﻟﻤﻔﺼﻮﻟﺔ ﻋﻦ ﺑﻌﻀﻬﺎ اﻟﺒﻌﺾ ﺑﻔﻮاﺻﻞ ) (,وﻣﺤﺎﻃﺔ ﺑﺄﻗﻮاس ﻣﺮﺑﻌﺔ .ﻳﻤﻜﻦ ﻟﻠﻘﻮاﺋﻢ أن
ﺗﺘﻀﻤﻦ أﻧﻮاﻋً ﺎ ﻣﺨﺘﻠﻔﺔ ،وﻟﻜﻦ ﻋﺎدة ﻣﺎ ﺗﻜﻮن اﻟﻌﻨﺎﺻﺮ ﻛﻠﻬﺎ ﻣﻦ اﻟﻨﻮع ﻧﻔﺴﻪ.
ّ
اﻟﻤﺠﻤﻮﻋﺎت )(set
اﻟﻘﻮاﻣﻴﺲ )(dict
اﻟﺒﺎﻳﺘﺎت )(bytes
اﻟﺒﺎﻳﺘﺎت ﻫﻲ ﺗﺴﻠﺴﻼت ﻟﺒﺎﻳﺘﺎت ﻣﻔﺮدة ﻏﻴﺮ ﻗﺎﺑﻠﺔ ﻟﻠﺘﻐﻴﻴﺮ ) ،(immutableوﻫﻲ ﻣﺸﺎﺑﻬﺔ إﻟﻰ ﺣﺪّ ﻛﺒﻴﺮ ﻟﻠﺴﻼﺳﻞ
اﻟﻨﺼﻴﺔ.
ﻣﺼﻔﻮﻓﺎت اﻟﺒﺎﻳﺘﺎت bytearrayﻫﻲ اﻟﻜﺎﺋﻨﺎت اﻟﻘﺎﺑﻠﺔ ﻟﻠﺘﻐﻴﻴﺮ واﻟﺘﻲ ﺗﻘﺎﺑﻞ ﻛﺎﺋﻨﺎت اﻟﺒﺎﻳﺘﺎت .bytes
اﻟﻌﻤﻠﻴﺎت Operations
ﺗﻘﺪّ م ﺑﺎﻳﺜﻮن ﺛﻤﺎن ﻋﻤﻠﻴﺎت ﻟﻠﻤﻘﺎرﻧﺔ ،وﺗﻤﺘﻠﻚ ﺟﻤﻴﻌﻬﺎ ﻧﻔﺲ اﻷوﻟﻮﻳﺔ )وﻫﻲ أﻋﻠﻰ ﻣﻦ اﻟﻌﻤﻠﻴﺎت اﻟﻤﻨﻄﻘﻴﺔ(.
ﺗﺪﻋﻢ ﺑﺎﻳﺜﻮن ﺷﺄﻧﻬﺎ ﻓﻲ ذﻟﻚ ﺷﺄن ﺑﻘﻴﺔ اﻟﻠﻐﺎت اﻟﺒﺮﻣﺠﻴﺔ ﺟﻤﻴﻊ اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ اﻟﻤﻌﺮوﻓﺔ ،وﺗﺪﻋﻢ ﺟﻤﻴﻊ اﻷﻧﻮاع
اﻟﻌﺪدﻳﺔ )ﺑﺎﺳﺘﺜﻨﺎء اﻷﻋﺪاد اﻟﻤﺮﻛﺒﺔ(
ﺗﺪﻋﻢ ﻛﺎﺋﻨﺎت اﻟﺒﺎﻳﺘﺎت وﻣﺼﻔﻮﻓﺎت اﻟﺒﺎﻳﺘﺎت ﻋﻤﻠﻴﺎت اﻟﺘﺴﻠﺴﻼت اﻟﺸﺎﺋﻌﺔ ،وﺗﺘﻮاﻓﻖ ﻫﺬه اﻟﻜﺎﺋﻨﺎت ﻣﻊ اﻟﻌﻮاﻣﻞ ﻣﻦ
اﻟﻨﻮع ذاﺗﻪ إﺿﺎﻓﺔ إﻟﻰ أي ﻛﺎﺋﻦ ﺷﺒﻴﻪ ﺑﺎﻟﺒﺎﻳﺘﺎت.
ﺑﻨﻰ اﻟﺘﺤﻜﻢ
If
for
ﺗﻤﺮ ﻋﻠﻰ ﻋﻨﺎﺻﺮ أي ﺗﺴﻠﺴﻞ )ﻗﺎﺋﻤﺔ أو ﺳﻠﺴﻠﺔ ﻧﺼﻴﺔ( ﻣﻌﺘﻤﺪة ﻓﻲ ذﻟﻚ ﻋﻠﻰ ﺗﺮﺗﻴﺐ ﺗﻠﻚ
ﻋﺒﺎرة forﻓﻲ ﺑﺎﻳﺜﻮن ّ
اﻟﻌﻨﺎﺻﺮ ﻓﻲ ذﻟﻚ اﻟﺘﺴﻠﺴﻞ.
while
ﺻﺤﻴﺤﺎ.
ً ﺗﺴﺘﻤﺮ ﻋﺒﺎرة whileﻓﻲ اﻟﻌﻤﻞ ﻣﺎ دام اﻟﺸﺮط اﻟﺬي ﺗﻌﻤﻞ ﻋﻠﻰ أﺳﺎﺳﻪ
pass
ﻻ ﺗﺆدي ﻋﺒﺎرة passأي ﻋﻤﻞ ﻋﻠﻰ اﻹﻃﻼق ،وﻳﻤﻜﻦ اﺳﺘﺨﺪام ﻫﺬه اﻟﻌﺒﺎرة ﻋﻨﺪ اﻟﺤﺎﺟﺔ إﻟﻰ اﺳﺘﺨﺪام ﻋﺒﺎرة ﻣﻌﻴﻨﺔ
وﻟﻜﻦ دون اﻟﺤﺎﺟﺔ إﻟﻰ أداء أي وﻇﻴﻔﺔ.
ﺗﻘﺪّ م ﺑﺎﻳﺜﻮن ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال واﻟﺘﻮاﺑﻊ اﻟﺘﻲ ﺗﺴﻬّ ﻞ ﻋﻤﻠﻴﺔ إﻧﺸﺎء اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﺔ واﻻﺳﺘﻔﺎدة ﻣﻨﻬﺎ ﺑﺼﻮرة
ﻓﻌّ ﺎﻟﺔ ﻓﻲ اﻟﻘﻮاﻣﻴﺲ واﻟﻘﻮاﺋﻢ وﻏﻴﺮﻫﺎ.
اﻟﺪوال
ﺗﻌﺮﻳﻒ اﻟﺪوال
ُﺗﻌﺮف اﻟﺪوال ﺑﺎﺳﺘﺨﺪام اﻟﻜﻠﻤﺔ اﻟﻤﻔﺘﺎﺣﻴﺔ defﻳﺘﺒﻌﻬﺎ اﺳﻢ اﻟﺪاﻟﺔ ﺛﻢ ﻗﺎﺋﻤﺔ ﺑﺎﻟﻤﻌﺎﻣﻼت ﻣﺤﺎﻃﺔ ﺑﺎﻷﻗﻮاس .أﻣﺎ
اﻟﻜﺘﻠﺔ اﻟﺮﺋﻴﺴﻴﺔ ﻟﻠﺪاﻟﺔ ﻓﺘﺒﺪأ ﻓﻲ اﻟﺴﻄﺮ اﻟﺘﺎﻟﻲ ﻟﺴﻄﺮ اﻟﺘﻌﺮﻳﻒ ،وﻳﺠﺐ أن ﺗﺰاح ﺑﻤﻘﺪار إزاﺣﺔ واﺣﺪة.
ﻣﻌﺎﻣﻼت اﻟﺪوال
ّ
وﺗﻤﺜﻞ ﺳﻠﺴﻠﺔ اﻟﺘﻮﺛﻴﻖ اﻟﻨﺼﻴﺔ اﻟﺨﺎﺻﺔ ﺑﺘﻠﻚ اﻟﺪاﻟﺔ ﻧﺼﻴﺔ،
ﻳﻤﻜﻦ أن ﺗﻜﻮن اﻟﻌﺒﺎرة اﻷوﻟﻰ ﻓﻲ ﻛﺘﻠﺔ اﻟﺪاﻟﺔ ﺳﻠﺴﻠﺔ ّ
أﻳﻀﺎ ﺗﺴﻤﻴﺔ ،docstringﺳﺘﺨﺪم ﺳﻼﺳﻞ اﻟﺘﻮﺛﻴﻖ اﻟﻨﺼﻴﺔ ﻹﻧﺘﺎج ﺗﻮﺛﻴﻖ ﻋﺒﺮ ﺷﺒﻜﺔ اﻹﻧﺘﺮﻧﺖ ،أو وﻳﻄﻠﻖ ﻋﻠﻴﻬﺎ ً
ﺗﺴﻤﺢ ﻟﻠﻤﺴﺘﺨﺪم ﺑﺘﺼﻔﺢ اﻟﺸﻴﻔﺮة ﺑﺼﻮرة ﺗﻔﺎﻋﻠﻴﺔ.
اﻷﺻﻨﺎف
ﻣﻘﺪﻣﺔ
ﺗﻌﺪّ اﻷﺻﻨﺎف وﺳﻴﻠﺔ ﻟﺠﻤﻊ اﻟﺒﻴﺎﻧﺎت واﻟﻌﻤﻠﻴﺎت ﻓﻲ ﺑﻮﺗﻘﺔ واﺣﺪة ،وﻳﺆدي إﻧﺸﺎء ﺻﻨﻒ ﺟﺪﻳﺪ إﻟﻰ ﺗﻜﻮﻳﻦ ﻧﻮع ﺟﺪﻳﺪ
ﺑﻜﻞ ﺻﻨﻒ ﻣﺠﻤﻮﻋﺔ ﻣﻦ ﻣﻦ اﻟﻜﺎﺋﻨﺎت ،ﻣﺎ ﻳﺘﻴﺢ إﻧﺸﺎء ﻧﺴﺦ ) (instancesﻣﻦ ذﻟﻚ اﻟﻨﻮع .ﻳﻤﻜﻦ أن ﺗﺮﺗﺒﻂ ّ
اﻟﺨﺎﺻﻴﺎت ) (attributesاﻟﺘﻲ ﺗﺴﺎﻋﺪ ﻓﻲ ﻣﺘﺎﺑﻌﺔ ﺣﺎﻟﺔ اﻟﺼﻨﻒ ،إﺿﺎﻓﺔ إﻟﻰ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺘﻮاﺑﻊ )(methods
اﻟﺘﻲ ﺗﺴﺎﻋﺪ ﻓﻲ ﺗﻌﺪﻳﻞ ﺣﺎﻟﺔ ذﻟﻚ اﻟﺼﻨﻒ.
ﻣﺠﺎل اﻷﺳﻤﺎء ﻫﻮ راﺑﻂ ﺑﻴﻦ اﻷﺳﻤﺎء واﻟﻜﺎﺋﻨﺎت ،وﻣﻦ اﻷﻣﺜﻠﺔ ﻋﻠﻰ ﻣﺠﺎﻻت اﻷﺳﻤﺎء :ﻣﺠﻤﻮﻋﺔ اﻷﺳﻤﺎء اﻟﺪاﺧﻠﻴﺔ،
اﻷﺳﻤﺎء اﻟﻌﺎﻣﺔ ) (globalﻓﻲ وﺣﺪة ﻣﻌﻴﻨﺔ ،واﻷﺳﻤﺎء اﻟﻤﺤﻠﻴﺔ ) (localﻓﻲ ﺑﻨﻴﺔ ّ
داﻟﺔ ﻣﺎ .أﻣﺎ اﻟﻨﻄﺎق ﻓﻬﻮ ﺟﺰء ﻣﻦ
ﺷﻴﻔﺮة ﺑﺎﻳﺜﻮن ﻳﻤﻜﻦ ﻓﻴﻪ اﻟﻮﺻﻮل إﻟﻰ ﻣﺠﺎل اﻷﺳﻤﺎء ﺑﺼﻮرة ﻣﺒﺎﺷﺮة.
ﺗﻌﺮﻳﻒ اﻷﺻﻨﺎف
اﻟﻮراﺛﺔ
ﺗﺪﻋﻢ ﺑﺎﻳﺜﻮن ﺷﺄﻧﻬﺎ ﻓﻲ ذﻟﻚ ﺷﺄن أي ﻟﻐﺔ ﺑﺮﻣﺠﻴﺔ ﻛﺎﺋﻨﻴﺔ اﻟﺘﻮﺟﻪ ﻣﻔﻬﻮم اﻟﻮراﺛﺔ ،وﺗﺪﻋﻢ ﻛﺬﻟﻚ إﻋﺎدة ﺗﻌﺮﻳﻒ
) (overrideاﻟﺘﻮاﺑﻊ اﻟﻤﻮروﺛﺔ ﻣﻦ اﻷﺻﻨﺎف اﻷﺳﺎﺳﻴﺔ إﺿﺎﻓﺔ إﻟﻰ اﻟﻮراﺛﺔ اﻟﻤﺘﻌﺪدة.
ﻣﺘﻐﻴﺮات اﻷﺻﻨﺎف اﻟﺨﺎﺻﺔ ) (Privateواﻟﺘﻲ ﻻ ﻳﻤﻜﻦ اﻟﻮﺻﻮل إﻟﻴﻬﺎ ﻣﻦ ﺧﺎرج اﻟﻜﺎﺋﻦ ﻏﻴﺮ ﻣﻮﺟﻮدة ﻓﻲ ﺑﺎﻳﺜﻮن.
أن اﻻﺳﻢ اﻟﻤﺴﺒﻮق ﺑﺸﺮﻃﺔ ﺳﻔﻠﻴﺔ )ﻣﺜﻞ (_spam :ﻳﺠﺐ أن ﻳُ ﻌﺎﻣﻞ ﻛﺠﺰء ﻏﻴﺮ وﻟﻜﻦ ﻳﺘﻔﻖ ﻣﻌﻈﻢ اﻟﻤﺒﺮﻣﺠﻴﻦ ﻋﻠﻰ ّ
ﻋﺎم ﻣﻦ اﻟﻮاﺟﻬﺔ اﻟﺒﺮﻣﺠﻴﺔ )ﺳﻮاء أﻛﺎن ذﻟﻚ اﻟﺠﺰء داﻟﺔ أو ﺗﺎﺑﻌً ﺎ أو ﺧﺎﺻﻴﺔ(.
اﻟﻤﻜﺮرات iterators
اﻟﻤﻜﺮرات ﻫﻲ أﺳﺎس ﻋﻤﻞ ﺣﻠﻘﺎت forاﻟﺘﻜﺮارﻳﺔ ،وﻳﻤﻜﻦ ﺗﺨﺼﻴﺺ ﻋﻤﻞ ﻫﺬه اﻟﺤﻠﻘﺎت اﻟﺘﻜﺮارﻳﺔ ﻋﻦ ﻃﺮﻳﻖ
ّ
ﺗﻌﺮﻳﻒ ﻣﻜﺮرات ﺟﺪﻳﺪة.
ّ
اﻟﻤﻮﻟﺪات generators
اﻟﻮﺣﺪات modules
اﻟﻮﺣﺪات
ﻣﻔﺴﺮ ّ
ﻣﺴﺘﻘﻠﺔ أو ﻓﻲ ّ ﺗﻘﺪّ م ﺑﺎﻳﺜﻮن ﻃﺮﻳﻘﺔ ﻹﺿﺎﻓﺔ اﻟﺘﻌﺮﻳﻔﺎت ﻓﻲ ﻣﻠﻒ ﻣﺴﺘﻘﻞ واﺳﺘﺨﺪاﻣﻬﺎ ﻓﻲ ﺷﻴﻔﺮة
ﺑﺎﻳﺜﻮن اﻟﺘﻔﺎﻋﻠﻲ .ﺗﺴﻤﻰ ﻫﺬه اﻟﻤﻠﻔﺎت ﺑﺎﻟﻮﺣﺪات .Modules
اﻟﺪاﻟﺔ )(dir
اﻟﺤﺰم packages
ﺗﻌﺪّ اﻟﺤﺰم ﻃﺮﻳﻘﺔ ﻟﻬﻴﻜﻠﺔ ﻣﺠﺎﻻت أﺳﻤﺎء اﻟﺤﺰم ﻓﻲ ﺑﺎﻳﺜﻮن ،وﺗﺴﺎﻋﺪ ﻓﻲ ﺗﺠﻨﺐ ﺣﺪوث أي ﺗﻀﺎرب ﺑﻴﻦ أﺳﻤﺎء
اﻟﻮﺣﺪات ﻓﻲ اﻟﺤﺰم ﻣﺘﻌﺪّ دة اﻟﻮﺣﺪات ﻣﺜﻞ (/NumPy (http://www.numpy.org :أو ﻣﻜﺘﺒﺔ ﺑﺎﻳﺜﻮن ﻟﻤﻌﺎﻟﺠﺔ
اﻟﺼﻮر .(/Python Imaging Library (https://pillow.readthedocs.io
ﻣﻔﺴﺮ
ﺗﻀﻢ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻮﺣﺪات اﻟﻘﻴﺎﺳﻴﺔ ) (standard modulesوﺑﻌﻀﻬﺎ ﻣﺪﻣﺞ ﻣﻊ ّ ّ ﺗﻘﺪّ م ﺑﺎﻳﺜﻮن ﻣﻜﺘﺒﺔ
ﺟﺰءا ﻣﻦ اﻟﻠﻐﺔ ،وﻟﻜﻦ اﻟﻬﺪف ﻣﻨﻬﺎ ﻫﻮ إﻣﺎ زﻳﺎدة ﻛﻔﺎءة
ً ﺑﺎﻳﺜﻮن وﺗﺘﻴﺢ اﻟﻮﺻﻮل إﻟﻰ ﻋﻤﻠﻴﺎت ﻫﻲ ﻟﻴﺴﺖ ﻓﻲ اﻷﺻﻞ
اﻟﻤﻔﺴﺮ أو ﻹﺗﺎﺣﺔ اﻟﻮﺻﻮل إﻟﻰ اﻟﻌﻤﻠﻴﺎت اﻷﺳﺎﺳﻴﺔ ﻓﻲ ﻧﻈﺎم اﻟﺘﺸﻐﻴﺮ ﻣﺜﻞ اﺳﺘﺪﻋﺎءات اﻟﻨﻈﺎم )system
ّ ﻋﻤﻞ
.(calls
ﺗﻘﺪم اﻟﻮﺣﺪة ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﻌﻤﻠﻴﺎت اﻟﺨﺎﺻﺔ ﺑﻤﻄﺎﺑﻘﺔ اﻟﺘﻌﺎﺑﻴﺮ اﻟﻨﻤﻄﻴﺔ Regular Expressionsوﻫﻲ ﻣﺸﺎﺑﻬﺔ ّ
إﻟﻰ ﺣﺪّ ﻛﺒﻴﺮ ﻟﻠﻌﻤﻠﻴﺎت اﻟﻤﻮﺟﻮدة ﻓﻲ ﻟﻐﺔ .Perl
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة ﻋﺪدً ا ﻣﻦ اﻷﺻﻨﺎف اﻟﺘﻲ ﺗﻌﺎﻟﺞ اﻟﺘﺎرﻳﺦ واﻟﻮﻗﺖ ﺑﻄﺮق ّ
ﻣﺒﺴﻄﺔ وأﺧﺮى ﻣﻌﻘﺪة ،وﺗﺪﻋﻢ ﺑﺎﻳﺜﻮن
إﺟﺮاء اﻟﻌﻤﻠﻴﺎت اﻟﺤﺴﺎﺑﻴﺔ ﻋﻠﻰ اﻟﺘﻮارﻳﺦ واﻷوﻗﺎت.
ﺗﺘﻴﺢ ﻫﺬه اﻟﻮﺣﺪة اﻟﺤﺼﻮل ﻋﻠﻰ ﺗﻘﺎوﻳﻢ ﻣﺸﺎﺑﻬﺔ ﻟﻤﺨﺮﺟﺎت اﻟﺒﺮﻧﺎﻣﺞ calﻓﻲ أﻧﻈﻤﺔ ﻳﻮﻧﻜﺲ ،إﻟﻰ ﺟﺎﻧﺐ أ ّﻧﻬﺎ ﺗﻘﺪّ م
ﻋﺪدً ا ﻣﻦ اﻟﺘﻮاﺑﻊ اﻟﻤﻔﻴﺪة واﻟﺨﺎﺻﺔ ﺑﺎﻟﺘﻘﺎوﻳﻢ.
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة وﺳﻴﻠﺔ ﻻﺳﺘﺨﺪام ﺧﻮارزﻣﻴﺔ ﻃﺎﺑﻮر اﻟﻜﻮﻣﺔ heap queueواﻟﺘﻲ ﺗﻌﺮف ﻛﺬﻟﻚ ﺑﺨﻮارزﻣﻴﺔ
ﻃﺎﺑﻮر اﻷوﻟﻮﻳﺔ .priority queue
enumerationﻫﻮ ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷﺳﻤﺎء اﻟﺮﻣﺰﻳﺔ )اﻟﻌﻨﺎﺻﺮ( اﻟﻤﺮﺗﺒﻄﺔ ﺑﻘﻴﻢ ﺛﺎﺑﺘﺔ وﻓﺮﻳﺪة .ﻳﻤﻜﻦ ﻣﻘﺎرﻧﺔ ﻋﻨﺎﺻﺮ
enumerationﻋﻦ ﻃﺮﻳﻖ ﻫﻮﻳﺘﻬﺎ ،وﻳﻤﻜﻦ اﻟﻤﺮور ﻋﻠﻰ ﻋﻨﺎﺻﺮه ﺑﻮاﺳﻄﺔ ﺣﻠﻘﺔ ﺗﻜﺮارﻳﺔ.
ّ
اﻟﻤﺘﻮﻓﺮة ﻓﻲ ﻟﻐﺎت ﻣﺜﻞ ،APLوHaskell ﻜﺮرات ُﻣﺸﺎﺑﻬﺔ ﻟﺘﻠﻚ
اﻟﻤﺴﺎﻋﺪة ﻋﻠﻰ ﺑﻨﺎء ُﻣ ّ
ﺗﻘﺪم ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷدوات ُ ّ
و .SMLﺑُﻨﻲ ّ
ﻛﻞ ﻣﻨﻬﺎ ﺑﻄﺮﻳﻘﺔ ُﺗﻨﺎﺳﺐ ﻟﻐﺔ ﺑﺎﻳﺜﻮن.
اﻷﺳﺎﺳﻴﺔ ﻓﻲ ﺑﺎﻳﺜﻮن.
ّ وأداء ،واﻟﺘﻲ ُﺗﻤﺎﺛﻞ اﻟﻌﻮاﻣﻞ
ً ً
ﺳﺮﻋﺔ ّ
اﻟﻔﻌﺎﻟﺔ ُﺗﻘﺪّ م ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال
ﺗﺘﻴﺢ وﺣﺪة pprintإﻣﻜﺎﻧﻴﺔ ﻃﺒﺎﻋﺔ ﺑﻨﻰ اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﺑﺎﻳﺜﻮن ﺑﺼﻮرة ﺟﻤﻴﻠﺔ pretty-printﺑﻄﺮﻳﻘﺔ ﺗﺴﻤﺢ
ﻣﻔﺴﺮ ﺑﺎﻳﺜﻮن.
ﺑﺎﺳﺘﺨﺪام ﻫﺬه اﻟﺒﻴﺎﻧﺎت ﻛﻤﺪﺧﻼت ﻓﻲ ّ
أ
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة ﻋﺪدً ا ﻣﻦ اﻟﺪوال اﻟﻤﺴﺎﻋﺪة ﻹﻧﺸﺎء أﻧﻮاع ﺑﻴﺎﻧﺎت ﺟﺪﻳﺪة ﺑﺼﻮرة دﻳﻨﺎﻣﻴﻜﻴﺔ.
ﺗﻘﺪّ م اﻟﻮﺣﺪة وﺳﻴﻠﺔ ﻹﻧﺘﺎج ﺗﻤﺜﻴﻼت ﻟﻠﻜﺎﺋﻨﺎت ﻣﻊ إﻣﻜﺎﻧﻴﺔ ﺗﺤﺪﻳﺪ ﺣﺠﻢ اﻟﺴﻠﺴﻠﺔ اﻟﻨﺼﻴﺔ اﻟﻨﺎﺗﺠﺔ.
ﺗﻌﺮف ﻫﺬه اﻟﻮﺣﺪة ﻛﺎﺋﻨًﺎ ﻳﻤﻜﻦ ﻋﻦ ﻃﺮﻳﻘﻪ ﺗﻤﺜﻴﻞ ﻣﺼﻔﻮﻓﺔ ﻣﻦ اﻟﻘﻴﻢ اﻷﺳﺎﺳﻴﺔ ﻣﺜﻞ اﻟﺤﺮوف واﻷﻋﺪاد اﻟﺼﺤﻴﺤﺔ
واﻷﻋﺪاد ذات اﻟﻔﺎﺻﻠﺔ اﻟﻌﺎﺋﻤﺔ ﺑﺸﻜﻞ ﻣﻀﻐﻮط.
ﺗﻀﻢ ﻫﺬه اﻟﻮﺣﺪة ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺪوال اﻟﺘﻲ ﻳﻤﻜﻨﻬﺎ ﻗﺮاءة وﻛﺘﺎﺑﺔ ﻗﻴﻢ ﺑﺎﻳﺜﻮن ﺑﺎﻟﺼﻴﻐﺔ اﻟﺜﻨﺎﺋﻴﺔ .binary format
ّ
ّ
اﻟﻤﺘﻮﻓﺮة ﻓﻲ ﻫﺬه اﻟﻮﺣﺪة إﺟﺮاء ﻋﻤﻠﻴﺎت اﻟﻀﻐﻂ وﻓﻚ اﻟﻀﻐﻂ ﻋﻠﻰ اﻟﺒﻴﺎﻧﺎت ﺑﺎﺳﺘﺨﺪام ﻣﻜﺘﺒﺔ .zlib ﺗﺘﻴﺢ اﻟﺪوال
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة واﺟﻬﺔ ﺑﺴﻴﻄﺔ ﻟﻀﻐﻂ اﻟﻤﻠﻔﺎت وﻓﻚ ﺿﻐﻄﻬﺎ ﺑﻨﻔﺲ اﻷﺳﻠﻮب اﻟﻤﺘّ ﺒﻊ ﻓﻲ ﺑﺮﻧﺎﻣﺠﻲ gzipو
gunzipﻓﻲ .GNUوﺗﺠﺮي ﻋﻤﻠﻴﺔ ﺿﻐﻂ اﻟﺒﻴﺎﻧﺎت ﺑﻮاﺳﻄﺔ وﺣﺪة .zlib
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة واﺟﻬﺔ ﻣﺘﻜﺎﻣﻠﺔ ﻟﻀﻐﻂ اﻟﺒﻴﺎﻧﺎت وﻓﻚ اﻟﻀﻐﻂ ﻋﻨﻬﺎ ﺑﺎﺳﺘﺨﺪام ﺧﻮارزﻣﻴﺔ اﻟﻀﻐﻂ .bzip2
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻷﺻﻨﺎف واﻟﺪوال اﻟﻤﺴﺎﻋﺪة ﻹﺟﺮاء ﻋﻤﻠﻴﺎت ﺿﻐﻂ اﻟﺒﻴﺎﻧﺎت وﻓﻚ اﻟﻀﻐﻂ ﻋﻨﻬﺎ
ﺑﺎﺳﺘﺨﺪام ﺧﻮارزﻣﻴﺔ اﻟﻀﻐﻂ .LZMA
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة أدواة ﻹﻧﺸﺎء ﻣﻠﻔﺎت ZIPواﻟﻘﺮاءة ﻣﻨﻬﺎ واﻟﻜﺘﺎﺑﺔ ﻓﻴﻬﺎ وإﻟﺤﺎق اﻟﻤﻠﻔﺎت ﺑﻬﺎ وﻋﺮض ﻣﺤﺘﻮﻳﺎﺗﻬﺎ.
اﻟﻮﺣﺪة tarfileﻓﻲ ﺑﺎﻳﺜﻮن
ﺗﺘﻴﺢ وﺣﺪة tarfileﻗﺮاءة ﻣﻠﻒ أرﺷﻴﻒ ﻣﻦ ﻧﻮع tarواﻟﻜﺘﺎﺑﺔ ﻓﻴﻪ إﻟﻰ ﺟﺎﻧﺐ ﻣﻠﻔﺎت اﻷرﺷﻴﻒ اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﺗﻘﻨﻴﺔ
اﻟﻀﻐﻂ gzipو bz2و .lzma
ﺗﻘﺪّ م وﺣﺪة csvﻋﺪدً ا ﻣﻦ اﻷﺻﻨﺎف اﻟﺘﻲ ﺗﺴﺎﻋﺪ ﻓﻲ ﻗﺮاءة اﻟﺒﻴﺎﻧﺎت اﻟﻤﺠﺪوﻟﺔ وﻛﺘﺎﺑﺘﻬﺎ ﺑﺼﻴﻐﺔ .CSV
ً
ﺻﻨﻔﺎ ﻳﺴﺘﺨﺪم ﻟﻐﺔ إﻋﺪادات ﺑﺴﻴﻄﺔ ﺗﻘﺪّ م ﺑﻨﻴﺔ ﻣﺸﺎﺑﻬﺔ ﻟﻠﺒﻨﻴﺔ اﻟﺘﻲ ﺗﻘﺪّ ﻣﻬﺎ ﻣﻠﻔﺎت INIﻓﻲ ﻧﻈﺎم ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة
.Microsoft Windowsوﻳﻤﻜﻦ اﺳﺘﺨﺪام ﻫﺬا اﻟﺼﻨﻒ ﻟﻜﺘﺎﺑﺔ ﺑﺮاﻣﺞ وﺗﻄﺒﻴﻘﺎت ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪﻣﻴﻦ ﺗﺨﺼﻴﺼﻬﺎ
ﺑﻜﻞ ﺳﻬﻮﻟﺔ.
ﺗﻘﺪّ م ﻫﺬه اﻟﻮﺣﺪة ﻋﺪدً ا ﻣﻦ اﻷدوات اﻟﺘﻲ ﺗﺴﺘﺨﺪم ﺑﻮاﺳﻄﺔ ﺳﻜﺮﺑﺘﺎت CGIاﻟﻤﻜﺘﻮﺑﺔ ﻓﻲ ﺑﺎﻳﺜﻮن.
ﺗﻌﺪّ اﻟﻮﺣﺪة wsgirefوﺳﻴﻠﺔ ﻟﺘﻄﺒﻴﻖ ﻣﻌﺎﻳﻴﺮ WSGIوﻳﻤﻜﻦ اﺳﺘﺨﺪاﻣﻬﺎ ﻹﺿﺎﻓﺔ دﻋﻢ WSGIإﻟﻰ ﻣﺨﺪّ ﻣﺎت
اﻟﻮﻳﺐ وأﻃﺮ اﻟﻌﻤﻞ اﻟﺒﺮﻣﺠﻴﺔ.
ﺗﻨﺴﻴﻖ اﻟﻤﺨﺮﺟﺎت
ﺗﻘﺪّ م ﺑﺎﻳﺜﻮن ﻋﺪدً ا ﻣﻦ اﻟﻄﺮاﺋﻖ اﻟﺘﻲ ﺗﺴﺎﻋﺪ ﻓﻲ ﺗﻨﺴﻴﻖ ﻣﺨﺮﺟﺎت اﻟﺒﺮاﻣﺞ ،ﻓﻴﻤﻜﻦ ﻃﺒﺎﻋﺔ اﻟﺒﻴﺎﻧﺎت ﺑﺼﻴﻐﺔ ﺳﻬﻠﺔ
اﻟﻘﺮاءة ،أو ﻳﻤﻜﻦ ﻛﺘﺎﺑﺔ اﻟﺒﻴﺎﻧﺎت ﻓﻲ ﻣﻠﻒ ﻻﺳﺘﺨﺪاﻣﻪ ﻓﻲ اﻟﻤﺴﺘﻘﺒﻞ.
ﺗﺘﻴﺢ ﺑﺎﻳﺜﻮن ﻗﺮاءة اﻟﻤﻠﻔﺎت واﻟﻜﺘﺎﺑﺔ ﻓﻴﻬﺎ ﺑﻨﻤﻄﻴﻦ ﻣﺨﺘﻠﻔﻴﻦ ﻫﻤﺎ اﻟﻨﺼﻲ واﻟﺜﻨﺎﺋﻲ.
ﺗﺘﻴﺢ ﺑﺎﻳﺜﻮن اﺳﺘﺨﺪام ﺻﻴﻐﺔ ﺗﺒﺎدل اﻟﺒﻴﺎﻧﺎت اﻟﻤﻌﺮوﻓﺔ ) JSONاﺧﺘﺼﺎر ،(JavaScript Object Notation
ﺑﺎﺳﺘﺨﺪام اﻟﻮﺣﺪة اﻟﻘﻴﺎﺳﻴﺔ . json
اﻟﺜﻮاﺑﺖ
ﺗﻘﺪم ﺑﺎﻳﺜﻮن ﻣﺠﻤﻮﻋﺔ ﻣﻦ اﻟﺜﻮاﺑﺖ ،ﺑﻌﻀﻬﺎ ﻓﻲ ﻣﺠﺎل اﻷﺳﻤﺎء اﻟﺪاﺧﻠﻲ ،أﻣﺎ اﻟﺒﻌﺾ اﻵﺧﺮ ﻓﻴﻀﺎف ﻣﻦ
ﻣﻔﺴﺮ ﺑﺎﻳﺜﻮن اﻟﺘﻔﺎﻋﻠﻲ.
ﻗﺒﻞ اﻟﻮﺣﺪة siteإﻟﻰ ّ
اﻷﺧﻄﺎء واﻻﺳﺘﺜﻨﺎءات
أﺧﻄﺎء اﻟﺼﻴﻐﺔ
اﻻﺳﺘﺜﻨﺎءات
ﻗﺪ ﺗﻜﻮن اﻟﺘﻌﺎﺑﻴﺮ اﻟﺒﺮﻣﺠﻴﺔ ﻓﻲ اﻟﺸﻴﻔﺮة ﺻﺤﻴﺤﺔ ﻣﻦ ﻧﺎﺣﻴﺔ اﻟﺼﻴﻐﺔ ،إﻻ أ ّﻧﻬﺎ ﻗﺪ ﺗﺘﺴﺒﺐ ﻓﻲ ﺣﺪوث أﺧﻄﺎء ﻋﻨﺪ
اﻟﻤﻜﺘﺸﻔﺔ أﺛﻨﺎء ﺗﻨﻔﻴﺬ اﻟﺸﻴﻔﺮة ﺑﺎﻻﺳﺘﺜﻨﺎءات ) (exceptionsوﻗﺪ ﺗﺘﺴﺒﺐ ﻓﻲ
ﺗﺴﻤﻰ اﻷﺧﻄﺎء ُ
ﻣﺤﺎوﻟﺔ ﺗﻨﻔﻴﺬﻫﺎّ .
إﻳﻘﺎف ﻋﻤﻞ اﻟﺒﺮﻧﺎﻣﺞ ) (fatalﻓﻲ ﺑﻌﺾ اﻷﺣﻴﺎن.
ﻳﻤﻜﻦ ﻟﻠﻤﺴﺘﺨﺪم إﻧﺸﺎء ﺻﻨﻒ اﺳﺘﺜﻨﺎء ﺟﺪﻳﺪ )راﺟﻊ ﻗﺴﻢ اﻷﺻﻨﺎف ﻓﻲ ﺑﺎﻳﺜﻮن ﻟﻠﻤﺰﻳﺪ ﻣﻦ اﻟﻤﻌﻠﻮﻣﺎت( ،وﻳﺠﺐ أن
ﻣﺸﺘﻘﺔ ﻣﻦ اﻟﺼﻨﻒ Exceptionﺳﻮاء أﻛﺎن ذﻟﻚ ﺑﺼﻮرة ﻣﺒﺎﺷﺮة أو ﻏﻴﺮ ﻣﺒﺎﺷﺮة.ّ ﺗﻜﻮن اﻻﺳﺘﺜﻨﺎءات
ﺟﺰءا اﺧﺘﻴﺎرﻳً ﺎ آﺧﺮ ،واﻟﻬﺪف ﻣﻨﻪ ﻫﻮ ﺗﻌﺮﻳﻒ أﺣﺪاث ﺗﻨﻈﻴﻒ ) (clean-up actionsﻳﺠﺐ ً ﺗﻤﺘﻠﻚ ﻋﺒﺎرة try
وﺗﻌﺮف ﺑﻌﺾ اﻟﻜﺎﺋﻨﺎت أﺣﺪاث ﺗﻨﻈﻴﻒ ﻗﻴﺎﺳﻴﺔ ﻳﺠﺮي ﺗﻨﻔﻴﺬﻫﺎ ﻋﻨﺪ اﻧﺘﻔﺎء اﻟﺤﺎﺟﺔ ﻟﺬﻟﻚّ ﺗﻨﻔﻴﺬﻫﺎ ﻓﻲ ﺟﻤﻴﻊ اﻟﻈﺮوف،
ﻋﻤﺎ إذا ﻛﺎﻧﺖ اﻟﻌﻤﻠﻴﺔ اﻟﺘﻲ ﺗﺴﺘﺨﺪم ذﻟﻚ اﻟﻜﺎﺋﻦ ﻧﺎﺟﺤﺔ أم ﻓﺎﺷﻠﺔ.
اﻟﻜﺎﺋﻦ ،وﺑﻐﺾ اﻟﻨﻈﺮ ّ
ﺗﺘّ ﺒﻊ ﻣﻌﻈﻢ اﻟﻤﺸﺎرﻳﻊ اﻟﻤﻜﺘﻮﺑﺔ ﺑﻠﻐﺔ ﺑﺎﻳﺜﻮن دﻟﻴﻞ اﻟﺘﻨﺴﻴﻖ PEP8 (https://www.python.org/dev/peps/p
ﻳﺸﺠﻊ ﻋﻠﻰ اﻋﺘﻤﺎد ﺗﻨﺴﻴﻖ ﻳﻤﺘﺎز ﺑﺎﻟﻤﻘﺮوﺋﻴﺔ اﻟﻌﺎﻟﻴﺔ واﻟﻤﻈﻬﺮ اﻟﺠﻤﻴﻞ.
ّ (ep-0008واﻟﺬي
ﻣﺠﻠﻮﺑﺔ ﻣﻦ ""https://wiki.hsoub.com/index.php?title=Python&oldid=28287