English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
في هذا المقال، ستتعرف على الدوال، ما هي الدوال، نموذج الدوال، مكوناتها وأنواعها. بالإضافة إلى ذلك، ستتعلم كيفية إنشاء الدوال باستخدام Python.
في Python، الدالة هي مجموعة من الأوامر التي تنفذ مهمة معينة.
تساعد الدوال في تقسيم برنامجنا إلى وحدات أصغر. كلما زاد مشروعنا، أصبحت الدوال أكثر تنظيمًا وسهولة في الإدارة.
إلى جانب ذلك، يمنع هذا من كتابة نفس الكود مرارًا وتكرارًا، مما يجعل الكود قابلاً للتكرار. تجعل الدوال الكود قابلًا للتكرار.
defُ اسم الدالة(الإعدادات): """docstring""" الاستatement(s)
ما يظهر أعلاه هو مكونات تعريف الدالة.
كلمة المفتاح def لبدء رأس الدالة.
اسم الدالة يستخدم لتحديد وظيفة الدالة بشكل فريد. يتبع اسم الدالةكتابة المعرّف في Pythonالنفسيةالقواعد.
المعامل، الذين يتم من خلالهم إرسال القيم إلى الدالة. هم اختياريون.
الشق (:) يحدد نهاية رأس الدالة.
نص توثيق اختياري (docstring)، يستخدم لتوثيق وظيفة الدالة.
إحدى أو أكثر من أوامر Python الصالحة التي تشكل جسم الدالة. يجب أن تكون الأوامر لها نفس مستوى التشعيب (عادة 4 مسافات).
جملة return الاختيارية، تستخدم لإرجاع قيمة من الدالة.
def greet(name): """ هذه هي دالة معاينة، من خلال إرسال اسمه كمعامل name، اسم الشخص الذي نريد أن نهنئه """ print("Hello, " + name + ". Good morning!")
بعد تعريف الدالة، يمكننا طلبها من دالة أخرى، برنامج، أو حتى من واجهة Python shell. لإجراء نداء للدالة، نكتب فقط اسم الدالة مع المعاملات المناسبة.
>>> greet('Paul') مرحبًا، بول. صباحًا خيرًا!
ملاحظة:حاول تشغيل الكود التالي في برنامج Python يحتوي على تعريف الدالة لرؤية الناتج.
def greet(name): """ هذه هي دالة معاينة، من خلال إرسال اسمه كمعامل name، اسم الشخص الذي نريد أن نهنئه """ print("Hello, " + name + ". Good morning!") greet('Paul')
السطر الأول بعد رأس الدالة يسمى docstring، وهو اختصار لتسمية Docstrings. يوضح بسيطًا وظيفة الدالة.
على الرغم من أنه إختياري، إلا أن التدوين هو عادة ممارسة جيدة للبرمجة. تأكد من تدوين تعليقاتك على الكود الخاص بك، إلا إذا كنت تتذكر وقت العشاء وتناولك للعشاء في نفس اليوم من السنة الماضية.
في المثال السابق، لدينا نص مرجعي تحت علامة التعجب في أسفل رأس الدالة. نحن نستخدم عادة ثلاثة أسهم لتمديد نص المرجع على صفحات متعددة. يمكن استخدام هذا النص كخصائص __doc__ للدالة.
مثالًا::
حاول تشغيل المحتوى التالي في بيئة Python shell لرؤية الناتج.
>>> print(greet.__doc__) هذه هي دالة معاينة، من خلال إرسال اسمه كمعامل name، اسم الشخص الذي نريد أن نهنئه
للحصول على معلومات إضافية حول Docstrings في Python، يرجى زيارةPython Docstrings.
استخدام جملة return للخروج من الدالة وإرجاع إلى مكان النداء للدالة.
return [expression_list]
يمكن أن تحتوي هذه الجملة على تعبير، والذي سيتم حسابه وإرجاع قيمته. إذا لم يكن هناك تعبير في هذه الجملة، أو لم تكن جملة return موجودة داخل الدالة، فإن الدالة سترجع كائن None.
مثالًا:
>>> print(greet("May")) مرحبًا، ماي. صباحًا خيرًا! لا شيء
لا شيء هو القيمة المقدمة، لأن دالة greet() تقوم بطباعة الاسم مباشرة وليس هناك استخدام لجملة return.
def absolute_value(num): """هذه الوظيفة تعود القيمة المطلقة للرقم المدخل""" if num >= 0: return num else: return -num print(absolute_value(2)) print(absolute_value(-4))
نتيجة الاصدار
2 4
نطاق المتغير هو الجزء من البرنامج الذي يمكن فيه التعرف على المتغير. لا يمكن رؤية المعلمات والمتغيرات المحددة داخل الوظيفة من الخارج. لذلك، لديها نطاق محلي.
حياة المتغير هي وقت انسحاب المتغير من الذاكرة. حياة المتغير داخل الوظيفة تساوي وقت تنفيذ الوظيفة.
بمجرد أن نعود من الدالة، سيتم تدميرها. لذلك، لا يمكن للوظيفة تذكر قيمة المتغيرات في استدعاءاتها السابقة.
هذا مثال يوضح حياة المتغيرات داخل الوظيفة.
def my_func(): x = 10 print("القيمة داخل الوظيفة:", x) x = 20 my_func() print("القيمة خارج الوظيفة:", x)
نتيجة الاصدار
القيمة داخل الوظيفة: 10 القيمة خارج الوظيفة: 20
في هذا المكان، يمكننا رؤيةxالقيمة الابتدائية له 20. حتى لو قام الدالة my_func() بتغييرxتُغير إلى 10، فإنها لن تؤثر على قيمة المتغير خارج الوظيفة.
هذا لأن قيمة المتغير في داخل الوظيفةx معالمتغير x خارج الوظيفة مختلفلكنها متغيران مختلفان لهما نطاق مختلف.
من ناحية أخرى، يمكن رؤية المتغيرات خارج الوظيفة. لديها نطاق عالمي، أي يمكن استخدام المتغيرات العالمية في الداخل والخارج.
يمكننا قراءة هذه القيم من داخل الوظيفة، لكننا لا نستطيع تعديلها (كتابة). إذا أردنا تعديل قيمة المتغير خارج الوظيفة، يجب استخدام الكلمة المفتاحية global، وبيانها كمتغيرات عالمية.
في الأساس، يمكننا تصنيف الوظائف إلى نوعين رئيسيين: