المتغيرات في بايثون وكيفية التعامل مع التراكيب – سلسلة بايثونات لتعلم لغة البايثون

المتغيرات في بايثون وكيفية التعامل مع التراكيب - سلسلة بايثونات لتعلم لغة البايثون

اساسيات البرمجة بلغة بايثون :

اساسيات البرمجة بلغة بايثون : أهلًا وسهلًا بك عزيزي القارئ في ثالث مقالات سلسة بايثونات لتعلم لغة البايثون المُوجهة بشكل أساسي لكل مبتدئ في تعلم البايثون والمهتمين بشكل عام. هذا المقال بعنوان المتغيرات في بايثون وكيفية التعامل مع التراكيب، وفيه نُوضح كيفية تعريف المتغيرات في بايثون وكيفية استخدام التراكيب الأربعة الأساسية في بايثون. للإطلاع على كافة مقالات السلسلة من خلال الروابط التالية:

  1. لغة بايثون للمبتدئين – سلسلة بايثونات لتعلم البايثون والانطلاق في عالم البرمجة.
  2. النصوص في بايثون.
  3. المتغيرات والتراكيب في بايثون.
  4. جُمل التحكم في بايثون.
  5. الدوال والوحدات بايثون.
  6. مُعالجة الأخطاء في بايثون.
  7. البرمجة الكائنية في بايثون.

دالة الطباعة في بايثون

قبل البدء بموضوع المتغيرات في بايثون وما هي التراكيب التي يُمكننا التعامل معها، من المهم التعرف على دالة الطباعة في بايثون والتي من خلالها يُمكننا طباعة المخرجات على مُفسر البايثون. البايثون لديها وظيفة خاصة للطباعة، ونقصد بالطباعة هنا أي الإخراج على شاشة الأوامر أو الطرفية وتسمى print:

[pastacode lang=”python” manual=”print(%22I’m%20Python.%20Nice%20to%20meet%20you!%22)%C2%A0%20%23%20%3D%3E%20I’m%20Python.%20Nice%20to%20meet%20you!” message=”” highlight=”” provider=”manual”/]

يتم طباعة سطر جديد تلقائيا عند استخدام الوظيفة print. يُمكننا استخدام المُعطى end لتغيير هذا الأمر وتحديد النص أو الرمز الذي نريده بدلا من السطر الجديد:

[pastacode lang=”python” manual=”print(%22Hello%2C%20World%22%2C%20end%3D%22!%22)%C2%A0%20%23%20%3D%3E%20Hello%2C%20World!” message=”” highlight=”” provider=”manual”/]

نستخدم الدالة input للإدخال وللحصول على مدخلات من شاشة الأوامر:

[pastacode lang=”python” manual=”input_string_var%20%3D%20input(%22Enter%20some%20data%3A%20%22)%20%23%20Returns%20the%20data%20as%20a%20string” message=”” highlight=”” provider=”manual”/]

ملاحظة/ في النُسخ القديمة من البايثون، الوظيفة input كانت تُسمى raw_input.

تعريف المتغيرات في بايثون

لا يوجد في البايثون تعريفات، بمعنى أنه لا نُحدد نوع المتغير، ويتم إعطاء المتغير قيمة بشكل مباشر. الطريقة المتعارف عليها في تسمية المتغيرات هي الأحرف الصغيرة مع التسطير السفلي:

[pastacode lang=”python” manual=”some_var%20%3D%205%0A%0Asome_var%C2%A0%20%23%20%3D%3E%205″ message=”” highlight=”” provider=”manual”/]

محاولة استخدام متغير لم يأخذ قيمة مسبقاً ينتج عنه خطأ، سنشرح كيفية معالجة الأخطاء في مقالات قادمة.

[pastacode lang=”python” manual=”some_unknown_var%C2%A0%20%23%20Raises%20a%20NameError” message=”” highlight=”” provider=”manual”/]

التراكيب في بايثون

يُوجد في البايثون أربعة تراكيب أساسية، تتمثل في:

  1. القوائم
  2. Tuple (لم نجد ترجمة عربية مُتفق عليها).
  3. المجموعات
  4. القواميس

سنتناول كل واحد منهم بالشرح كما يلي:

القوائم في بايثون

القوائم تشبه المصفوفات في لغات البرمجة الأخرى، ولها استخدامات أساسية وعديدة في لغة البايثون والمكتبات المعيارية فيها:

[pastacode lang=”python” manual=”li%20%3D%20%5B%5D%20%23%3E%20empty%20list%0A%0Aother_li%20%3D%20%5B4%2C%205%2C%206%5D” message=”” highlight=”” provider=”manual”/]

نستخدم الدالة append لإضافة عناصر في نهاية القائمة:

[pastacode lang=”python” manual=”li.append(1)%C2%A0%C2%A0%C2%A0%20%23%20li%20is%20now%20%5B1%5D%0A%0Ali.append(2)%C2%A0%C2%A0%C2%A0%20%23%20li%20is%20now%20%5B1%2C%202%5D%0A%0Ali.append(4)%C2%A0%C2%A0%C2%A0%20%23%20li%20is%20now%20%5B1%2C%202%2C%204%5D%0A%0Ali.append(3)%C2%A0%C2%A0%C2%A0%20%23%20li%20is%20now%20%5B1%2C%202%2C%204%2C%203%5D” message=”” highlight=”” provider=”manual”/]

الدالة pop تُستخدم لحذف العناصر من اخر القائمة:

[pastacode lang=”python” manual=”li.pop()%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%203%20and%20li%20is%20now%20%5B1%2C%202%2C%204%5D%0A%0Ali.append(3)%C2%A0%C2%A0%C2%A0%20%23%20li%20is%20now%20%5B1%2C%202%2C%204%2C%203%5D%20again.” message=”” highlight=”” provider=”manual”/]

يُمكننا التعامل مع القائمة كما نتعامل مع المصفوفة من حيث الوصول لعناصرها وذلك عبر استخدام الفهرس index:

[pastacode lang=”python” manual=”li%5B0%5D%C2%A0%C2%A0%20%23%20%3D%3E%201%0A%0Ali%5B-1%5D%C2%A0%20%23%20%3D%3E%203″ message=”” highlight=”” provider=”manual”/]

اذا مررنا قيمة فهرس خارج حدود القائمة سينتج عن ذلك خطأ من نوع IndexError:

[pastacode lang=”python” manual=”li%5B4%5D%C2%A0%20%23%20Raises%20an%20IndexError” message=”” highlight=”” provider=”manual”/]

يُمكننا استخدام نطاق range للحصول على جزء أكبر من القائمة بحيث نحدد فهرس البداية وفهرس النهاية كما في المثال التالي:

[pastacode lang=”python” manual=”li%5B1%3A3%5D%C2%A0%C2%A0%20%23%20%3D%3E%20%5B2%2C%204%5D” message=”” highlight=”” provider=”manual”/]

ملاحظة/ العنصر الذي يقع في فهرس النهاية غير مشمول في القيمة المرجعة، حيث يُعتبر النمط المستخدم هنا هو نمط نطاق مغلق-مفتوح.

في حال عدم استخدام فهرس النهاية ستكون النتيجة المُرجعة هي ابتداءً من فهرس البداية وحتى آخر عنصر في القائمة:

[pastacode lang=”python” manual=”li%5B2%3A%5D%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20%5B4%2C%203%5D” message=”” highlight=”” provider=”manual”/]

في حال عدم استخدام فهرس البداية ستكون النتيجة المُرجعة من أول عنصر في القائمة وحتى فهرس النهاية:

[pastacode lang=”python” manual=”li%5B%3A3%5D%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20%5B1%2C%202%2C%204%5D” message=”” highlight=”” provider=”manual”/]

يُمكننا تحديد ما يُسمى بـ step في النطاق الذي نحدده، وهي تُمثل عدد خطوات التجاوز. فمثلًا، لاختيار عنصر كل خطوتين ابتداء من العنصر الأول في القائمة نكتب ما يلي:

[pastacode lang=”python” manual=”li%5B%3A%3A2%5D%C2%A0%C2%A0%20%23%20%3D%3E%5B1%2C%204%5D” message=”” highlight=”” provider=”manual”/]

لارجاع كامل المصفوفة بطريقة عكسية وبسطر واحد:

[pastacode lang=”python” manual=”li%5B%3A%3A-1%5D%C2%A0%20%23%20%3D%3E%20%5B3%2C%204%2C%202%2C%201%5D” message=”” highlight=”” provider=”manual”/]

القاعدة العامة للاستعلامات السابقة في القوائم هي كالتالي:

[pastacode lang=”python” manual=”%23%20li%5Bstart%3Aend%3Astep%5D” message=”” highlight=”” provider=”manual”/]

النسخ العميق (Deep Copy)

[pastacode lang=”python” manual=”li2%20%3D%20li%5B%3A%5D%C2%A0%20%23%20%3D%3E%20li2%20%3D%20%5B1%2C%202%2C%204%2C%203%5D%0A%0Ali2%20is%20li%20%23%3E%20False” message=”” highlight=”” provider=”manual”/]

في حال قمنا بفحص المساواة باستخدام عملية is كالتالي: (li2 is li) ستكون النتيجة False.

لحذف عنصر من القائمة موجود في فهرس معين نستخدم الدالة del:

[pastacode lang=”python” manual=”del%20li%5B2%5D%C2%A0%20%23%20li%20is%20now%20%5B1%2C%202%2C%203%5D” message=”” highlight=”” provider=”manual”/]

لحذف أول عنصر في القائمة يساوي القيمة المدخلة في وظيفة remove ونُمرر لها قيمة العنصر المُراد حذفه:

[pastacode lang=”python” manual=”li.remove(2)%C2%A0%20%23%20li%20is%20now%20%5B1%2C%203%5D” message=”” highlight=”” provider=”manual”/]

li.remove(2)  # ValueError لأن القيمة غير موجودة

لإضافة عنصر جديد في مكان معين من القائمة نستخدم الدالة insert ونمرر لها فهرس العنصر الجديد:

[pastacode lang=”python” manual=”li.insert(1%2C%202)%C2%A0%20%23%20li%20is%20now%20%5B1%2C%202%2C%203%5D%20again” message=”” highlight=”” provider=”manual”/]

للحصول على فهرس أول عنصر في القائمة يساوي القيمة المعطاة نستخدم الدالة index:

[pastacode lang=”python” manual=”li.index(2)%C2%A0%20%23%20%3D%3E%201″ message=”” highlight=”” provider=”manual”/]

li.index(4)  # ValueError لأن القيمة غير موجودة

يُمكننا إضافة قائمة بداخل قائمة أخرى وإرجاع النتيجة كقائمة جديدة وذلك عن طريق استخدام عملية الجمع + كما يلي:

[pastacode lang=”python” manual=”li%20%2B%20other_li%C2%A0%20%23%20%3D%3E%20%5B1%2C%202%2C%203%2C%204%2C%205%2C%206%5D” message=”” highlight=”” provider=”manual”/]

يُمكن تنفيذ نفس الأمر عن طريق استخدام الدالة extend والتي تعمل على تمديد قائمة وإضافة قائمة إليها:

[pastacode lang=”python” manual=”li.extend(other_li)%C2%A0%20%23%20Now%20li%20is%20%5B1%2C%202%2C%203%2C%204%2C%205%2C%206%5D” message=”” highlight=”” provider=”manual”/]

قد نحتاج التأكد من وجود عنصر معين في قائمة ما، لذلك يُمكننا الاستعانة بالعملية المنطقية in التي تعمل على فحص وجود قيمة في القائمة:

[pastacode lang=”python” manual=”1%20in%20li%C2%A0%20%23%20%3D%3E%20True” message=”” highlight=”” provider=”manual”/]

كما ذكرنا في درس التعامل مع النصوص في بايثون، يُمكننا ايضا استخدام الدالة len للحصول على حجم القائمة (عدد العناصر التي بها):

[pastacode lang=”python” manual=”len(li)%C2%A0%20%23%20%3D%3E%206″ message=”” highlight=”” provider=”manual”/]

Tuple

نوع البيانات Tuple يُشبه القائمة ولكنه غير قابل للتعديل (ثابتة-immutable):

[pastacode lang=”python” manual=”tup%20%3D%20(1%2C%202%2C%203)%0A%0Atup%5B0%5D%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%201%0A%0Atup%5B0%5D%20%3D%203%C2%A0%20%23%20Raises%20a%20TypeError” message=”” highlight=”” provider=”manual”/]

لاحظ أنه في حالة وجود عنصر واحد في tuple لابد من وضع فاصلة عادية بعد العنصر، أما في حالة وجود أكثر من عنصر فتصبح الفاصلة الأخيرة إضافية:

[pastacode lang=”python” manual=”type((1))%C2%A0%C2%A0%20%23%20%3D%3E%20%3Cclass%20’int’%3E%0A%0Atype((1%2C))%C2%A0%20%23%20%3D%3E%20%3Cclass%20’tuple’%3E%0A%0Atype(())%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20%3Cclass%20’tuple’%3E” message=”” highlight=”” provider=”manual”/]

يُمكننا تنفيذ أغلب عمليات القوائم على Tuples:

[pastacode lang=”python” manual=”len(tup)%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%203%0A%0Atup%20%2B%20(4%2C%205%2C%206)%C2%A0%20%23%20%3D%3E%20(1%2C%202%2C%203%2C%204%2C%205%2C%206)%0A%0Atup%5B%3A2%5D%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20(1%2C%202)%0A%0A2%20in%20tup%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20True” message=”” highlight=”” provider=”manual”/]

يُمكن تفريغ unpacking محتويات Tuples وكذلك القوائم في متغيرات كما في الأمثلة التالية:

[pastacode lang=”python” manual=”a%2C%20b%2C%20c%20%3D%20(1%2C%202%2C%203)%C2%A0%20%23%20a%20%3D%201%2C%20b%20%3D%202%2C%20c%20%3D%203%0A%0Aa%2C%20*b%2C%20c%20%3D%20(1%2C%202%2C%203%2C%204)%C2%A0%20%23%20a%20%3D%201%2C%20b%20%3D%20%5B2%2C%203%5D%2C%20c%20%3D%204″ message=”” highlight=”” provider=”manual”/]

من خلال tuple يُمكننا تبديل قيم المتغيرات بطريقة سهلة وسريعة:

[pastacode lang=”python” manual=”e%2C%20d%20%3D%20d%2C%20e%C2%A0%20%23%20d%20%3D%205%2C%20e%20%3D%204″ message=”” highlight=”” provider=”manual”/]

القواميس

القواميس هي نوع بيانات في البايثون يُشبه الهاش hash في لغات برمجة أخرى، وهي عبارة عن سلسلة من العناصر وكل عنصر عبارة عن مفتاح وقيمة key & value. يُمكن اعتبار المفاتيح مؤشرات بحيث كل مفتاح يؤشر إلى قيمة خاصة به. لتعريف قاموس فارغ:

[pastacode lang=”python” manual=”empty_dict%20%3D%20%7B%7D” message=”” highlight=”” provider=”manual”/]

يُمكننا تعريف قاموس بقيم مسبقة:

[pastacode lang=”python” manual=”filled_dict%20%3D%20%7B%22one%22%3A%201%2C%20%22two%22%3A%202%2C%20%22three%22%3A%203%7D” message=”” highlight=”” provider=”manual”/]

لاحظ أن المفاتيح في القواميس لابد أن يكون نوع بياناتها ثابت (immutable) وذلك لضمان الحصول على مفتاح ثابت (لا تتغير قيمته).

أنواع البيانات الثابتة والتي من الممكن استخدامها هي int , float, string, tuple.

[pastacode lang=”python” manual=”invalid_dict%20%3D%20%7B%5B1%2C2%2C3%5D%3A%20%22123%22%7D%C2%A0%20%23%20%3D%3E%20Raises%20a%20TypeError%3A%20unhashable%20type%3A%20’list’%0A%0Avalid_dict%20%3D%20%7B(1%2C2%2C3)%3A%5B1%2C2%2C3%5D%7D%C2%A0%C2%A0%20%23%20Values%20can%20be%20of%20any%20type%2C%20however.” message=”” highlight=”” provider=”manual”/]

للوصول لقيمة مُرتبطة بمفتاح معين في القاموس نستخدم الأقواس المعكوفة ونُمرر لها المفتاح كما يلي:

[pastacode lang=”python” manual=”filled_dict%5B%22one%22%5D%C2%A0%20%23%20%3D%3E%201″ message=”” highlight=”” provider=”manual”/]

نستخدم الدالة keys للحصول على مفاتيح القاموس على شكل قائمة (الترتيب في القواميس غير ثابت):

[pastacode lang=”python” manual=”list(filled_dict.keys())%C2%A0%20%23%20%3D%3E%20%5B%22three%22%2C%20%22two%22%2C%20%22one%22%5D” message=”” highlight=”” provider=”manual”/]

نستخدم الدالة vlaues للحصول على قيم القاموس على شكل قائمة:

[pastacode lang=”python” manual=”list(filled_dict.values())%C2%A0%20%23%20%3D%3E%20%5B3%2C%202%2C%201%5D” message=”” highlight=”” provider=”manual”/]

للتأكد من وجود مفتاح قاموس معين:

[pastacode lang=”python” manual=”%22one%22%20in%20filled_dict%C2%A0%20%23%20%3D%3E%20True%0A%0A1%20in%20filled_dict%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20False” message=”” highlight=”” provider=”manual”/]

في حالة استخدام مفتاح غير موجود للبحث في قاموس، فإن ذلك ينتج خطأ:

[pastacode lang=”python” manual=”filled_dict%5B%22four%22%5D%C2%A0%20%23%20KeyError” message=”” highlight=”” provider=”manual”/]

لتجنب ظهور خطأ KeyError يُمكننا الاعتماد على وظيفة get، حيث تُرجع قيمة فارغة عندما لا يكون المفتاح المُمرر لها موجودًا في القاموس:

[pastacode lang=”python” manual=”filled_dict.get(%22one%22)%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%201%0A%0Afilled_dict.get(%22four%22)%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%3D%3E%20None” message=”” highlight=”” provider=”manual”/]

تدعم وظيفة get إعادة قيمة تلقائية في حالة عدم وجود المفتاح:

[pastacode lang=”python” manual=”filled_dict.get(%22one%22%2C%204)%C2%A0%C2%A0%20%23%20%3D%3E%201%0A%0Afilled_dict.get(%22four%22%2C%204)%C2%A0%20%23%20%3D%3E%204″ message=”” highlight=”” provider=”manual”/]

تقوم وظيفة setdefault بالإضافة على القاموس في حالة عدم وجود المفتاح المعطى:

[pastacode lang=”python” manual=”filled_dict.setdefault(%22five%22%2C%205)%C2%A0%20%23%20filled_dict%5B%22five%22%5D%20is%20set%20to%205%0A%0Afilled_dict.setdefault(%22five%22%2C%206)%C2%A0%20%23%20filled_dict%5B%22five%22%5D%20is%20still%205″ message=”” highlight=”” provider=”manual”/]

للإضافة على القاموس:

[pastacode lang=”python” manual=”filled_dict.update(%7B%22four%22%3A4%7D)%C2%A0%20%23%20%3D%3E%20%7B%22one%22%3A%201%2C%20%22two%22%3A%202%2C%20%22three%22%3A%203%2C%20%22four%22%3A%204%7D%0A%0Afilled_dict%5B%22four%22%5D%20%3D%204%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%C2%A0%20%23%20%D8%B7%D8%B1%D9%8A%D9%82%D8%A9%20%D8%A3%D8%AE%D8%B1%D9%89″ message=”” highlight=”” provider=”manual”/]

لحذف المفتاح من القاموس يُمكننا استخدام الدالة del:

[pastacode lang=”python” manual=”del%20filled_dict%5B%22one%22%5D%C2%A0%20%23%20Removes%20the%20key%20%22one%22%20from%20filled%20dict” message=”” highlight=”” provider=”manual”/]

المجموعات

لتعريف مجموعة فارغة نستخدم الباني الخاص بالمجموعات كما يلي:

[pastacode lang=”python” manual=”empty_set%20%3D%20set()%0A%0Asome_set%20%3D%20%7B1%2C%201%2C%202%2C%202%2C%203%2C%204%7D%C2%A0%20%23%20some_set%20is%20now%20%7B1%2C%202%2C%203%2C%204%7D” message=”” highlight=”” provider=”manual”/]

نوع البيانات الخاص بعناصر المجموعات لابد أن يكون ثابتة immutable وهذا يعني أنه لا يُمكن استخدام عناصر من نوع القائمة في المجموعات:

[pastacode lang=”python” manual=”invalid_set%20%3D%20%7B%5B1%5D%2C%201%7D%C2%A0%20%23%20%3D%3E%20Raises%20a%20TypeError%3A%20unhashable%20type%3A%20’list’%0A%0Avalid_set%20%3D%20%7B(1%2C)%2C%201%7D” message=”” highlight=”” provider=”manual”/]

للإضافة على المجموعة نستخدم الدالة add:

[pastacode lang=”python” manual=”filled_set.add(5)%C2%A0%20%23%20filled_set%20is%20now%20%7B1%2C%202%2C%203%2C%204%2C%205%7D” message=”” highlight=”” provider=”manual”/]

إجراء عملية التقاطع بين مجموعتين نستخدم العملية & :

[pastacode lang=”python” manual=”other_set%20%3D%20%7B3%2C%204%2C%205%2C%206%7D%0A%0Afilled_set%20%26%20other_set%C2%A0%20%23%20%3D%3E%20%7B3%2C%204%2C%205%7D” message=”” highlight=”” provider=”manual”/]

إجراء عملية الاتحاد بين مجموعتين نستخدم العملية | :

[pastacode lang=”python” manual=”filled_set%20%7C%20other_set%C2%A0%20%23%20%3D%3E%20%7B1%2C%202%2C%203%2C%204%2C%205%2C%206%7D” message=”” highlight=”” provider=”manual”/]

إجراء عملية الطرح بين مجموعتين:

[pastacode lang=”python” manual=”%7B1%2C%202%2C%203%2C%204%7D%20-%20%7B2%2C%203%2C%205%7D%C2%A0%20%23%20%3D%3E%20%7B1%2C%204%7D” message=”” highlight=”” provider=”manual”/]

لإجراء عملية فرق التماثل بين مجموعتين:

[pastacode lang=”python” manual=”%7B1%2C%202%2C%203%2C%204%7D%20%5E%20%7B2%2C%203%2C%205%7D%C2%A0%20%23%20%3D%3E%20%7B1%2C%204%2C%205%7D” message=”” highlight=”” provider=”manual”/]

لفحص إذا كانت المجموعة على الشمال هي مجموعة تحتوي المجموعة على اليمين أم لا:

[pastacode lang=”python” manual=”%7B1%2C%202%7D%20%3E%3D%20%7B1%2C%202%2C%203%7D%20%23%20%3D%3E%20False” message=”” highlight=”” provider=”manual”/]

عكس المثال السابق:

[pastacode lang=”python” manual=”%7B1%2C%202%7D%20%3C%3D%20%7B1%2C%202%2C%203%7D%20%23%20%3D%3E%20True” message=”” highlight=”” provider=”manual”/]

فحص وجود قيمة في مجموعة:

[pastacode lang=”python” manual=”2%20in%20filled_set%C2%A0%C2%A0%20%23%20%3D%3E%20True%0A%0A10%20in%20filled_set%C2%A0%20%23%20%3D%3E%20False” message=”” highlight=”” provider=”manual”/]

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

مقالات مشابهة

  • 7 طرق عليك تعلمها لتحسين اختبار البرمجيات

    7 طرق عليك تعلمها لتحسين اختبار البرمجيات

    هل تبحث عن طرق لتحسين اختبار البرمجيات وجعل تلك العملية أكثر كفاءةً وسرعةً مما
    ابراهيم البحيصي
    By ابراهيم البحيصي
    تعرف على المزيد
  • التعامل مع دوال بايثون - بايثونات

    المزخرفات في بايثون – كيف نتعامل مع دوال بايثون بحُرية أكثر

    المزخرفات في بايثون أو باللغة الانجليزية Decorators هي أحد أقوى وأجمل خصائص لغة البرمجة
    ابراهيم البحيصي
    By ابراهيم البحيصي
    تعرف على المزيد
  • كتابة كود بايثون اون لاين بطريقة سليمة - بايثونات

    البرمجة البايثونية – كيف تكتب شيفرة برمجية بالبايثون بطريقة سليمة

    البرمجة بطريقة بايثونية Pythonic Way هو مصطلح يُشير إلى طريقة كتابة الشيفرة البرمجية بالبايثون
    ابراهيم البحيصي
    By ابراهيم البحيصي
    تعرف على المزيد
  • تعلم بايثون خطوة بخطوة - البرمجة الكائنية - بايثونات

    البرمجة الكائنية في بايثون – سلسلة بايثونات لتعلم لغة البايثون

    أهلا وسهلًا بكم في آخر مقال من سلسلة بايثونات لتعلم البايثون والذي نتناول فيه
    ابراهيم البحيصي
    By ابراهيم البحيصي
    تعرف على المزيد