بايثون هي لغة برمجة قوية ومرنة تسمح لك بأتمتة المهام وتحسين كفاءة العمل. واحدة من الأدوات الرئيسية في برمجة بايثون هي الوظائف. تسمح لك الوظائف بدمج كتلة معينة من التعليمات البرمجية وتسميتها عدة مرات في أماكن مختلفة من البرنامج.
في هذه المقالة ، سوف ننظر في عدة طرق لاستدعاء وظيفة عدة مرات في بيثون. تتضمن الطرق البسيطة استخدام حلقة أو أثناء استدعاء الوظيفة مرة أخرى. ومع ذلك ، هناك أيضا المزيد من الأساليب المهنية ، مثل استخدام العودية أو استخدام مكتبة إيترتولس.
من المهم أن تتذكر أن استدعاء دالة عدة مرات قد يتطلب تمرير وسيطات مختلفة. سننظر أيضا في طرق تمرير الوسيطات إلى الوظيفة المسماة وكيفية استخدام الوسيطات الافتراضية.
بغض النظر عن الطريقة التي تختارها لاستدعاء الوظيفة عدة مرات ، من المهم اختبار التعليمات البرمجية بانتظام للتأكد من أنها تعمل كما هو متوقع ولا تسبب أخطاء غير متوقعة.
- استدعاء وظيفة باستخدام حلقة
- استخدام العودية لاستدعاء دالة مرة أخرى
- إنشاء استدعاء دالة دورية
- معلمات دالة لمكالمات متعددة مع وسيطات مختلفة
- استخدام البرمجة الوظيفية لاستدعاء وظيفة عدة مرات
- استخدام مكتبة إيترتولس لاستدعاء وظيفة بشكل متكرر
- تحسين استدعاء الوظيفة باستخدام الديكور
- سؤال وجواب
- كيف يمكنني استدعاء وظيفة عدة مرات في بيثون?
- هل من الممكن استدعاء وظيفة عدة مرات دون استخدام حلقة?
- كيف يمكنني استدعاء وظيفة عدد معين من المرات?
- كيف يمكنني استدعاء وظيفة عدة مرات قبل استيفاء شرط معين?
- ما هي الطرق لاستدعاء وظيفة عدة مرات في بيثون?
استدعاء وظيفة باستخدام حلقة
لاستدعاء وظيفة عدة مرات في بيثون ، يمكنك استخدام لحلقة. تسمح لك الحلقة بالتكرار من خلال عناصر كائن أو تسلسل معين وتنفيذ إجراءات معينة لكل عنصر.
يمكن استدعاء الوظيفة داخل الحلقة ، وسيتم تنفيذها لكل عنصر محدد في الكائن أو التسلسل المتكرر.
مثال على استدعاء دالة باستخدام حلقة:
مواطنه تحية (اسم):
طباعة (اسم" مرحبا")
الأسماء = ["أليكسي" ، "أولغا" ، "إيفان"]
للاسم في الأسماء:
تحية (الاسم)
في هذا المثال ، لدينا وظيفة تحية تأخذ وسيطة واحدة-الاسم. لدينا أيضا قائمة أسماء بأسماء متعددة. تتكرر الحلقة من خلال كل عنصر من عناصر القائمة وتستدعي وظيفة الترحيب مع كل اسم كوسيطة.
نتيجة لذلك ، سيتم استدعاء وظيفة التحية ثلاث مرات مع الحجج "أليكسي" و "أولغا" و "إيفان".
نتيجة البرنامج:
مرحبا ، أليكسي
مرحبا ، أولغا
مرحبا ايفان
في هذه الحالة ، يتم استدعاء وظيفة الترحيب في كل مرة ، وفي كل مرة تقوم بإخراج تحية بالاسم الذي تم تمريره كوسيطة.
وبالتالي ، فإن استخدام الحلقة يسمح لك باستدعاء الوظيفة عدة مرات ، ومعالجة وسيطات مختلفة لكل مكالمة.
استخدام العودية لاستدعاء دالة مرة أخرى
في بيثون ، يمكنك استخدام العودية لاستدعاء وظيفة عدة مرات. العودية هي تقنية تستدعي فيها الوظيفة نفسها داخل جسمها. وبالتالي ، يمكن استدعاء الوظيفة عدة مرات طالما تم استيفاء شرط معين.
ميزة استخدام العودية هي مرونتها وسهولة التنفيذ. عند تكوينه بشكل صحيح ، فإنه يسمح لك لأداء المهام التكرارية المعقدة مع الحد الأدنى من التعليمات البرمجية.
هنا مثال على استخدام العودية لاستدعاء وظيفة مرة أخرى:
مواطنه العد التنازلي (ن):
إذا ن = = 0:
طباعة ("دعنا نذهب!")
آخر:
طباعة (ن)
العد التنازلي (ن-1)
العد التنازلي(5)
، تقليله بواحد.
، سيتم استدعاء الوظيفة خمس مرات ، وطباعة الأرقام من 5 إلى 1 ، ثم إخراج الرسالة "دعنا نذهب!".
ومع ذلك ، عند استخدام العودية ، يجب توخي الحذر لتجنب العودية اللانهائية. يحدث العودية اللانهائية عندما لا يتم استيفاء شرط الخروج من العودية ، مما يؤدي إلى حلقة لا نهاية لها من استدعاءات الوظائف.
يعد استخدام العودية لاستدعاء وظيفة مرة أخرى أداة برمجة قوية يمكن استخدامها لحل المهام المختلفة. ومع ذلك ، من الضروري توخي الحذر وتكوين شروط الخروج من العودية بشكل صحيح لتجنب العودية اللانهائية وضمان التنفيذ الصحيح للبرنامج.
إنشاء استدعاء دالة دورية
في بايثون ، هناك عدة طرق لإنشاء استدعاء دالة دورية. دعونا ننظر إلى بعض منهم:
- بينما صحيح:
ديف وظيفتي ():
طباعة ("استدعاء الوظيفة")
وظيفتي()
مثال على وظيفة ذات معلمات:
مواطنه تحية (اسم):
طباعة (و " مرحبا ، {اسم}!")
تحية ("أليكسي")
الاسم
. في كل مرة يتم استدعاء الدالة ، نقوم بتمرير قيم مختلفة للوسيطات
الاسم
. وبالتالي ، في كل استدعاء دالة ، يتم استبدال متغير
الاسم
للقيمة التي تم تمريرها.
نتيجة تنفيذ هذا الرمز:
مرحبا ، أليكسي!
مرحبا ، ماريا!
كما ترون من المثال ، أطلقنا على الوظيفة
تحية
مرتين ، تمرير قيم مختلفة للوسيطة
الاسم
، وطبع الدالة تحية مع الأسماء المحددة.
تسمح لنا معلمات الوظيفة باستخدام الوظائف بشكل فعال في مواقف مختلفة ومع بيانات مختلفة ، مما يجعل الكود أكثر مرونة وسهولة في الاستخدام.
استخدام البرمجة الوظيفية لاستدعاء وظيفة عدة مرات
طريقة واحدة لاستدعاء وظيفة عدة مرات في بيثون هو استخدام البرمجة الوظيفية. تعتمد البرمجة الوظيفية على استخدام الوظائف ككائنات من الدرجة الأولى ، مما يسمح لك بتمريرها كوسائط إلى وظائف أخرى وإعادتها من الوظائف.
لاستدعاء وظيفة عدة مرات باستخدام البرمجة الوظيفية ، يمكنك استخدام وظيفة الخريطة (). تأخذ وظيفة الخريطة () وسيطتين: الوظيفة التي سيتم استدعاؤها ، وكائن قابل للتكرار سيتم تمرير عناصره إلى هذه الوظيفة. نتيجة وظيفة الخريطة () هي مكرر يحتوي على نتائج استدعاء الوظيفة لكل عنصر من عناصر الكائن المتكرر.
مثال على استخدام البرمجة الوظيفية لاستدعاء دالة عدة مرات:
مواطنه متعددة_بواسطة اثنين (س):
العودة س * 2
أرقام = [1, 2, 3, 4, 5]
النتيجة = قائمة (خريطة (متعددة_ب_اثنين ، أرقام))
طباعة (نتيجة) # [2, 4, 6, 8, 10]
في هذا المثال ، نحدد الوظيفة المضاعفة () ، والتي تأخذ رقما وتعيد قيمته المضاعفة. ثم نقوم بإنشاء قائمة بالأرقام بأرقام من 1 إلى 5. باستخدام وظيفة الخريطة () ، نطبق الوظيفة متعددة () على كل عنصر من عناصر قائمة الأرقام ونحفظ النتائج في قائمة نتائج جديدة. أخيرا ، نقوم بإخراج قائمة النتائج ، والتي تحتوي على نتائج استدعاء الدالة متعددة() لكل عنصر من عناصر قائمة الأرقام.
توفر البرمجة الوظيفية أيضا وظائف مفيدة أخرى ، مثل الفلتر() والتقليل () ، والتي يمكن استخدامها لتصفية العناصر وتطبيق الوظيفة على التراكم المتسلسل للقيم ، على التوالي. يتيح لك استخدام هذه الوظائف أيضا استدعاء الوظيفة عدة مرات.
عند استخدام البرمجة الوظيفية لاستدعاء وظيفة عدة مرات ، من المهم تذكر مبدأ "نقاء الوظائف". وظائف نقية ليس لها آثار جانبية ودائما إرجاع نفس النتيجة لنفس الحجج. هذا يسمح لك لإعادة استخدام وظائف ويجعل رمز أكثر قابلية للقراءة وقابلة للاختبار.
في الختام ، توفر البرمجة الوظيفية طريقة ملائمة لاستدعاء الوظائف عدة مرات في بايثون. باستخدام وظائف الخريطة () والتصفية() وتقليل () ، يمكنك تطبيق الوظائف على الكائنات المتكررة والحصول على نتائج وظائف الاتصال لكل عنصر أو تصفية الكائنات المتكررة وفقا لشروط معينة.
استخدام مكتبة إيترتولس لاستدعاء وظيفة بشكل متكرر
توفر مكتبة إيترتولز في بيثون مجموعة من الوظائف للعمل بكفاءة مع التكرارات. يمكن أن يكون مفيدا عندما تكون هناك حاجة لاستدعاء وظيفة عدة مرات. لنلق نظرة على عدة طرق لاستخدام هذه المكتبة.
1. باستخدام وظيفة التكرار
تأخذ وظيفة التكرار وسيطتين: العنصر الذي يجب تكراره وعدد التكرارات. يقوم بإرجاع مكرر يولد العدد المحدد من التكرارات للعنصر الذي تم تمريره. مثال الاستخدام:
استيراد إيترتولس
ديف وظيفتي ():
طباعة ("استدعاء الوظيفة")
تكرار _ إيتراتور = إيترتولس.كرر (وظيفتي ، 5)
ل _ في مكرر_المؤلف:
_()
في هذا المثال ، سيتم استدعاء وظيفة وظيفتي 5 مرات.
2. باستخدام وظيفة الجزيرة
وظيفة إيليس يسمح لك لتحديد مجموعة محددة من العناصر من مكرر. يتطلب الأمر ثلاث وسيطات: مكرر ، وفهرس أولي ، وفهرس نهائي (لا يشمل العنصر نفسه في هذا الفهرس). مثال الاستخدام:
استيراد إيترتولس
ديف وظيفتي ():
طباعة ("استدعاء الوظيفة")
تكرار _ إيتراتور = إيترتولس.كرر (وظيفتي ، 10)
<url>.جزيرة (كرر ، 2 ، 6)
ل _ في شرائح_المؤلف:
_()
في هذا المثال ، سيتم استدعاء دالة وظيفتي 4 مرات ، بدءا من المكالمة الثالثة وحتى المكالمة السابعة.
3. باستخدام وظيفة السلسلة
تتيح لك وظيفة السلسلة توصيل عدة مكررات في واحد. يقبل عددا عشوائيا من وسيطات التكرار ويعيد مكررا مدمجا ينفذ جميع مكررات الوسيطة بالتتابع. مثال الاستخدام:
استيراد إيترتولس
ديف وظيفتي ():
طباعة ("استدعاء الوظيفة")
مكرر_المحاور1 = أدوات التكرار.كرر (وظيفتي ، 3)
2 = أدوات التكرار.كرر (وظيفتي ، 2)
سلسلة = إيترتولس.سلسلة (مكرر_مؤشر 1 ، مكرر_مؤشر 2)
ل _ في المتسلسل_المؤلف:
_()
في هذا المثال ، سيتم استدعاء وظيفة وظيفتي 5 مرات.
توفر مكتبة إيترتولس العديد من الوظائف المفيدة الأخرى التي يمكن استخدامها عند استدعاء وظائف عدة مرات. قد يكون الحل الجيد هو التبديل إلى هذه الوظائف عندما لا تفي أدوات بايثون القياسية بمتطلبات المهمة.
تحسين استدعاء الوظيفة باستخدام الديكور
تتيح لك آلية ديكور بايثون تحسين استدعاء الوظيفة عن طريق إضافة وظائف إضافية إليها. يسمح لك المصممون بإضافة أو تغيير منطق الوظيفة دون تغيير الوظيفة نفسها.
الفكرة الرئيسية للديكور هي كما يلي: وهي عبارة عن غلاف حول وظيفة تسمح لك بتغيير سلوكها قبل وبعد المكالمة. يمكن استخدام الديكور لأغراض مختلفة ، بما في ذلك تحسين مكالمات الوظائف.
مثال بسيط على تحسين استدعاء دالة باستخدام مصمم ديكور:
"`
ديف تيمير_ديكور (فونك):
ديف المجمع (*أرغس ، * * كوارغس):
وقت البدء = الوقت.الوقت()
النتيجة = فونك (*أرغس ، * * كوارغس)
نهاية الوقت = الوقت.الوقت()
طباعة (و"وقت تشغيل وظيفة {ظائف.__ الاسم__}: {وقت الانتهاء — وقت البدء} ثواني")
نتيجة الإرجاع
عودة المجمع
تضمين التغريدة
ديف وظيفتي ():
الوقت.النوم (2)
طباعة ("اكتملت الوظيفة")
وظيفتي()
"`