بصفتك مبرمجًا ، ستجد نفسك غالبًا تقوم بعمل أو مهمة بشكل متكرر. قد يكون هذا مملاً ويستغرق وقتًا طويلاً ، خاصةً عند العمل باستخدام قاعدة تعليمات برمجية كبيرة أو معقدة. يعد التشغيل الآلي للوظائف نهجًا أكثر فاعلية لأداء مثل هذه المهام. تسمح لك الوظائف بكتابة منطق الكود مرة واحدة واستخدامه في أي مكان في برنامجك.
ما هي وظيفة بايثون؟
في Python ، الوظيفة عبارة عن كتلة من التعليمات البرمجية المستخدمة لأداء مهمة محددة. ما عليك سوى كتابة دالة مرة واحدة ، ولكن يمكنك استخدامها عدة مرات في التعليمات البرمجية الخاصة بك. يمكن للدالة أن تأخذ الوسيطات كقيم مدخلات ومخرجات مرتجعة. يعرض هذا البرنامج البسيط وظيفة تحسب مجموع ثلاثة أرقام:
# دالة Python لحساب مجموع ثلاثة أرقام
defاحسب_المجموع(أ ، ب ، ج):
يعود أ + ب + ج
طباعة (calculate_sum (1,2,3)) # إرجاع 6
طباعة (calculate_sum (1000, 300,44)) # إرجاع 1344
طباعة (calculate_sum (12, 4,78)) # تُرجع 94
في البرنامج أعلاه ، ترجع الدالة مجموع ثلاث وسيطات. عندما يتم استدعاء الوظيفة عدة مرات ، فإنها ترجع مخرجات مختلفة لكل حالة. سيكون تطبيق الآلة الحاسبة أحد التطبيقات المفيدة لهذه الوظيفة.
تحديد وظيفة في بايثون
تحتوي لغة Python على العديد من الوظائف المضمنة متاح للمطورين لاستخدامه. ومع ذلك ، فإن هذه الوظائف المدمجة ليست دائمًا كافية لتلبية متطلبات معظم المشاريع. لتلبية الطلبات المخصصة ، عليك تحديد وظائفك المخصصة. يعد تحديد الوظائف المخصصة ممارسة شائعة في البرمجة.
في Python ، يمكنك تحديد وظيفة مخصصة باستخدام ملحق def الكلمة الأساسية متبوعة باسم الوظيفة الخاصة بك مع وجود أقواس أمامها. هنا مثال:
defاسم وظيفة()
يجب أن تأخذ في الاعتبار هذه القواعد عند تعيين اسم وظيفة في بايثون:
- يجب أن تكون أسماء الوظائف بأحرف صغيرة.
- يجب أن تكون أسماء الوظائف وصفية.
- استخدم الشرطات السفلية لفصل الكلمات في اسم الوظيفة.
بعد تحديد الوظيفة ، يجب عليك كتابة المنطق لأداء المهمة المطلوبة. على سبيل المثال ، تحسب هذه الوظيفة مساحة المثلث:
# دالة Python لحساب مساحة المثلث
defحساب منطقة_المثلث(القاعدة ، الارتفاع):
المساحة = (القاعدة * الارتفاع) /2
يعود منطقة
طباعة (calculate_triangle_area (12, 3))
تحدد الوظيفة أعلاه معلمتين: قاعدة و ارتفاع، يقسم منتجهم على اثنين ، ويعيد النتيجة كناتج. يمكنك كتابة أي منطق تريد أن تؤدي وظيفتك.
فهم الحجج الوظيفية
في الأمثلة السابقة ، اتخذت الوظائف وسيطات لتنفيذ الإجراءات. تُعرف الحجج في هذه الأمثلة بالحجج المطلوبة أو الموضعية. في Python ، يمكن أن تكون وسيطاتك أيًا مما يلي:
- الحجج الموضعية
- وسيطات الكلمات الرئيسية
الحجج الموضعية
يجب تمرير الحجج الموضعية بالترتيب الصحيح للتعريف. على سبيل المثال ، إذا قمت بتعريف دالة ذات معلمات أ ، ب، و ج ، يجب عليك تمرير قيم هذه المعلمات وفقًا لذلك عند الاتصال بها. دعونا نفحص مثالًا سابقًا:
# دالة Python لحساب مجموع ثلاثة أرقام
defاحسب_المجموع(أ ، ب ، ج):
يعود أ + ب + ج
طباعة (calculate_sum (1,2,3)) # إرجاع 6
طباعة (calculate_sum (1000, 300,44)) # إرجاع 1344
طباعة (calculate_sum (12, 4,78)) # تُرجع 94
في البرنامج أعلاه ، فإن calculate_sum () تأخذ الدالة ثلاث حجج عندما نسميها. تمثل كل وسيطة معلمة مقابلة. في أول مكالمة دالة ، أرقام 1, 2, و 3 يمثل أ ، ب ، و ج وفقاً لذلك.
يتم التصريح عن المعلمة في تعريف الوظيفة ، بينما الوسيطة هي القيمة التي تم تمريرها عند استدعاء الوظيفة. هذه القيمة هي تمثيل للمعامل المقابل لها.
الحجج الموضعية إلزامية. إذا لم تقم بإضافتها ، فستحصل على خطأ مطبعي. يوضح المثال التالي هذا:
defاحسب_المجموع(أ ، ب ، ج):
يعود أ + ب + ج
طباعة (calculate_sum (1,2)) # يرفع TypeError
عند تشغيل البرنامج أعلاه على جهازك ، سوف تحصل على خطأ مشابه لذلك الموجود في الصورة أدناه:
وسيطات الكلمات الرئيسية
لا يلزم بالضرورة تمرير وسيطات الكلمات الرئيسية عندما تقوم باستدعاء دالة. إنها حجج اختيارية ولا تحتاج إلى اتباع ترتيب معين. تتيح لنا بايثون استخدام ملفات * أرغس و ** كوارز لتحديد وسيطات الكلمات الرئيسية.
بصرف النظر عن استخدام * أرغس و ** kwargs، من الممكن أيضًا تحديد القيم الافتراضية للوسائط الخاصة بك. لن يحدث خطأ إذا نسيت إضافة قيمة عند استدعاء الوظيفة. يقدم هذا المثال توضيحًا:
defاحسب_المجموع(أ ، ب ، ج =3):
يعود أ + ب + ج
طباعة (calculate_sum (1,2)) # إرجاع 6
في البرنامج أعلاه ، متى calculate_sum () يسمى ليس هناك حجة ل ج ؛ هذا لن يؤثر على البرنامج لأن ج بالفعل قيمة افتراضية. يمكنك تحديد القيم الافتراضية لأي عدد تريده من الوسائط ولكن تأكد من القيام بذلك بحكمة.
استخدم الوظائف لتنظيم التعليمات البرمجية الخاصة بك
الوظائف مفيدة لتنظيم التعليمات البرمجية الخاصة بك ، مما يجعلها أكثر سهولة في القراءة وكفاءة. باستخدام الوظائف ، يمكنك تقسيم التعليمات البرمجية إلى أجزاء أصغر قابلة لإعادة الاستخدام يسهل فهمها وصيانتها. بالإضافة إلى ذلك ، إذا كنت بحاجة إلى إجراء تغييرات على التعليمات البرمجية الخاصة بك ، فأنت تحتاج فقط إلى تعديل الوظيفة الضرورية بدلاً من قاعدة التعليمات البرمجية بأكملها.