الفرق بين المراجعتين لصفحة: «Python/Topics»

من موسوعة حسوب
ط استبدال النص - 'Python/numeric-operations' ب'Python/numeric_operations'
تعديل الكلمة من تعلم لغة python إلى تعلم لغة بايثون مع إضافة إشارة لصفحة الهبوط في الأكاديمية
 
(27 مراجعة متوسطة بواسطة 5 مستخدمين غير معروضة)
سطر 1: سطر 1:
== [[Python/Basic Syntax|بنية اللغة]] ==
== [[Python/Basic Syntax|بنية لغة بايثون]] ==
بيان للبنية العامة للغة بايثون وبعض الأمور العامة مثل التعليقات وتسمية المعرّفات وغيرها.
بيان للبنية العامة للغة بايثون وبعض الأمور العامة مثل التعليقات وتسمية المعرّفات وغيرها.


== [[Python/interpreter|مفسر بايثون]] ==
== [[Python/interpreter|مفسر لغة بايثون]] ==
يستخدم مفسر بايثون لمعالجة الشيفرات المكتوبة بها، وهو يقبل عددًا من الخيارات، ويمكن تشغيله في الوضع التفاعلي.
يستخدم مفسر لغة بايثون لمعالجة الشيفرات المكتوبة بها، وهو يقبل عددًا من الخيارات، ويمكن تشغيله في الوضع التفاعلي.


== أنواع البيانات ==
== أنواع البيانات في لغة بايثون ==


=== [[Python/boolean|القيمة المنطقية (boolean)]] ===
=== [[Python/boolean|القيمة المنطقية (boolean)]] ===
القيمتان المنطقيتان (البوليانيتان) اللتان تدعمهما بايثون هما True و False وهما كائنان ثابتان (Constant objects) يعبران عن صحّة تعبير ما، فإمّا أن يكون صحيحًا True أو خطأً False.
القيمتان المنطقيتان اللتان تدعمهما بايثون هما <code>True</code> و <code>False</code> وهما كائنان ثابتان (Constant objects) يعبران عن صحّة تعبير ما، فإمّا أن يكون صحيحًا True أو خطأً False.


=== [[Python/int|الأعداد الصحيحة (int)]] ===
=== [[Python/int|الأعداد الصحيحة (int)]] ===
سطر 23: سطر 23:


=== [[Python/complex|الأعداد المركبة (complex)]] ===
=== [[Python/complex|الأعداد المركبة (complex)]] ===
تتكوّن الأعداد المركبّة من جزأين حقيقي وتخيّلي وكلاهما من [[Python/Types/float|الأعداد العشرية ذات الفاصلة العائمة]] float، ويستخدم الحرفان 'j' أو 'J' للتعبير عن الأعداد المركبة.
تتكوّن الأعداد المركبّة من جزأين حقيقي وتخيّلي وكلاهما من [[Python/Types/float|الأعداد العشرية ذات الفاصلة العائمة]] float، ويستخدم الحرفان <code>'j'</code> أو <code>'J'</code> للتعبير عن الأعداد المركبة.


=== [[Python/str|السلاسل النصية (str)]] ===
=== [[Python/str|السلاسل النصية (str)]] ===
سطر 32: سطر 32:


=== [[Python/list|القوائم (lists)]] ===
=== [[Python/list|القوائم (lists)]] ===
قائمة من القيم (العناصر) المفصولة عن بعضها البعض بفواصل (،) ومحاطة بأقواس مربعة. يمكن للقوائم أن تتضمّن أنواعًا مختلفة، ولكن عادة ما تكون العناصر كلها من النوع نفسه.
قائمة من القيم (العناصر) المفصولة عن بعضها البعض بفواصل (<code>,</code>) ومحاطة بأقواس مربعة. يمكن للقوائم أن تتضمّن أنواعًا مختلفة، ولكن عادة ما تكون العناصر كلها من النوع نفسه.


=== [[Python/set|المجموعات (set)]] ===
=== [[Python/set|المجموعات (set)]] ===
سطر 38: سطر 38:


=== [[Python/dict|القواميس (dict)]] ===
=== [[Python/dict|القواميس (dict)]] ===
القواميس هي مجاميع غير مرتّبة من أزواج (مفتاح: قيمة) (key: value).
القواميس هي مجاميع غير مرتّبة من أزواج (مفتاح: قيمة) <code>(key: value)</code>.


=== [[Python/bytes|البايتات (bytes)]] ===
=== [[Python/bytes|البايتات (bytes)]] ===
سطر 45: سطر 45:
=== [[Python/bytearray|مصفوفات البايتات (bytesarray)]] ===
=== [[Python/bytearray|مصفوفات البايتات (bytesarray)]] ===
مصفوفات البايتات bytearray هي الكائنات القابلة للتغيير والتي تقابل كائنات [[Python/bytes|البايتات bytes]].
مصفوفات البايتات bytearray هي الكائنات القابلة للتغيير والتي تقابل كائنات [[Python/bytes|البايتات bytes]].
=== [[Python/enum|Enum]] ===
enumeration هو مجموعة من الأسماء الرمزية (العناصر) المرتبطة بقيم ثابتة وفريدة. يمكن مقارنة عناصر enumeration عن طريق هويتها، ويمكن المرور على عناصره بواسطة حلقة تكرارية.


== العمليات Operations ==
== العمليات Operations ==


=== [[Python/bool-operators|العمليات المنطقية (Boolean Operations)]] ===
=== [[Python/bool-operators|العمليات المنطقية (Boolean Operations)]] ===
تقدّم بايثون ثلاث عمليات منطقية هي or و and و not.
تقدّم بايثون ثلاث عمليات منطقية هي <code>or</code> و <code>and</code> و <code>not</code>.


=== [[Python/comparisons|عمليات المقارنة (Comparison Operations)]] ===
=== [[Python/comparisons|عمليات المقارنة (Comparison Operations)]] ===
سطر 58: سطر 55:


=== [[Python/numeric_operations|العمليات العددية (Numeric Operations)]] ===
=== [[Python/numeric_operations|العمليات العددية (Numeric Operations)]] ===
تدعم بايثون شأنها في ذلك شأن بقية اللغات البرمجية جميع العمليات الحسابية المعروفة، وتدعم جميع الأنواع العددية (باستثناء [[Python/complex|الأعداد المركبة]])
تدعم بايثون شأنها في ذلك شأن بقية [https://academy.hsoub.com/programming/general/%D9%84%D8%BA%D8%A7%D8%AA-%D8%A7%D9%84%D8%A8%D8%B1%D9%85%D8%AC%D8%A9/ لغات البرمجة] جميع العمليات الحسابية المعروفة، وتدعم جميع الأنواع العددية (باستثناء [[Python/complex|الأعداد المركبة]])


=== [[Python/bitwise-operations|عمليات الأعداد الثنائية (Bitwise Operations)]] ===
=== [[Python/bitwise_operations|عمليات الأعداد الثنائية (Bitwise Operations)]] ===
يمكن إجراء عمليات الأعداد الثنائية Bitwise على <nowiki/>[[Python/int|الأعداد الصحيحة]] فقط.
يمكن إجراء عمليات الأعداد الثنائية Bitwise على <nowiki/>[[Python/int|الأعداد الصحيحة]] فقط.


=== [[Python/sequence-operations|عمليات التسلسلات (Sequence Operations)]] ===
=== [[Python/sequence_operations|عمليات التسلسلات (Sequence Operations)]] ===
تدعم بايثون مجموعة من العمليات الخاصة بالتسلسلات ([[Python/list|القوائم]]، <nowiki/>[[Python/tuples|الصفوف]]،  <nowiki/>[[Python/str|السلاسل النصية]]، <nowiki/>[[Python/bytes|والبايتات]] و<nowiki/>[[Python/bytearray|مصفوفات البايتات]]).
تدعم بايثون مجموعة من العمليات الخاصة بالتسلسلات ([[Python/list|القوائم]]، <nowiki/>[[Python/tuples|الصفوف]]،  <nowiki/>[[Python/str|السلاسل النصية]]، <nowiki/>[[Python/bytes|والبايتات]] و<nowiki/>[[Python/bytearray|مصفوفات البايتات]]).


=== [[Python/byte-bytearray-operations|عوامل البايتات ومصفوفات البايتات (Byte and Bytesarray Operations)]] ===
=== [[Python/byte_bytearray_operations|عوامل البايتات ومصفوفات البايتات (Byte and Bytesarray Operations)]] ===
تدعم كائنات <nowiki/>[[Python/bytes|البايتات]] و<nowiki/>[[Python/bytearray|مصفوفات البايتات]] <nowiki/>[[Python/sequence-operations|عمليات التسلسلات]] الشائعة، وتتوافق هذه الكائنات مع العوامل من النوع ذاته إضافة إلى أي كائن شبيه بالبايتات.
تدعم كائنات <nowiki/>[[Python/bytes|البايتات]] و<nowiki/>[[Python/bytearray|مصفوفات البايتات]] <nowiki/>[[Python/sequence_operations|عمليات التسلسلات]] الشائعة، وتتوافق هذه الكائنات مع العوامل من النوع ذاته إضافة إلى أي كائن شبيه بالبايتات.


=== [[Python/set-operations|عمليات المجموعات (Sets operations)]] ===
=== [[Python/set_operations|عمليات المجموعات (Sets operations)]] ===
تقدّم بايثون مجموعة من العمليات الخاصة [[Python/set|بالمجموعات]] و<nowiki/>[[Python/set#.D8.A7.D9.84.D9.85.D8.AC.D9.85.D9.88.D8.B9.D8.A7.D8.AA .D8.A7.D9.84.D8.AC.D8.A7.D9.85.D8.AF.D8.A9 .28frozenset.29|المجموعات الجامدة]].
تقدّم بايثون مجموعة من العمليات الخاصة [[Python/set|بالمجموعات]] و<nowiki/>[[Python/set#.D8.A7.D9.84.D9.85.D8.AC.D9.85.D9.88.D8.B9.D8.A7.D8.AA .D8.A7.D9.84.D8.AC.D8.A7.D9.85.D8.AF.D8.A9 .28frozenset.29|المجموعات الجامدة]].


سطر 75: سطر 72:


=== [[Python/if|If]] ===
=== [[Python/if|If]] ===
تقدّم بايثون عبارة if للتحكم المشروط بتدفق الشيفرة.
تقدّم بايثون عبارة <code>if</code> للتحكم المشروط بتدفق الشيفرة.


=== [[Python/for|for]] ===
=== [[Python/for|for]] ===
سطر 81: سطر 78:


=== [[Python/while|while]] ===
=== [[Python/while|while]] ===
تستمر عبارة while في العمل ما دام الشرط الذي تعمل على أساسه صحيحًا.
تستمر عبارة <code>while</code> في العمل ما دام الشرط الذي تعمل على أساسه صحيحًا.


=== [[Python/pass|pass]] ===
=== [[Python/pass|pass]] ===
سطر 92: سطر 89:


=== [[Python/defining_functions|تعريف الدوال]] ===
=== [[Python/defining_functions|تعريف الدوال]] ===
تُعرَّف الدوال باستخدام الكلمة المفتاحية def يتبعها اسم الدالة ثم قائمة بالمعاملات محاطة بالأقواس. أما الكتلة الرئيسية للدالة فتبدأ في السطر التالي لسطر التعريف، ويجب أن تزاح بمقدار إزاحة واحدة.
تُعرَّف الدوال باستخدام الكلمة المفتاحية <code>def</code> يتبعها اسم الدالة ثم قائمة بالمعاملات محاطة بالأقواس. أما الكتلة الرئيسية للدالة فتبدأ في السطر التالي لسطر التعريف، ويجب أن تزاح بمقدار إزاحة واحدة.


=== [[Python/arguments|معاملات الدوال]] ===
=== [[Python/arguments|معاملات الدوال]] ===
سطر 131: سطر 128:
تقدّم بايثون طريقة لإضافة التعريفات في ملف مستقل واستخدامها في شيفرة مستقلّة أو في <nowiki/>[[Python/interpreter|مفسّر بايثون]] التفاعلي. تسمى هذه الملفات بالوحدات Modules.
تقدّم بايثون طريقة لإضافة التعريفات في ملف مستقل واستخدامها في شيفرة مستقلّة أو في <nowiki/>[[Python/interpreter|مفسّر بايثون]] التفاعلي. تسمى هذه الملفات بالوحدات Modules.


=== [[Python/standard_modules|الوحدات القياسية]] ===
=== [[Python/dir|الدالة <code>()dir</code>]] ===
تستخدم الدالة الداخلية <code>dir()‎</code> لمعرفة الأسماء التي تعرّفها الوحدة، وتعيد هذه الداة <nowiki/>[[Python/list|قائمة]] مرتّبة من <nowiki/>[[Python/str|السلاسل النصية]].
 
=== [[Python/packages|الحزم packages]] ===
تعدّ الحزم طريقة لهيكلة <nowiki/>[[Python/scopes-and-namespaces|مجالات أسماء]] الحزم في بايثون،  وتساعد في تجنب حدوث أي تضارب بين أسماء الوحدات في الحزم متعدّدة الوحدات مثل: [http://www.numpy.org/ NumPy] أو مكتبة بايثون لمعالجة الصور [https://pillow.readthedocs.io/ Python Imaging Library].
 
== [[Python/standard_modules|الوحدات القياسية في لغة بايثون]] ==
تقدّم بايثون مكتبة تضمّ مجموعة من الوحدات القياسية (standard modules) وبعضها مدمج مع [[Python/interpreter|مفسّر بايثون]] وتتيح الوصول إلى عمليات هي ليست في الأصل جزءًا من اللغة، ولكن الهدف منها هو إما زيادة كفاءة عمل المفسّر أو لإتاحة الوصول إلى العمليات الأساسية في نظام التشغير مثل استدعاءات النظام (system calls).
تقدّم بايثون مكتبة تضمّ مجموعة من الوحدات القياسية (standard modules) وبعضها مدمج مع [[Python/interpreter|مفسّر بايثون]] وتتيح الوصول إلى عمليات هي ليست في الأصل جزءًا من اللغة، ولكن الهدف منها هو إما زيادة كفاءة عمل المفسّر أو لإتاحة الوصول إلى العمليات الأساسية في نظام التشغير مثل استدعاءات النظام (system calls).


=== [[Python/dir|الدالة ()dir]] ===
=== [[Python/re|الوحدة <code>re</code> في لغة بايثون]] ===
تستخدم الدالة الداخلية <code>dir()</code> لمعرفة الأسماء التي تعرّفها الوحدة، وتعيد هذه الداة <nowiki/>[[Python/list|قائمة]] مرتّبة من <nowiki/>[[Python/str|السلاسل النصية]].
تقّدم الوحدة مجموعة من العمليات الخاصة بمطابقة التعابير النمطية Regular Expressions وهي مشابهة إلى حدّ كبير للعمليات الموجودة في لغة Perl.
 
=== [[Python/string|الوحدة <code>string</code> في لغة بايثون]] ===
 
تضمّ الوحدة عددًا من الثوابت والأصناف المفيدة في معالجة السلاسل النصية.
 
=== [[Python/datetime|الوحدة <code>datetime</code> في لغة بايثون]] ===
تقدّم هذه الوحدة عددًا من الأصناف التي تعالج التاريخ والوقت بطرق مبسّطة وأخرى معقدة، وتدعم بايثون إجراء العمليات الحسابية على التواريخ والأوقات.
 
=== [[Python/calendar|الوحدة <code>calendar</code> في لغة بايثون]] ===
تتيح هذه الوحدة الحصول على تقاويم مشابهة لمخرجات البرنامج cal في أنظمة يونكس، إلى جانب أنّها تقدّم عددًا من التوابع المفيدة والخاصة بالتقاويم.
 
=== [[Python/bisect|الوحدة <code>bisect</code> في لغة بايثون]]===
تقدّم هذه الوحدة وسيلة للتعامل مع القوائم وفرزها بصورة تلقائية، وبذلك يمكن تجنب إعادة فرز القائمة بعد كل عملية إدراج للعناصر فيها. 
 
=== [[Python/heapq|الوحدة <code>heapq</code> في لغة بايثون]]===
تقدّم هذه الوحدة وسيلة لاستخدام خوارزمية طابور الكومة heap queue والتي تعرف كذلك بخوارزمية طابور الأولوية priority queue.
 
=== [[Python/enum|الوحدة <code>enum</code> في لغة بايثون]]===
enumeration هو مجموعة من الأسماء الرمزية (العناصر) المرتبطة بقيم ثابتة وفريدة. يمكن مقارنة عناصر enumeration عن طريق هويتها، ويمكن المرور على عناصره بواسطة حلقة تكرارية.
 
=== [[Python/itertools‎|الوحدة <code>itertools‎</code> في لغة بايثون]]===
تقّدم مجموعة من الأدوات المُساعدة على بناء مُكرّرات مُشابهة لتلك المتوفّرة في لغات مثل APL، وHaskell وSML. بُني كلّ منها بطريقة تُناسب لغة بايثون.
 
=== [[Python/functools‎|الوحدة <code>functools‎</code> في لغة بايثون]]===
تُقدّم دوال عاليّة الرّتبة (higher-order functions)، وهي دوال تستقبل دوالا أخرى، تُغيّرها، أو تُعيد دوال أخرى. وعلى العموم، يُمكن لأيّ كائن قابل للاستدعاء أن يُعامل مُعاملة الدّالة عند استخدام هذه الوحدة.
 
=== [[Python/operator|الوحدة <code>operator</code> في لغة بايثون]]===
تُقدّم مجموعة من الدوال الفعالّة سرعةً وأداءً، والتي تُماثل العوامل الأساسيّة في لغة بايثون.
 
=== [[Python/collections|الوحدة <code>collections</code> في لغة بايثون]]===
تتضمّن هذه الوحدة أنواع بيانات متخصّصة بالحاويات containers وتقدّم بدائل للحاويات الداخلية <nowiki/>[[Python/dict|<code>dict</code>]] و <nowiki/>[[Python/list|<code>list</code>]] و <nowiki/>[[Python/set|<code>set</code>]] و <nowiki/>[[Python/tuple|<code>tuple</code>]].
 
=== [[Python/collections.abc|الوحدة <code>collections.abc</code> في لغة بايثون]]===
تقدّم هذه الوحدة مجموعة من الأصناف الأساسية المجرّدة abstract base calsses (يرمز لها ABC اختصارًا) والتي يمكن استخدامها للتأكد ممّا إذا كان صنف معيّن يقدّم واجهة interface معينة، كأن يكون الصنف قابلًا للتقطيع hashable أو أنّه صنف ربط mapping.
 
=== [[Python/pprint|الوحدة <code>pprint</code> في لغة بايثون]]===
تتيح وحدة <code>pprint</code> إمكانية طباعة بنى البيانات في بايثون بصورة جميلة pretty-print بطريقة تسمح باستخدام هذه البيانات كمدخلات في مفسّر لغة بايثون.
 
=== [[Python/copy|الوحدة <code>copy</code> في لغة بايثون]]===
تقدّم هذه الوحدة مجموعة من عمليات النسخ السطحية والعميقة.
 
=== [[Python/types|الوحدة <code>types</code> في لغة بايثون]]===
تقدّم هذه الوحدة عددًا من الدوال المساعدة لإنشاء أنواع بيانات جديدة بصورة ديناميكية.
 
=== [[Python/weakref|الوحدة <code>weakref</code> في لغة بايثون]]===
تتيح الوحدة إنشاء إشارات ضعيفة weak references للكائنات.
 
=== [[Python/reprlib|الوحدة <code>reprlib</code> في لغة بايثون]]===
تقدّم الوحدة وسيلة لإنتاج تمثيلات للكائنات مع إمكانية تحديد حجم السلسلة النصية الناتجة.
 
=== [[Python/array|الوحدة <code>array</code> في لغة بايثون]]===
تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف والأعداد الصحيحة والأعداد ذات الفاصلة العائمة بشكل مضغوط.
 
=== [[Python/sqlite3|الوحدة <code>sqlite3</code> في لغة بايثون]]===
تقدّم هذه الوحدة واجهة برمجية للتعامل مع قواعد بيانات SQLite3.
 
=== [[Python/copyreg|الوحدة <code>copyreg</code> في لغة بايثون]]===
تقدّم الوحدة طريقة لتعريف دوال تستخدم أثناء سلسلة كائنات معيّنة في لغة بايثون. 
 
=== [[Python/marshal|الوحدة <code>marshal</code> في لغة بايثون]]===
تضمّ هذه الوحدة مجموعة من الدوال التي يمكنها قراءة وكتابة قيم بايثون بالصيغة الثنائية binary format.
 
=== [[Python/zlib|الوحدة <code>zlib</code> في لغة بايثون]]===
تتيح الدوال المتوفّرة في هذه الوحدة إجراء عمليات الضغط وفك الضغط على البيانات باستخدام مكتبة zlib.
 
=== [[Python/gzip|الوحدة <code>gzip</code> في لغة بايثون]]===
تقدّم هذه الوحدة واجهة بسيطة لضغط الملفات وفك ضغطها بنفس الأسلوب المتّبع في برنامجي gzip و gunzip في GNU. وتجري عملية ضغط البيانات بواسطة [[Python/zlib|وحدة <code>zlib</code>]].
 
=== [[Python/bz2|الوحدة <code>bz2</code> في لغة بايثون]]===
تقدّم هذه الوحدة واجهة متكاملة لضغط البيانات وفك الضغط عنها باستخدام خوارزمية الضغط bzip2.
 
=== [[Python/lzma|الوحدة <code>lzma</code> في لغة بايثون]] ===
تقدّم هذه الوحدة مجموعة من الأصناف والدوال المساعدة لإجراء عمليات ضغط البيانات وفك الضغط عنها باستخدام خوارزمية الضغط LZMA.
 
=== [[Python/zipfile|الوحدة <code>zipfile</code> في لغة بايثون]]===
تقدّم هذه الوحدة أدواة لإنشاء ملفات ZIP والقراءة منها والكتابة فيها وإلحاق الملفات بها وعرض محتوياتها. 
 
=== [[Python/tarfile|الوحدة <code>tarfile</code> في لغة بايثون]]===
تتيح وحدة tarfile قراءة ملف أرشيف من نوع tar والكتابة فيه إلى جانب ملفات الأرشيف التي تستخدم تقنية الضغط gzip و bz2 و lzma.
 
=== [[Python/csv|الوحدة <code>csv</code> في لغة بايثون]]===
تقدّم وحدة <code>csv</code> عددًا من الأصناف التي تساعد في قراءة البيانات المجدولة وكتابتها بصيغة CSV.
 
=== [[Python/configparser|الوحدة <code>configparser</code> في لغة بايثون]]===
تقدّم هذه الوحدة صنفًا يستخدم لغة إعدادات بسيطة تقدّم بنية مشابهة للبنية التي تقدّمها ملفات INI في نظام Microsoft Windows. ويمكن استخدام هذا الصنف لكتابة برامج وتطبيقات يمكن للمستخدمين تخصيصها بكل سهولة.
 
=== [[Python/webbrowser|الوحدة <code>webbrowser</code> في لغة بايثون]]===
تقدّم وحدة <code>webbrowser</code> واجهة متطوّرة تسمح بعرض مستندات الويب على المستخدمين.
 
=== [[Python/cgi|الوحدة <code>cgi</code> في لغة بايثون]]===
تقدّم هذه الوحدة عددًا من الأدوات التي تستخدم بواسطة سكربتات CGI المكتوبة في لغة Python.
 
=== [[Python/cgitb|الوحدة <code>cgitb</code> في لغة بايثون]] ===
تقدم وحدة <code>cgitb</code> أداة خاصة للتعامل مع الاستثناءات في سكربتات لغة Python.


=== [[Python/packages|الحزم packages]] ===
=== [[Python/wsgiref|الوحدة <code>wsgiref</code> في لغة بايثون]]===
تعدّ الحزم طريقة لهيكلة <nowiki/>[[Python/scopes-and-namespaces|مجالات أسماء]] الحزم في بايثون،  وتساعد في تجنب حدوث أي تضارب بين أسماء الوحدات في الحزم متعدّدة الوحدات [http://www.numpy.org/ مثل][http://www.numpy.org/ NumPy] أو مكتبة بايثون لمعالجة الصور [https://pillow.readthedocs.io/ Python Imaging Library].
تعدّ الوحدة <code>wsgiref</code> وسيلة لتطبيق معايير WSGI ويمكن استخدامها لإضافة دعم WSGI إلى مخدّمات الويب وأطر العمل البرمجية.


== المدخلات والمخرجات Inputs and Outputs ==
== المدخلات والمخرجات Inputs and Outputs ==


=== [[Python/formatting_output|تنسيق المخرجات]] ===
=== [[Python/formatting_output|تنسيق المخرجات]] ===
تقدّم بايثون عددًا من الطرائق التي تساعد في تنسيق مخرجات البرامج، فيمكن طباعة البيانات بصيغة سهلة القراءة، أو يمكن كتابة البيانات في ملف لاستخدامه في المستقبل. 
تقدّم لغة بايثون عددًا من الطرائق التي تساعد في تنسيق مخرجات البرامج، فيمكن طباعة البيانات بصيغة سهلة القراءة، أو يمكن كتابة البيانات في ملف لاستخدامه في المستقبل. 


=== [[Python/reading_writing_files|قراءة الملفات والكتابة فيها]] ===
=== [[Python/reading_writing_files|قراءة الملفات والكتابة فيها]] ===
تتيح بايثون قراءة الملفات والكتابة فيها بنمطين مختلفين هما النصي والثنائي.  
تتيح لغة بايثون قراءة الملفات والكتابة فيها بنمطين مختلفين هما النصي والثنائي.  


=== [[Python/saving_json|حفظ البيانات المهيكلة بصيغة json]] ===
=== [[Python/saving_json|حفظ البيانات المهيكلة بصيغة json]] ===
تتيح بايثون استخدام صيغة تبادل البيانات المعروفة JSON (اختصار JavaScript Object Notation)، باستخدام الوحدة القياسية <code>json</code> .
تتيح لغة بايثون استخدام صيغة تبادل البيانات المعروفة JSON (اختصار JavaScript Object Notation)، باستخدام الوحدة القياسية <code>json</code> .
 
== [[Python/datetime|الوقت والتاريخ]] ==
تقدّم وحدة <code>datetime</code> عددًا من الأصناف التي تعالج التاريخ والوقت بطرق مبسّطة وأخرى معقدة، وتدعم بايثون إجراء العمليات الحسابية على التواريخ والأوقات.


== [[Python/constants|الثوابت]] ==
== [[Python/constants|الثوابت]] ==
تقدم بايثون مجموعة من الثوابت، بعضها في <nowiki/>[[Python/scopes-and-namespaces|مجال الأسماء]] الداخلي، أما البعض الآخر فيضاف من قبل الوحدة <code>site</code> إلى <nowiki/>[[Python/interpreter|مفسّر بايثون]] التفاعلي.
تقدم لغة بايثون مجموعة من الثوابت، بعضها في <nowiki/>[[Python/scopes-and-namespaces|مجال الأسماء]] الداخلي، أما البعض الآخر فيضاف من قبل الوحدة <code>site</code> إلى <nowiki/>[[Python/interpreter|مفسّر بايثون]] التفاعلي.


== الأخطاء والاستثناءات ==
== الأخطاء والاستثناءات ==


=== [[Python/syntax_errors|أخطاء الصيغة]] ===
=== [[Python/syntax_errors|أخطاء الصيغة]] ===
قد تكون أخطاء الصيغة (Syntax errors) أو ما يعرف أيضًا بأخطاء الإعراب (Parsing errors) هي أكثر نوع من الأخطاء التي يواجهها المبتدئون عند تعلّم بايثون.
قد تكون أخطاء الصيغة (Syntax errors) أو ما يعرف أيضًا بأخطاء الإعراب (Parsing errors) هي أكثر نوع من الأخطاء التي يواجهها المبتدئون عند [https://academy.hsoub.com/python/ تعلم لغة بايثون].


=== [[Python/exceptions|الاستثناءات]] ===
=== [[Python/exceptions|الاستثناءات]] ===

المراجعة الحالية بتاريخ 10:11، 31 مايو 2023

بنية لغة بايثون

بيان للبنية العامة للغة بايثون وبعض الأمور العامة مثل التعليقات وتسمية المعرّفات وغيرها.

مفسر لغة بايثون

يستخدم مفسر لغة بايثون لمعالجة الشيفرات المكتوبة بها، وهو يقبل عددًا من الخيارات، ويمكن تشغيله في الوضع التفاعلي.

أنواع البيانات في لغة بايثون

القيمة المنطقية (boolean)

القيمتان المنطقيتان اللتان تدعمهما بايثون هما True و False وهما كائنان ثابتان (Constant objects) يعبران عن صحّة تعبير ما، فإمّا أن يكون صحيحًا True أو خطأً False.

الأعداد الصحيحة (int)

العدد الصحيح integer هو أي عدد موجب أو سالب لا يتضمن فاصلة عشرية، ويمكن تمثيله بالنظام العشري (decimal، الأساس 10) والست عشري (hexadecimal، الأساس 16) والثماني (octal، الأساس 8) والثنائي (binary، الأساس 2).

الأعداد العشرية (float)

الأعداد العشرية (ذات الفاصلة العائمة floating point) هي الأعداد التي تتضمن فاصلة عشرية أو علامة أسية

الأعداد العشرية (decimal)

تتيح وحدة decimal إجراء حسابات سريعة على الأعداد العشرية مع ضمان التقريب الصحيح.

الأعداد الكسرية (fraction)

تتيح وحدة fractions التعامل مع الأعداد الكسرية مثل (⅓) أو (4/18)  وإجراء العمليات الحسابية المختلفة عليها.

الأعداد المركبة (complex)

تتكوّن الأعداد المركبّة من جزأين حقيقي وتخيّلي وكلاهما من الأعداد العشرية ذات الفاصلة العائمة float، ويستخدم الحرفان 'j' أو 'J' للتعبير عن الأعداد المركبة.

السلاسل النصية (str)

السلسلة النصية هي تسلسل من الحروف وهي غير قابلة للتغيير (immutable).

الصفوف (tuples)

يتكوّن الصفّ من عدد من القيم المفصولة عن بعضها بفاصلة.

القوائم (lists)

قائمة من القيم (العناصر) المفصولة عن بعضها البعض بفواصل (,) ومحاطة بأقواس مربعة. يمكن للقوائم أن تتضمّن أنواعًا مختلفة، ولكن عادة ما تكون العناصر كلها من النوع نفسه.

المجموعات (set)

مجموعة من الكائنات غير المرتّبة وغير المكرّرة وغير القابلة للتعديل (immutable).

القواميس (dict)

القواميس هي مجاميع غير مرتّبة من أزواج (مفتاح: قيمة) (key: value).

البايتات (bytes)

البايتات هي تسلسلات لبايتات مفردة غير قابلة للتغيير (immutable)، وهي مشابهة إلى حدّ كبير للسلاسل النصية.

مصفوفات البايتات (bytesarray)

مصفوفات البايتات bytearray هي الكائنات القابلة للتغيير والتي تقابل كائنات البايتات bytes.

العمليات Operations

العمليات المنطقية (Boolean Operations)

تقدّم بايثون ثلاث عمليات منطقية هي or و and و not.

عمليات المقارنة (Comparison Operations)

تقدّم بايثون ثمان عمليات للمقارنة، وتمتلك جميعها نفس الأولوية (وهي أعلى من العمليات المنطقية).

العمليات العددية (Numeric Operations)

تدعم بايثون شأنها في ذلك شأن بقية لغات البرمجة جميع العمليات الحسابية المعروفة، وتدعم جميع الأنواع العددية (باستثناء الأعداد المركبة)

عمليات الأعداد الثنائية (Bitwise Operations)

يمكن إجراء عمليات الأعداد الثنائية Bitwise على الأعداد الصحيحة فقط.

عمليات التسلسلات (Sequence Operations)

تدعم بايثون مجموعة من العمليات الخاصة بالتسلسلات (القوائم، الصفوف،  السلاسل النصية، والبايتات ومصفوفات البايتات).

عوامل البايتات ومصفوفات البايتات (Byte and Bytesarray Operations)

تدعم كائنات البايتات ومصفوفات البايتات عمليات التسلسلات الشائعة، وتتوافق هذه الكائنات مع العوامل من النوع ذاته إضافة إلى أي كائن شبيه بالبايتات.

عمليات المجموعات (Sets operations)

تقدّم بايثون مجموعة من العمليات الخاصة بالمجموعات والمجموعات الجامدة.

بنى التحكم

If

تقدّم بايثون عبارة if للتحكم المشروط بتدفق الشيفرة.

for

عبارة for في بايثون تمرّ على عناصر أي تسلسل (قائمة أو سلسلة نصية) معتمدة في ذلك على ترتيب تلك العناصر في ذلك التسلسل.

while

تستمر عبارة while في العمل ما دام الشرط الذي تعمل على أساسه صحيحًا.

pass

لا تؤدي عبارة pass أي عمل على الإطلاق، ويمكن استخدام هذه العبارة عند الحاجة إلى استخدام عبارة معينة ولكن دون الحاجة إلى أداء أي وظيفة.

طرق استخدام الحلقات التكرارية

تقدّم بايثون مجموعة من الدوال والتوابع التي تسهّل عملية إنشاء الحلقات التكرارية والاستفادة منها بصورة فعّالة في القواميس والقوائم وغيرها.

الدوال

تعريف الدوال

تُعرَّف الدوال باستخدام الكلمة المفتاحية def يتبعها اسم الدالة ثم قائمة بالمعاملات محاطة بالأقواس. أما الكتلة الرئيسية للدالة فتبدأ في السطر التالي لسطر التعريف، ويجب أن تزاح بمقدار إزاحة واحدة.

معاملات الدوال

يمكن تعريف الدوال مع عدد غير محدّد من المعاملات.

تعابير lambda

يمكن إنشاء دوال لا تحمل أسماء باستخدام الكلمة المفتاحية lambda.

سلاسل التوثيق النصية

يمكن أن تكون العبارة الأولى في كتلة الدالة سلسلة نصّية، وتمثّل سلسلة التوثيق النصية الخاصة بتلك الدالة ويطلق عليها أيضًا تسمية docstring، ستخدم سلاسل التوثيق النصية لإنتاج توثيق عبر شبكة الإنترنت، أو تسمح للمستخدم بتصفح الشيفرة بصورة تفاعلية.

الأصناف

مقدمة

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

النطاقات ومجالات الأسماء

مجال الأسماء هو رابط بين الأسماء والكائنات، ومن الأمثلة على مجالات الأسماء: مجموعة الأسماء الداخلية، الأسماء العامة (global) في وحدة معينة، والأسماء المحلية (local) في بنية دالّة ما. أما النطاق فهو جزء من شيفرة بايثون يمكن فيه الوصول إلى مجال الأسماء بصورة مباشرة.

تعريف الأصناف

تستخدم الكلمة المفتاحية class لتعريف الأصناف الجديدة في بايثون.

الوراثة

تدعم بايثون شأنها في ذلك شأن أي لغة برمجية كائنية التوجه مفهوم الوراثة، وتدعم كذلك إعادة تعريف (override) التوابع الموروثة من الأصناف الأساسية إضافة إلى الوراثة المتعددة.

المتغيرات الخاصّة private variables

متغيرات الأصناف الخاصة (Private) والتي لا يمكن الوصول إليها من خارج الكائن غير موجودة في بايثون. ولكن يتفق معظم المبرمجين على أنّ الاسم المسبوق بشرطة سفلية (مثل: ‎_spam) يجب أن يُعامل كجزء غير عام من الواجهة البرمجية (سواء أكان ذلك الجزء دالة أو تابعًا أو خاصية). 

المكررات iterators

المكرّرات هي أساس عمل حلقات for التكرارية، ويمكن تخصيص عمل هذه الحلقات التكرارية عن طريق تعريف مكررات جديدة.

المولّدات generators

المولّدات هي أداة بسيطة وقوية لإنشاء المكرِّرات. تأخذ المولِّدات صيغة الدوال العادية ولكنّها تستخدم عبارة yield عند إعادة البيانات.

الوحدات modules

الوحدات

تقدّم بايثون طريقة لإضافة التعريفات في ملف مستقل واستخدامها في شيفرة مستقلّة أو في مفسّر بايثون التفاعلي. تسمى هذه الملفات بالوحدات Modules.

الدالة ()dir

تستخدم الدالة الداخلية dir()‎ لمعرفة الأسماء التي تعرّفها الوحدة، وتعيد هذه الداة قائمة مرتّبة من السلاسل النصية.

الحزم packages

تعدّ الحزم طريقة لهيكلة مجالات أسماء الحزم في بايثون،  وتساعد في تجنب حدوث أي تضارب بين أسماء الوحدات في الحزم متعدّدة الوحدات مثل: NumPy أو مكتبة بايثون لمعالجة الصور Python Imaging Library.

الوحدات القياسية في لغة بايثون

تقدّم بايثون مكتبة تضمّ مجموعة من الوحدات القياسية (standard modules) وبعضها مدمج مع مفسّر بايثون وتتيح الوصول إلى عمليات هي ليست في الأصل جزءًا من اللغة، ولكن الهدف منها هو إما زيادة كفاءة عمل المفسّر أو لإتاحة الوصول إلى العمليات الأساسية في نظام التشغير مثل استدعاءات النظام (system calls).

الوحدة re في لغة بايثون

تقّدم الوحدة مجموعة من العمليات الخاصة بمطابقة التعابير النمطية Regular Expressions وهي مشابهة إلى حدّ كبير للعمليات الموجودة في لغة Perl.

الوحدة string في لغة بايثون

تضمّ الوحدة عددًا من الثوابت والأصناف المفيدة في معالجة السلاسل النصية.

الوحدة datetime في لغة بايثون

تقدّم هذه الوحدة عددًا من الأصناف التي تعالج التاريخ والوقت بطرق مبسّطة وأخرى معقدة، وتدعم بايثون إجراء العمليات الحسابية على التواريخ والأوقات.

الوحدة calendar في لغة بايثون

تتيح هذه الوحدة الحصول على تقاويم مشابهة لمخرجات البرنامج cal في أنظمة يونكس، إلى جانب أنّها تقدّم عددًا من التوابع المفيدة والخاصة بالتقاويم.

الوحدة bisect في لغة بايثون

تقدّم هذه الوحدة وسيلة للتعامل مع القوائم وفرزها بصورة تلقائية، وبذلك يمكن تجنب إعادة فرز القائمة بعد كل عملية إدراج للعناصر فيها. 

الوحدة heapq في لغة بايثون

تقدّم هذه الوحدة وسيلة لاستخدام خوارزمية طابور الكومة heap queue والتي تعرف كذلك بخوارزمية طابور الأولوية priority queue.

الوحدة enum في لغة بايثون

enumeration هو مجموعة من الأسماء الرمزية (العناصر) المرتبطة بقيم ثابتة وفريدة. يمكن مقارنة عناصر enumeration عن طريق هويتها، ويمكن المرور على عناصره بواسطة حلقة تكرارية.

الوحدة itertools‎ في لغة بايثون

تقّدم مجموعة من الأدوات المُساعدة على بناء مُكرّرات مُشابهة لتلك المتوفّرة في لغات مثل APL، وHaskell وSML. بُني كلّ منها بطريقة تُناسب لغة بايثون.

الوحدة functools‎ في لغة بايثون

تُقدّم دوال عاليّة الرّتبة (higher-order functions)، وهي دوال تستقبل دوالا أخرى، تُغيّرها، أو تُعيد دوال أخرى. وعلى العموم، يُمكن لأيّ كائن قابل للاستدعاء أن يُعامل مُعاملة الدّالة عند استخدام هذه الوحدة.

الوحدة operator في لغة بايثون

تُقدّم مجموعة من الدوال الفعالّة سرعةً وأداءً، والتي تُماثل العوامل الأساسيّة في لغة بايثون.

الوحدة collections في لغة بايثون

تتضمّن هذه الوحدة أنواع بيانات متخصّصة بالحاويات containers وتقدّم بدائل للحاويات الداخلية dict و list و set و tuple.

الوحدة collections.abc في لغة بايثون

تقدّم هذه الوحدة مجموعة من الأصناف الأساسية المجرّدة abstract base calsses (يرمز لها ABC اختصارًا) والتي يمكن استخدامها للتأكد ممّا إذا كان صنف معيّن يقدّم واجهة interface معينة، كأن يكون الصنف قابلًا للتقطيع hashable أو أنّه صنف ربط mapping.

الوحدة pprint في لغة بايثون

تتيح وحدة pprint إمكانية طباعة بنى البيانات في بايثون بصورة جميلة pretty-print بطريقة تسمح باستخدام هذه البيانات كمدخلات في مفسّر لغة بايثون.

الوحدة copy في لغة بايثون

تقدّم هذه الوحدة مجموعة من عمليات النسخ السطحية والعميقة.

الوحدة types في لغة بايثون

تقدّم هذه الوحدة عددًا من الدوال المساعدة لإنشاء أنواع بيانات جديدة بصورة ديناميكية.

الوحدة weakref في لغة بايثون

تتيح الوحدة إنشاء إشارات ضعيفة weak references للكائنات.

الوحدة reprlib في لغة بايثون

تقدّم الوحدة وسيلة لإنتاج تمثيلات للكائنات مع إمكانية تحديد حجم السلسلة النصية الناتجة.

الوحدة array في لغة بايثون

تعرف هذه الوحدة كائنًا يمكن عن طريقه تمثيل مصفوفة من القيم الأساسية مثل الحروف والأعداد الصحيحة والأعداد ذات الفاصلة العائمة بشكل مضغوط.

الوحدة sqlite3 في لغة بايثون

تقدّم هذه الوحدة واجهة برمجية للتعامل مع قواعد بيانات SQLite3.

الوحدة copyreg في لغة بايثون

تقدّم الوحدة طريقة لتعريف دوال تستخدم أثناء سلسلة كائنات معيّنة في لغة بايثون. 

الوحدة marshal في لغة بايثون

تضمّ هذه الوحدة مجموعة من الدوال التي يمكنها قراءة وكتابة قيم بايثون بالصيغة الثنائية binary format.

الوحدة zlib في لغة بايثون

تتيح الدوال المتوفّرة في هذه الوحدة إجراء عمليات الضغط وفك الضغط على البيانات باستخدام مكتبة zlib.

الوحدة gzip في لغة بايثون

تقدّم هذه الوحدة واجهة بسيطة لضغط الملفات وفك ضغطها بنفس الأسلوب المتّبع في برنامجي gzip و gunzip في GNU. وتجري عملية ضغط البيانات بواسطة وحدة zlib.

الوحدة bz2 في لغة بايثون

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

الوحدة lzma في لغة بايثون

تقدّم هذه الوحدة مجموعة من الأصناف والدوال المساعدة لإجراء عمليات ضغط البيانات وفك الضغط عنها باستخدام خوارزمية الضغط LZMA.

الوحدة zipfile في لغة بايثون

تقدّم هذه الوحدة أدواة لإنشاء ملفات ZIP والقراءة منها والكتابة فيها وإلحاق الملفات بها وعرض محتوياتها. 

الوحدة tarfile في لغة بايثون

تتيح وحدة tarfile قراءة ملف أرشيف من نوع tar والكتابة فيه إلى جانب ملفات الأرشيف التي تستخدم تقنية الضغط gzip و bz2 و lzma.

الوحدة csv في لغة بايثون

تقدّم وحدة csv عددًا من الأصناف التي تساعد في قراءة البيانات المجدولة وكتابتها بصيغة CSV.

الوحدة configparser في لغة بايثون

تقدّم هذه الوحدة صنفًا يستخدم لغة إعدادات بسيطة تقدّم بنية مشابهة للبنية التي تقدّمها ملفات INI في نظام Microsoft Windows. ويمكن استخدام هذا الصنف لكتابة برامج وتطبيقات يمكن للمستخدمين تخصيصها بكل سهولة.

الوحدة webbrowser في لغة بايثون

تقدّم وحدة webbrowser واجهة متطوّرة تسمح بعرض مستندات الويب على المستخدمين.

الوحدة cgi في لغة بايثون

تقدّم هذه الوحدة عددًا من الأدوات التي تستخدم بواسطة سكربتات CGI المكتوبة في لغة Python.

الوحدة cgitb في لغة بايثون

تقدم وحدة cgitb أداة خاصة للتعامل مع الاستثناءات في سكربتات لغة Python.

الوحدة wsgiref في لغة بايثون

تعدّ الوحدة wsgiref وسيلة لتطبيق معايير WSGI ويمكن استخدامها لإضافة دعم WSGI إلى مخدّمات الويب وأطر العمل البرمجية.

المدخلات والمخرجات Inputs and Outputs

تنسيق المخرجات

تقدّم لغة بايثون عددًا من الطرائق التي تساعد في تنسيق مخرجات البرامج، فيمكن طباعة البيانات بصيغة سهلة القراءة، أو يمكن كتابة البيانات في ملف لاستخدامه في المستقبل. 

قراءة الملفات والكتابة فيها

تتيح لغة بايثون قراءة الملفات والكتابة فيها بنمطين مختلفين هما النصي والثنائي.

حفظ البيانات المهيكلة بصيغة json

تتيح لغة بايثون استخدام صيغة تبادل البيانات المعروفة JSON (اختصار JavaScript Object Notation)، باستخدام الوحدة القياسية json .

الثوابت

تقدم لغة بايثون مجموعة من الثوابت، بعضها في مجال الأسماء الداخلي، أما البعض الآخر فيضاف من قبل الوحدة site إلى مفسّر بايثون التفاعلي.

الأخطاء والاستثناءات

أخطاء الصيغة

قد تكون أخطاء الصيغة (Syntax errors) أو ما يعرف أيضًا بأخطاء الإعراب (Parsing errors) هي أكثر نوع من الأخطاء التي يواجهها المبتدئون عند تعلم لغة بايثون.

الاستثناءات

قد تكون التعابير البرمجية في الشيفرة صحيحة من ناحية الصيغة، إلا أنّها قد تتسبب في حدوث أخطاء عند محاولة تنفيذها. تسمّى الأخطاء المُكتشفة أثناء تنفيذ الشيفرة بالاستثناءات (exceptions) وقد تتسبب في إيقاف عمل البرنامج (fatal) في بعض الأحيان.

الاستثناءات المعرفة من طرف المستخدم

يمكن للمستخدم إنشاء صنف استثناء جديد (راجع قسم الأصناف في بايثون للمزيد من المعلومات)، ويجب أن تكون الاستثناءات مشتقّة من الصنف Exception سواء أكان ذلك بصورة مباشرة أو غير مباشرة.

تعريف أحداث التنظيف clean-up actions

تمتلك عبارة try جزءًا اختياريًا آخر، والهدف منه هو تعريف أحداث تنظيف (clean-up actions) يجب تنفيذها في جميع الظروف، وتعرّف بعض الكائنات أحداث تنظيف قياسية يجري تنفيذها عند انتفاء الحاجة لذلك الكائن، وبغض النظر عمّا إذا كانت العملية التي تستخدم ذلك الكائن ناجحة أم فاشلة.

تنسيق الشيفرة البرمجية

تتّبع معظم المشاريع المكتوبة بلغة بايثون دليل التنسيق PEP8 والذي يشجّع على اعتماد تنسيق يمتاز بالمقروئية العالية والمظهر الجميل.