أسئلة مقابلات Functions & Functional Patterns في Python
10 سؤال عن Functions & Functional Patterns من مسار Python. اقرأ الإجابة المختصرة لكل سؤال هنا، وافتح السؤال للشرح الكامل والأمثلة والأخطاء الشائعة والمصادر.
- متوسط
ما الفرق بين positional-only و keyword-only parameters؟
المعاملات قبل الفاصل / لا يمكن تمريرها بالاسم (positional-only)، والمعاملات بعد * يجب تمريرها بالاسم (keyword-only).
اقرأ الشرح الكامل - مبتدئ
لماذا تُعد list كقيمة افتراضية لمعامل الدالة مشكلة؟
لأن القيمة الافتراضية تُقيّم مرة واحدة فقط عند تعريف الدالة، فتشترك كل الاستدعاءات في نفس القائمة وتتراكم فيها البيانات.
اقرأ الشرح الكامل - مبتدئ
كيف يعمل *args و **kwargs؟
*args يجمع المعاملات الموضعية الإضافية في tuple، و **kwargs يجمع المعاملات المسماة الإضافية في dict، ويمكن استخدام * و ** عند الاستدعاء لفك القيم.
اقرأ الشرح الكامل - متوسط
ما هي closure وما مشكلة late binding داخل الحلقات؟
الـ closure دالة داخلية تحتفظ بإشارة إلى متغيرات النطاق المحيط، لكن قيمة المتغير تُقرأ وقت الاستدعاء لا وقت الإنشاء، لذلك ترى كل الدوال المنشأة في حلقة آخر قيمة للمتغير.
اقرأ الشرح الكامل - متوسط
كيف تكتب decorator يحافظ على بيانات الدالة الأصلية (metadata)؟
اكتب دالة تستقبل الدالة الأصلية وتعيد wrapper، وطبّق functools.wraps على الـ wrapper لنسخ __name__ و __doc__ و __module__ و __wrapped__.
اقرأ الشرح الكامل - مبتدئ
اشرح قاعدة LEGB في حل الأسماء.
تبحث Python عن الاسم بالترتيب: Local (الدالة الحالية) ثم Enclosing (الدوال المحيطة) ثم Global (الموديول) ثم Builtins.
اقرأ الشرح الكامل - مبتدئ
متى تستخدم lambda ومتى تستخدم def؟
استخدم lambda لتعبير صغير يُمرر مباشرة كمعامل (مثل key في sorted)، واستخدم def لأي منطق يحتاج اسمًا أو أكثر من تعبير أو توثيقًا أو اختبارًا.
اقرأ الشرح الكامل - متوسط
ما فائدة functools.partial؟
تنشئ callable جديدًا يثبّت بعض معاملات دالة موجودة مسبقًا، مما يفيد عند تمرير callback يحتاج سياقًا ثابتًا.
اقرأ الشرح الكامل - متوسط
ما حدود الاستدعاء التعاودي (recursion) في Python ومتى تختار حلقة؟
لكل استدعاء stack frame، والحد الافتراضي لعمق الاستدعاء حوالي 1000، ولا تدعم Python تحسين tail-call؛ لذلك الحلقة أو stack صريح أنسب للبيانات العميقة.
اقرأ الشرح الكامل - مبتدئ
ماذا يعني أن الدوال في Python كائنات من الدرجة الأولى (first-class)؟
يمكن إسناد الدالة لمتغير، وتمريرها كمعامل، وإرجاعها من دالة أخرى، وتخزينها في هياكل البيانات مثل أي كائن آخر.
اقرأ الشرح الكامل