وظائف الدرجة الأولى في بايثون

وظائف الدرجة الأولى في بايثون

يتم التعامل مع الوظائف في بايثون ككائنات من الدرجة الأولى. هذا يعني أنه يمكن استخدامها تمامًا مثل سلاسل الأرقام أو أي متغير آخر. أنت تستطيع:

  • تعيين وظائف للمتغيرات.
  • قم بتمريرها كوسائط إلى وظائف أخرى.
  • إعادتهم من الوظائف.
  • تخزينها في هياكل البيانات مثل القوائم أو القواميس.

تتيح لك هذه القدرة كتابة تعليمات برمجية قوية وقابلة لإعادة الاستخدام.

خصائص وظائف الدرجة الأولى

الوظائف في بايثون لها الخصائص الهامة التالية. دعونا نراهم واحدًا تلو الآخر مع الأمثلة:

1. إسناد وظائف للمتغيرات

نستطيع إسناد دالة إلى متغير واستخدم المتغير لاستدعاء الوظيفة.

مثال:

Python
   def   msg  (  name  ):   return   f  'Hello   {  name  }  !'   # Assigning the function to a variable   f   =   msg   # Calling the function using the variable   print  (  f  (  'Emma'  ))   

الإخراج
Hello Emma!  

توضيح:

  • تم تعيين الدالة msg للمتغير f.
  • الآن يمكن استخدام f للاتصال برسالة توضح أن الوظائف تتصرف مثل المتغيرات.

2. تمرير الوظائف كوسائط

يمكن أن تكون الوظائف مرت كحجج إلى وظائف أخرى تمكن وظائف ذات ترتيب أعلى .

مثال:

Python
   def   msg  (  name  ):   return   f  'Hello   {  name  }  !'   def   fun1  (  fun2     name  ):   return   fun2  (  name  )   # Passing the msg function as an argument   print  (  fun1  (  msg     'Alex'  ))   

الإخراج
Hello Alex!  

توضيح:

  • تأخذ الدالة fun1 دالة أخرى (fun2) كمدخل.
  • يتم تمرير msg إلى fun1 الذي يطلق عليه بعد ذلك اسم "Alex".

3. إرجاع الوظائف من وظائف أخرى

يمكن للوظيفة إرجاع وظيفة أخرى السماح بإنشاء مصانع وظيفية.

مثال:

Python
   def   fun1  (  msg  ):   def   fun2  ():   return   f  'Message:   {  msg  }  '   return   fun2   # Getting the inner function   func   =   fun1  (  'Hello World!'  )   print  (  func  ())   

الإخراج
Message: Hello World!  

توضيح:

  • تحدد الدالة fun1 دالة أخرى fun2 وتعيدها.
  • يخزن func الدالة التي تم إرجاعها fun2 والتي يمكن تنفيذها لاحقًا.

يمكن تخزين الوظائف في هياكل البيانات مثل القوائم أو القواميس .

مثال:

Python
   def   add  (  x     y  ):   return   x   +   y   def   subtract  (  x     y  ):   return   x   -   y   # Storing functions in a dictionary   d   =   {   'add'  :   add     'subtract'  :   subtract   }   # Calling functions from the dictionary   print  (  d  [  'add'  ](  5     3  ))   print  (  d  [  'subtract'  ](  5     3  ))   

الإخراج
8 2  

توضيح:

  • يتم تخزين وظائف الجمع والطرح في القاموس.
  • يتم الوصول إليها باستخدام مفاتيحها وتنفيذها مباشرة.
مسابقة مقترحة تحرير الاختبار 8 أسئلة

أي مما يلي يصف بشكل أفضل وظيفة من الدرجة الأولى في لغات البرمجة؟

  • أ

    دالة لا يمكن استدعاؤها إلا من داخل نطاقها الخاص.

  • ب

    دالة يمكن إسنادها إلى متغيرات تم تمريرها كوسائط ويتم إرجاعها من وظائف أخرى مثل أي كائن آخر.

  • ج

    دالة لا يمكن تعريفها إلا في المستوى الأعلى للوحدة النمطية.

  • د

    وظيفة لا يمكن تنفيذها إلا في سياق محدد.

توضيح:


في سياق وظائف الدرجة الأولى، ما هي الوظيفة ذات الترتيب الأعلى؟

  • أ

    دالة يمكنها إرجاع أنواع البيانات البدائية فقط.

  • ب

    دالة يمكنها أن تأخذ وظائف أخرى كوسيطات أو ترجعها كنتائج.

  • ج

    دالة تم تعريفها ضمن دالة أخرى ولكن لا يمكن إرجاعها.

  • د

    دالة يتم تنفيذها في موضوع منفصل.

توضيح:


ماذا سيكون ناتج الكود التالي؟

تحية محددة (الاسم):

العودة f'مرحبا {الاسم}'


say_hello = تحية

طباعة (say_hello ("المهوس"))

  • أ

    مرحبا تحية

  • ب

    تحية

  • ج

    مرحبا المهوس

  • د

    خطأ في الكتابة

توضيح:

يمكن تعيين الوظائف للمتغيرات. هنا يصبح say_hello مرجعًا آخر للترحيب به.

أي مما يلي لا يعد من خصائص وظائف الدرجة الأولى؟

  • أ

    يمكن تخزين الوظائف في هياكل البيانات

  • ب

    يمكن تعيين الوظائف للمتغيرات

  • ج

    يمكن للوظائف إرجاع وظائف أخرى

  • د

    يمكن للوظائف إرجاع الأنواع البدائية فقط

توضيح:

يمكن لوظائف الدرجة الأولى إرجاع أي نوع بما في ذلك الوظائف الأخرى، ولا تقتصر على البدائيات.

ماذا سيكون ناتج هذا الكود؟

تعريف الخارجي ():

مواطن الداخلية ():

إرجاع "الوظيفة الداخلية"

العودة الداخلية

فونك = الخارجي ()

طباعة (وظيفة ())

  • أ

    الوظيفة الداخلية

  • ب

    داخلي

  • ج

    الخارجي

  • د

    خطأ

توضيح:

الخارجي () يعيد الوظيفة الداخلية ويستدعيها func () ويعيد السلسلة الخاصة به.

أي مما يلي ليس من خصائص وظائف الدرجة الأولى؟

  • أ

    يمكن تخصيصها للمتغيرات.

  • ب

    يمكن تمريرها كوسائط إلى وظائف أخرى.

  • ج

    ولا يمكن تعريفها إلا مرة واحدة في البرنامج.

  • د

    يمكن إعادتهم من وظائف أخرى.

توضيح:


ما هو ناتج الكود التالي؟

تعريف make_multiplier(n):

مضاعف التعريف (x):

العودة س * ن

مضاعف العائد

مزدوج = make_multiplier(2)

طباعة (مزدوج (5))

  • أ

    7

  • ب

    10

  • ج

    25

  • د

    خطأ

توضيح:

يقوم make_multiplier(2) بإرجاع دالة تضرب وسيطتها بـ 2. لذا فإن double(5) يُرجع 10.



كيف تتعامل بايثون مع الوظائف فيما يتعلق بالمتغيرات؟

  • أ

    الوظائف هي كائنات ثابتة

  • ب

    الوظائف هي ثوابت ولا يمكن إعادة تعيينها

  • ج

    تعتبر الوظائف مواطنة من الدرجة الأولى ويمكن تخزينها وإعادة تعيينها

  • د

    يجب أن يتم الإعلان عن الوظائف على أنها عالمية ليتم استخدامها

توضيح:

كونك مواطنًا من الدرجة الأولى يعني أنه يمكن تعيين الوظائف وإعادتها مثل الأشياء الأخرى.

وظائف الدرجة الأولى في بايثونتم إكمال الاختبار بنجاح   2 /8 دقة :  0% قم بالدخول لمشاهدة الشرح 1 /8 1 /8 < Previous التالي >