ما هي بايثون؟
1-ما هي فوائدها؟
إليك بعض السمات الرئيسية للغة بايثون
سهولة التعلم والاستخدام:بايثون معروفة ببساطتها وسهولة تعلمها، مما يجعلها مناسبة للمبتدئين وتحتل مكانة قوية في مجال التعليم.
متعددة الاستخدامات:يمكن استخدام بايثون في مجموعة واسعة من التطبيقات، بدءًا من تطوير الويب والبرمجة العلمية إلى التحليل البياني والذكاء الاصطناعي.
مفتوحة المصدر:بايثون هي لغة برمجة مفتوحة المصدر، مما يعني أن مصدر اللغة متاح للجميع للعبث به وتعديله واستخدامه.
دعم كبير للمجتمع:يتمتع بايثون بمجتمع نشط من المطورين، مما يعني وجود العديد من المكتبات والأدوات المتاحة للمستخدمين.
محمولية على مستوى الأنظمة:يمكن تشغيل برامج بايثون على مختلف الأنظمة الأساسية مثل Windows وmacOS وLinux.
بنية بيانية ديناميكية:بايثون تستخدم بنية بيانية ديناميكية، مما يعني أنها لا تتطلب تحديد نوع المتغيرات مسبقًا.
تعدد البرمجة البرمجية البارعة:تدعم بايثون أساليب متقدمة لتنظيم الشفرة البرمجية والعمل.
2-ما هو PEP 8؟
PEP 8 هو اختصار لـ "Python Enhancement Proposal 8"، وهو وثيقة تقنية في عالم Python تحدد إرشادات الأسلوب للكود في لغة البرمجة بايثون. تم إنشاء هذا المستند لتوحيد أسلوب الكتابة وتحسين قراءة الشفرة وصيانتها، مما يسهل التعاون بين المطورين.
بعض النقاط الرئيسية المغطاة في PEP 8 تتضمن
المسافات والمحافظة على التنسيق:يحدد PEP 8 استخدام المسافات بدلاً من التابات للتنسيق، ويحدد عدد المسافات المستخدمة للتعويض عن التابات.
الطول القياسي للأسطر:يقترح PEP 8 أن يكون طول السطر في الشفرة المصدرية لا يتجاوز 79 حرفًا لتسهيل قراءته في محررات النصوص التي تعرض جداول جانبية.
تنسيق الاستيرادات:يحدد PEP 8 تنسيق استيراد الوحدات وترتيبها، بما في ذلك الفصل بين المكتبات المدمجة وتلك المستوردة من خارج المشروع.
تسميات المتغيرات والدوال:يقترح PEP 8 استخدام الأحرف الصغيرة مع توظيف الشرطة السفلية لفصل الكلمات في تسميات المتغيرات والدوال.
التعليقات والوثائق:يوفر PEP 8 إرشادات حول كتابة التعليقات وإضافة وثائق إلى الشفرة المصدرية.
استخدام الفاصلة بعد الفاصلة:يحدد PEP 8 استخدام الفاصلة بعد الفاصلة (comma-first) في حالة تعدد الوسائط (multi-line)، مما يسهل فحص الفروق في أنظمة إدارة النسخ.
3-ما هو التخليل والتفكيك؟
في بايثون، تشير كلمتا "التخليل" و"إلغاء التسلسل" إلى عملية تسلسل الكائنات وإلغاء تسلسلها، على التوالي.تُستخدم هذه العمليات بشكل شائع لتخزين واسترجاع هياكل أو كائنات البيانات المعقدة.
التخليل هو عملية تحويل كائن بايثون إلى دفق بايت. يمكن تخزين دفق البايت هذا في ملف أو إرساله عبر الشبكة.
الوحدة: يتم تنفيذ عملية التخليل في المقام الأول باستخدام وحدة المخلل في بايثون.
الاستخدام:
بيانات = {'الاسم': 'جون', 'العمر': 30, 'المدينة': 'نيويورك'}
# حفظ البيانات في ملف باستخدام pickle
with open('data.pickle', 'wb') as ملف:
pickle.dump(بيانات, ملف)
الوحدة النمطية: تُستخدم وحدة المخلل أيضًا في عملية التفكيك.
الاستخدام:
من المهم ملاحظة أنه على الرغم من أن التخليل هو وسيلة مناسبة لتسلسل الكائنات، إلا أنه قد لا يكون آمنًا لمصادر البيانات غير الموثوق بها، حيث أن إلغاء التقاط البيانات من مصادر غير موثوقة يمكن أن يشكل مخاطر أمنية (على سبيل المثال، تنفيذ تعليمات برمجية عشوائية).
4-كيف يتم تفسير بايثون
تفسير لغة البرمجة بايثون يتم بواسطة مترجم Python الذي يقوم بتحويل الشفرة المصدرية (الكود البرمجي الذي يكتبه المطور) إلى لغة يفهمها الحاسوب.هناك اثنين من الطرق الرئيسية لتفسير بايثون
تفسير طويل:يمكنك تفسير كود بايثون باستخدام المترجم الطويل (CPython)، وهو النسخة الرسمية للغة بايثون.تفسير تفاعلي:يمكنك أيضًا استخدام تفسير تفاعلي لبايثون، وهو بيئة تفاعلية حية حيث يمكنك كتابة الشفرة المصدرية ورؤية النتائج فورًا.
على سبيل المثال:
5-كيف تتم إدارة الذاكرة في بايثون؟
إدارة الذاكرة في لغة البرمجة بايثون تتم بشكل آلي، وهذا يعني أن المطور ليس بحاجة إلى التعامل مباشرة مع الكثير من التفاصيل المتعلقة بالذاكرة مقارنةً مع لغات البرمجة التي تتطلب إدارة يدوية للذاكرة.
Reference Counting:العد الإشاري هو أسلوب يعتمد على تعيين عدد إشارات (References) لكل كائن في الذاكرة. عندما يصبح عدد الإشارات صفرًا، يعتبر الكائن غير قابل للوصول ويتم حذفه تلقائيًا.
التجميع الضائع الجيليني (Generational Garbage Collection):يقوم نظام التجميع الضائع الجيليني بتقسيم الكائنات إلى أجيال مختلفة استنادًا إلى مدى استمراريتها. يتم جمع الكائنات التي تكون غير مستمرة بشكل أكبر بشكل دوري، مما يقلل من تأثير عملية جمع القمامة على أداء البرنامج.
مكتبات التوجيه (Memory Management Libraries):توفر بايثون واجهات لمكتبات إدارة الذاكرة مثل PyMalloc لتحسين أداء البرامج عند العمل مع كميات كبيرة من البيانات.
استخدام مكتبات الإدارة اليدوية:يمكن استخدام مكتبات مثل ctypes للتفاعل مع رموز البرنامج المتكونة بلغات مثل C للتحكم اليدوي في إدارة الذاكرة في حالات خاصة.
6-ما هي الأدوات التي تساعد في اكتشاف الأخطاء أو إجراء التحليل الثابت؟
هناك العديد من الأدوات المفيدة في عالم بايثون التي تساعد في اكتشاف الأخطاء وتحليل الشفرة البرمجية.
Pylint:Pylint هو أداة لتحليل الشفرة البرمجية واكتشاف الأخطاء والأسلوب غير المناسب.
يقوم بتقييم جودة الشفرة ويوفر تقارير تفصيلية حول الأخطاء والتحسينات المحتملة.
يتميز بالسرعة والبساطة.
يساعد في تجنب الأخطاء المرتبطة بأنواع البيانات في وقت التشغيل.
مما يساعد في تحسين قراءة الشفرة والحفاظ على تنسيق موحد.
Coverage.py:Coverage.py تستخدم لقياس تغطية الشفرة.
حيث يمكنك رصد أي جزء من الشفرة قد تم تنفيذه أثناء تشغيل البرنامج.
يقدمون نتائج مجمعة لتحليل الشفرة.
يمكن أن تساعد في مراجعة الشفرة واكتشاف الأخطاء قبل الدمج.
7-ما هي برامج الديكور بايثون؟
في لغة Python، تعد أدوات الديكور ميزة قوية ومرنة تسمح لك بتعديل أو توسيع سلوك الوظائف أو الأساليب دون تغيير التعليمات البرمجية الفعلية الخاصة بها.
يأخذ مصمم الديكور وظيفة كمدخل ويعيد وظيفة جديدة تعمل عادةً على توسيع أو تعديل سلوك الوظيفة الأصلية. تُستخدم أدوات الديكور بشكل شائع لمهام مثل التسجيل والتخزين المؤقت والتحكم في الوصول والمزيد.
إليك مثال بسيط لمصمم الديكور:
تعريف my_decorator(func):
غلاف التعريف ():
طباعة ("يحدث شيء ما قبل استدعاء الوظيفة.")
وظيفة ()
طباعة ("يحدث شيء ما بعد استدعاء الوظيفة.")
غلاف العودة
@my_decorator
بالتأكيد say_hello():
طباعة ("مرحبا!")
# استخدام الدالة المزخرفة
قل مرحبا()
في هذا المثال، my_decorator هي دالة ديكور تأخذ دالة أخرى (func) كوسيطة، وترجع دالة جديدة (غلاف). تحتوي وظيفة التضمين على السلوك الإضافي الذي تريد إضافته قبل وبعد استدعاء الوظيفة الأصلية.
إن صيغة @my_decorator هي طريقة مختصرة لتطبيق الديكور على الدالة say_hello. إنه يعادل كتابة say_hello = my_decorator(say_hello).
عند استدعاء say_hello، سيتم تنفيذ السلوك المعدل الذي يوفره مصمم الديكور.
8-ما الفرق بين القائمة والصفوف؟
إليك توضيح لكل من مصطلحي "القائمة" و"الصفوف":القائمة (List):في سياق لغات البرمجة وهياكل البيانات، القائمة هي ترتيب مرتب من العناصر حيث يمكن الوصول إليها بواسطة مؤشر (index) أو مفتاح (key)، ويتم تمثيلها بين قوسين مربعين [].
الصفوف (Rows):في سياق قواعد البيانات أو الجداول، يشير مصطلح "الصف" إلى سجل فردي يحتوي على بيانات لعدة متغيرات أو أعمدة.
| الاسم | العمر | الدرجة |
في هذا المثال، كل صف يمثل طالبًا والأعمدة تحتوي على معلومات محددة حول كل طالب.
9-كيف يتم تمرير الوسائط حسب القيمة أو حسب المرجع؟
في لغات البرمجة، يتم تمرير الوسائط (المتغيرات أو القيم) إلى الدوال أو الوظائف بإحدى الطرقين: حسب القيمة (Pass by Value) أو حسب المرجع (Pass by Reference).
حسب القيمة (Pass by Value):يعني أن القيمة الفعلية للمتغير تتم نسخها وتمرير النسخة إلى الدالة.
أي تغيير تحدث داخل الدالة لا يؤثر على القيمة الأصلية للمتغير خارج الدالة.
هذا النمط شائع في لغات البرمجة مثل C وC++.
حسب المرجع (Pass by Reference):يعني أن المرجع إلى المتغير يتم نقله إلى الدالة، مما يتيح للدالة الوصول إلى القيمة الفعلية للمتغير.
أي تغيير تحدث داخل الدالة يؤثر على القيمة الأصلية للمتغير خارج الدالة.
هذا النمط شائع في لغات البرمجة مثل Python وJavaScript.
10-ما هو فهم الإملاء والقائمة؟
يبدو أنه قد يكون هناك ارتباك بسيط في المصطلحات المستخدمة في السؤال. يشير مصطلح "التهجئة" عادةً إلى التهجئة أو تكوين الكلمات بشكل صحيح، في حين أن "فهم القائمة" هو مفهوم برمجي في بايثون.
اسمحوا لي أن أشرح كلا المصطلحين:الإملاء:
تشير كلمة "التهجئة" في سياق اللغة إلى القدرة على تكوين الكلمات بشكل صحيح عن طريق ترتيب الحروف بالتسلسل الصحيح.
قائمة في بايثون:
يعد فهم القائمة طريقة مختصرة لإنشاء قوائم في بايثون. يوفر بناء جملة أكثر قابلية للقراءة وتعبيرًا لإنشاء قوائم بناءً على العناصر التكرارية الموجودة (القوائم والسلاسل وما إلى ذلك) وتطبيق بعض العمليات على كل عنصر.
بناء الجملة الأساسي لفهم القائمة هو [تعبير عن عنصر قابل للتكرار إذا كان الشرط].
فيما يلي مثال بسيط لإنشاء قائمة مربعات للأرقام الزوجية من 0 إلى 9:
المربعات = [x**2 لـ x في النطاق(10) إذا x % 2 == 0]
طباعة (المربعات)
سيكون الناتج [0، 4، 16، 36، 64]، حيث كل رقم هو مربع الرقم الزوجي من 0 إلى 9.
11-ما هي الأنواع المضمنة التي توفرها بايثون؟
في Python، يتيح لك استخدام الأنواع المضمنة (Built-in Types) لتمثيل البيانات بطرق مختلفة.أنواع الأعداد:int: لتمثيل الأعداد الصحيحة (مثل 5 و -3).
float: لتمثيل الأعداد العشرية (مثل 3.14 و -0.5).
complex: لتمثيل الأعداد التعقيدية (مثل 2 + 3j).
نصوص (Strings):str: لتمثيل النصوص، حيث يمكن أن تكون سلسلة من الأحرف (مثل "Hello, World!").
تمثيل البيانات البولية:bool: لتمثيل القيم البولية True أو False.
أنواع البيانات المتسلسلة:list: لتمثيل قوائم متسلسلة من العناصر (مثل [1, 2, 3]).
tuple: لتمثيل أزواج من القيم، وهي غير قابلة للتغيير بعد الإنشاء (مثل (1, 2)).
set: لتمثيل مجموعات غير متسلسلة من العناصر (مثل {1, 2, 3}).
dict: لتمثيل القواميس أو الهياكل التي تحتوي على أزواج "مفتاح-قيمة" (مثل {"اسم": "أحمد", "عمر": 25}).
NoneType:None: لتمثيل القيمة None التي تعبر عن العدم.
12-شرح مساحة الاسم في بايثون
مساحة الأسماء في Python تشير إلى المكان الذي يمكن فيه استخدام اسم (مثل اسم متغير أو اسم دالة) في الكود. في Python، يتم تحديد مساحة الأسماء باستخدام المستوى الداخلي للتقنيات المختلفة.
إليك بعض المفاهيم المتعلقة بمساحة الأسماء في Python:
النطاق (Scope):النطاق يحدد مدى رؤية وصلاحية الأسماء في الكود. هناك نطاقات مختلفة مثل النطاق العالمي (global) والنطاق المحلي (local).النطاق العالمي (Global Scope):الأسماء التي تتم تعريفها خارج أي دالة أو كتلة أخرى تعتبر في النطاق العالمي. يمكن الوصول إليها من أي مكان في البرنامج.
13-ما هو لامدا في بايثون؟
لامبدا (Lambda) في Python تُعتبر وسيلة لإنشاء وظائف صغيرة مجهولة الاسم (anonymous functions). تعد الوظائف المجهولة الاسم أو اللامبدا مناسبة للاستخدام في حالات حيث يكون استخدام دالة كاملة ذات اسم غير ضروري.
بصورة عامة، يتم استخدام لامبدا عندما تحتاج إلى دالة بسيطة لفترة قصيرة ولا تحتاج إلى تعريفها باستخدام الكلمة الرئيسية def. صيغة لامبدا هي:حيث arguments هي قائمة بالمتغيرات التي يمكن تمريرها إلى اللامبدا، و expression هي التعبير الذي يتم حسابه وإرجاعه.
إليك مثال بسيط:
في هذا المثال، تم استخدام لامبدا لإنشاء دالة صغيرة للجمع بين اثنين من الأرقام.
14-لماذا لا تحتوي نماذج لامدا في بايثون على عبارات؟
لامبدا في Python تُستخدم لإنشاء وظائف صغيرة مجهولة الاسم (anonymous functions)، ولكن لا تحتوي على عبارات أخرى سوى تعبير واحد. هذا يتيح للامبدا أن تكون وظيفة بسيطة وصغيرة جداً.
السبب وراء عدم دعم العبارات في لامبدا يعود إلى التصميم البسيط لها.15-شرح pass في بايثون
في Python، pass هو تعليمة لا تقوم بأي عمل. يتم استخدامها عندما يكون هناك حاجة إلى وجود بيان قائم بالصيغة ولكن لا تحتاج إلى أي إجراءات. يُفضل استخدام pass كبديل عن وضع تعليمة فارغة أو ترك جسم الكود فارغًا، حيث يتطلب Python وجود بيان في الحالتين.
في السياقات التي يُشترط فيها وجود بيان ولكن ليس هناك حاجة لأي إجراء، يُستخدم pass لتجنب الأخطاء في تنفيذ الكود.في هذا المثال، pass يُستخدم للإشارة إلى أنه لا يوجد أي عمل يجب القيام به في حالة الشرط الأول، ولكنه يحافظ على الصيغة الصحيحة للكود.
16-ما هي التكرارات في بايثون؟
في Python، يُشير مصطلح "التكرارات" إلى الهياكل التي تسمح لتنفيذ مجموعة من البيانات أو الأوامر لعدة مرات. هناك عدة طرق لتحقيق التكرار في Python، وأحد أهم الهياكل لهذا الغرض هو استخدام حلقات (Loops).حلقة for:تُستخدم لتكرار عبر مجموعة من العناصر (مثل قائمة أو سلسلة).
الناتج: code
حلقة while:تُستخدم لتكرار مجموعة من البيانات أو الأوامر حتى تصبح شرطية معينة غير صحيحة.
مثال:
الناتج: code
17-ما هي الوحدة في بايثون؟
في Python، يُشير مصطلح "الوحدة" إلى ملف يحتوي على كود Python. الوحدة تعتبر وحدة تنظيمية لتنظيم وإدارة الكود. يمكنك فهمها بأنها ملف Python يحتوي على مجموعة من التعريفات والأوامر.
النقطة الرئيسية حول الوحدات هي أنها تسمح بتنظيم الكود وفصله إلى أقسام منفصلة لتسهيل الصيانة وإعادة الاستخدام. في Python، يمكنك استيراد الوحدات في ملفات أخرى باستخدام كلمة المفتاح import.على سبيل المثال، افترض أن لديك ملف يسمى my_module.py يحتوي على الكود التالي:
ثم يمكنك استيراد هذه الوحدة في ملف Python آخر باستخدام
بهذه الطريقة، يمكنك استخدام وظائف ومتغيرات من وحدة my_module في ملف another_file.py. هذا يساعد في تقسيم الكود إلى وحدات صغيرة وسهلة الفهم والصيانة
18-شرح التقطيع في بايثون؟
التقطيع (Slicing) في Python هو عملية استخدام جزء فرعي من تسلسل (sequence)، مثل قائمة (List) أو سلسلة نصوص (String). يُمثل التقطيع جزءًا من التسلسل بواسطة تحديد نطاق من المؤشرات (الفهرس)، ويسمح بالوصول إلى العناصر داخل هذا النطاق.
صيغة التقطيع هي:حيث:start: المؤشر الذي يبدأ منه التقطيع (يشمل).
stop: المؤشر الذي ينتهي عنده التقطيع (لا يشمل).
step: الخطوة بين العناصر (اختياري، إذا تم تركه فإنه يفترض القيمة 1).
القيم الافتراضية:إذا تم ترك start فإنه يفترض القيمة 0.
إذا تم ترك stop فإنه يفترض نهاية التسلسل.
إذا تم ترك step فإنه يفترض القيمة 1.
لنقدم بعض الأمثلة:
يُلاحظ أن التقطيع يعود بقائمة جديدة، وهذا يسمح بعمليات تقطيع متعددة ومركبة على التسلسلات.
19-ما هي generatorفي بايثون؟
في Python، مصطلح "generator" يشير إلى نوع خاص من الكائنات (objects) التي يمكنها إنشاء تسلسل من القيم على مراحل. الـ generators يستخدمون عادة لتوليد مجموعة كبيرة من القيم بشكل فعال من حيث استهلاك الذاكرة.
الـ generator يستخدم الكلمة الرئيسية "yield" بدلاً من "return" لإرجاع القيم، ولكنه يحافظ على حالة الدالة (function) بين مرات الاستدعاء، وهذا يتيح للـ generator استئناف تنفيذه من حيث توقف في كل مرة.إليك مثال بسيط لفهم الـ generator في code
هذا هو مثال بسيط، والـ generators يمكن أن تستخدم لتوليد مجموعات من القيم بطريقة فعالة، ويمكن استخدامها في حالات تتطلب التكامل التدريجي وتوفير استهلاك منخفض للذاكرة.
20-ما هو docstring في بايثون؟
في Python، docstring هو سلسلة نصية (string) تستخدم لوصف وثائق (documentation) لدالة أو طريقة أو وحدة برمجية. يتم وضع docstring كأول تعليق في جسم الكود لهذه الكائنات.
الهدف من docstring هو توفير وثائق قريبة من الكود المصدر، مما يجعلها سهلة الوصول والفهم. يمكن استخدامها لتوضيح وظيفة الدالة أو الطريقة، توضيح المعاملات والقيم المتوقعة، وأية معلومات أخرى ذات صلة.فيما يلي مثال بسيط على كيفية استخدام docstring في code
في هذا المثال، النص الذي يبدأ وينتهي بثلاث علامات تنصيص مزدوجة (""") هو docstring.
من الجيد أن تكون عادة docstrings واضحة وموجزة، مما يساعد المطورين الآخرين (ونفسك) في فهم الكود بشكل أفضل واستخدامه بشكل صحيح.
.webp)