القائمة الرئيسية

الصفحات

دورة البرمجة بلغة بايثون - الدرس الخامس عشر (دوال لغة بايثون)

دورة البرمجة بلغة بايثون - الدرس الخامس عشر (دوال لغة بايثون)

دورة البرمجة بلغة بايثون - الدرس الخامس عشر (دوال لغة بايثون)
في هذه المقالة ، ستتعرف على الوظائف ، وما هي الوظيفة ، وبناء الجملة ، والمكونات ، وأنواع الوظائف. ستتعلم أيضًا إنشاء الدوال في بايثون.

ما هي الدالة في بايثون؟
في بايثون ، الدالة هي مجموعة من العبارات ذات الصلة التي تؤدي مهمة محددة.

تساعد الوظائف في تقسيم برنامجنا إلى أجزاء أصغر وأجزاء معيارية. مع نمو برنامجنا بشكل أكبر وأكبر ، فإن الوظائف تجعله أكثر تنظيماً وقابلية للإدارة.

علاوة على ذلك ، نتجنب التكرار ويجعل الكود قابلاً لإعادة الاستخدام.

سياق جملة الدالة
def function_name(parameters):
 """docstring"""
 statement(s)

الموضح أعلاه هو تعريف دالة تتكون من المكونات التالية:
  • الكلمة المفتاحية def التي تشير إلى بداية هيدر الدالة.
  • اسم الدالة لتعريف الدالة بشكل فريد. تتبع تسمية الدوال نفس قواعد كتابة المعرفات في بايثون.
  • الباراميتر (الوسائط) التي من خلالها نمرر القيم إلى دالة. وهي اختيارية.
  • نقطتان (:) لتحديد نهاية هيدر الوظيفة.
  • سلسلة نصوص توثيقية (docstring) لوصف وظيفة الدالة.
  • واحد أو أكثر من عبارات بيثون الصالحة التي تشكل بودي أو جسم لوظيفة. يجب أن تحتوي العبارات على نفس مستوى المسافة البادئة (عادةً 4 مسافات).
  • عبارة إرجاع اختيارية لإرجاع قيمة من الدالة.


مثال على دالة
def greet(name):
    """
    This function greets to
    the person passed in as
    a parameter
    """
    print("Hello, " + name + ". Good morning!")

كيف تستدعي دالة في بايثون؟
بمجرد تحديد وظيفة ، يمكننا تسميتها من وظيفة أو برنامج آخر أو حتى من موجه بايثون. لاستدعاء دالة ، نقوم ببساطة بكتابة اسم الوظيفة مع البارامتيرز المناسبة.

>>> greet('Paul')
Hello, Paul. Good morning!

ملاحظة: حاول تشغيل الكود أعلاه في برنامج بايثون مع تعريف الدالة التي تريد لرؤية النتيجة.

def greet(name):
    """
    This function greets to
    the person passed in as
    a parameter
    """
    print("Hello, " + name + ". Good morning!")

greet('Paul')


سلسلة النصوص التوثيقية
تسمى السلسلة الأولى بعد هيدر الدالة سلسلة نصوص توثيقية وهي اختصار لكلمتي documentation string. يتم استخدامه لشرح وظيفة الدالة.

على الرغم من أنها اختيارية ، إلا أنه يعد ممارسة برمجية جيدة. اذا لم تكن تتذكر ما تناولته على العشاء الأسبوع الماضي ، فقم دائمًا بتوثيق الكود الخاص بك.

في المثال أعلاه ، لدينا سلسلة نصية توثيقية أسفل هيدر الدالة مباشرة. نستخدم بشكل عام علامات الاقتباس الثلاثية بحيث يمكن أن تمتد السلسلة إلى أسطر متعددة. هذه السلسلة متاحة لنا كسمة __doc__ للدالة.

فمثلا:

حاول تشغيل ما يلي في برنامج مفسر البايثون لترى النتائج.

>>> print(greet.__doc__)

    This function greets to
    the person passed in as
    a parameter

جملة الارجاع return
تُستخدم تعليمة الإرجاع للخروج من دالة والعودة إلى المكان الذي تم استدعاءها منه.

بناء جملة الارجاع
return [expression_list]

يمكن أن تحتوي هذه العبارة على تعبير يتم تقييمه وإرجاع القيمة. إذا لم يكن هناك تعبير في الجملة أو إذا كانت عبارة الإرجاع نفسها غير موجودة داخل دالة ، فإن الدالة ستعيد الكائن none.

فمثلا:
>>> print(greet("May"))
Hello, May. Good morning!
None

هنا ، none هي القيمة التي يتم إرجاعها منذ أن تقوم دالة ()great بطباعة الاسم مباشرة ولا يتم استخدام عبارة return.

مثال على جملة الارجاع
def absolute_value(num):
    """This function returns the absolute
    value of the entered number"""

    if num >= 0:
        return num
    else:
        return -num


print(absolute_value(2))

print(absolute_value(-4))

الناتج:
2
4

كيف تعمل الدالة في بايثون؟
كيف تعمل الدالة في بايثون؟


نطاق المتغيرات وعمرها
نطاق المتغير هو جزء البرنامج حيث يتم التعرف على المتغير. لا يمكن رؤية الباراميتر والمتغيرات المحددة داخل دالة من خارج الدالة. وبالتالي ، لديهم نطاق محلي.

عمر المتغير هو الفترة التي ينتهي فيها عمر المتغير في الذاكرة. عمر المتغيرات داخل الدالة هو ما دام يتم تنفيذ الوظيفة.

يتم تدمير المتغيرات بمجرد عودتنا من الدالة . ومن ثم ، لا تتذكر الوظيفة قيمة متغير من استدعاءاتها السابقة.

هذا مثال لتوضيح نطاق متغير داخل دالة.
def my_func():
 x = 10
 print("Value inside function:",x)

x = 20
my_func()
print("Value outside function:",x)

الناتج
Value inside function: 10
Value outside function: 20

هنا ، نلاحظ أن قيمة x تساوي 20 في البداية. على الرغم من أن الدالة ()my_func  قد غيرت قيمة x إلى 10 ، إلا أنها لم تؤثر على القيمة خارج الدالة.

هذا لأن المتغير x داخل الدالة مختلف (محلي بالنسبة للوظيفة) عن المتغير الموجود بالخارج. على الرغم من أنهما يحملان نفس الأسماء ، إلا أنهما متغيرين مختلفين لهما نطاقات مختلفة.

من ناحية أخرى ، يمكن رؤية المتغيرات خارج الوظيفة من الداخل. حيث لديها نطاق عالمي.

يمكننا قراءة هذه القيم من داخل الدالة ولكن لا يمكننا تغييرها (كتابتها). من أجل تعديل قيمة المتغيرات خارج الوظيفة ، يجب الإعلان عنها كمتغيرات عالمية باستخدام الكلمة الأساسية global.

أنواع الدوال
في الأساس ، يمكننا تقسيم الدوال إلى النوعين التاليين:
  • الوظائف المدمجة - الوظائف المضمنة في لغة بايثون.
  • وظائف يحددها المستخدم - الوظائف التي يحددها المستخدمون أنفسهم.



reaction:

تعليقات