recent
أخبار ساخنة

الدوال في لغة بايثون 9

AM VIIP
الصفحة الرئيسية
الدوال في لغة بايثون 9

 الدوال في بايثون

الدالة ( Function ) تكون عبارة عن مجموعة من الأوامر مجمَّعة في مكان واحد و تتنفذ عندما نقوم بإستدعائها, و هي دالة نضعها بأنفسنا تسهل لنا كثير من العمل في بايثون وجميع لغات البرمجة لها دوال لأن الكود الذي نكتبه اكثر من مرة نضع له دالة تنفذ لنا هذا الكود حسب طلبنا ( يكون وظيفتها الأساسية تنفيذ الكود لنا ) ربما يكون لدينا كود يتضمن اكثر من 30 سطر و لا نريد كتابته كل مرة نضع دالة تنفذ لنا هذا الكود, إن لغة بايثون بها الكثير من الدوا الجاهزة التي إستخدمناها في الدروس السابقة مثل (print, max, min, clear).


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

  1. لا ينفع بداية اسم الدالة برقم مثل (5,8,8,2,8).
  2. لا ينفع بداية اسمها برمز مثل (#,$,@).
  3. لا ينفع تقسيم الدالة لكلمتين او اكثر مثل (ahmed kaissar) و إنما نفصلها باندرسكور _.

تعريف دالة جديدة في بايثون

def functionname():
    function_suite

حيث أن:

  • كلمة def هي لتعريف دالة جديدة.
  • كلمة functionname: نقوم بوضع في مكانها الإسم الذي نعطيه للدالة و الذي من خلاله يمكننا إستدعاءها.
  • القوسين (): بداخل القوسين نقوم بوضع باراميترات و يجب أن تضع نقطتين : مباشرتاً بعد القوسين و ثم تنزل على سطر جديد لكتابة الأوامر التي سوف تتنفذ عند إستدعاء الدالة.
  • و function_suite: هي الأوامر التي سوف نضعها في الدالة و التي تتنفذ عند إستدعائها.

تنبيه هام

في أثناء إستخدام الدوال أنت مُجبَر على وضع 4 مسافات فارغة أي الضغط على زر tab قبل الأوامر التي سوف تضعها في الدالة من أجل أن يعرف مفسّر لغة بايثون أن هذه الأوامر موجودة في داخل الدالة, و لأجل الترتيب و كتابة الكود كما يفعل باقي المبرمجين قم بإضافة سطرين فارغين بعد تعريف الدالة.

مثال

def ahmed_kaissar (name ="kaissar")

في هذه الحالة  name يسمى بارميتر و kaissar يسمى ارجيومنت.

مثال

>>>def info ():
    print("muhammad alush")
    print("data")
>>>info()
muhammad alush
data

كما لآحظنا في المثال وضعنا دالة إسمها info و اعطيناها مهام طباعة سطرين, وعندما إستدعينا الدالة بإسمها ()info طَبَعَ لنا ما بداخل هذه الدالة, حيث أن أمر التشغيل كان info() وسوف تكون النتيجة عند التشغيل بالشكل.

muhammad alush
data

مثال

>>>def info (name,age) :
    print ("your name is {0} and your age is {1}".format(name,age))
>>>info ("data","26")

هنا قمنا بإنشاء دالة إسمها info و بها باراميترين name و age و قمنا بترتيب طباعة البيانات بإسلوب format, و بعد ذلك قمنا بإستدعاء الدالة و تمرير لها قيم للباراميترات.

و عندما نقوم بتشغيل الكود السابق سوف نحصل على النتيجة

your name is data and your age is 26

مثال

def get_sum(c, s):
    return c + s;
db = get_sum(26, 28)
print(db)

قمنا بإنشاء دالة إسمها get_sum و بها باراميترين و هما c و s ثم قلنا أن هذه الدالة تقوم بإرجاع ناتج جمع عددين و هما c و s, بعد ذلك أنشأنا متغير db و عييننا له انه يساوي إسم الدالة و مررنا له القيم بواسطة هذا المتغير و هي 26 و 28.

ثم بعد ذلك قمنا بتشغيل أمر الطباعة لطباعة ما تحمله هذه الدالة و كانت النتيجة جمع العددين و سوف يعطينا النتيجة.

54


وضع قيم إفتراضية للباراميترات في دوال بايثون

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

def print_language(language='France'):
    print('Your language is:', language)
print_language()
print_language('Arabic')

أنشأنا دالة إسمها print_language و يمكن تمرير قيمة عند الباراميتر language أو يمكن أن لا نمرر أي قيمة لأنه يملك قيمة إفتراضية وهي الفرنسية.

ثم قمنا بإستدعاء الدالة print_language بإسمها ثم قمنا مرة ثانية بإستدعاءها مع تمرير قيمة ثانية وهي العربية أي سوف تصبح قيمته العربية, و عند التشغيل سنحصل على النتيجة:

Your language is: France
Your language is: Arabic


تعريف دوال بأسلوب Lambda

في حال كنت تريد أن تعرّف دالة تتألف من سطر واحد فقط و تقوم بإرجاع قيمة عندما يتم إستدعائها يمكنك تعريفها كـ دالة مجهولة Anonymous Function و عندها تستخدم الكلمة lambda لتعريفها و ليس الكلمة def.

الشكل العام لتعريف دالة بأسلوب Lambda في بايثون

lambda [arg1 [,arg2,.....argn]]:expression

حيث أن:

كلمة lambda من أجل تعريف دالة جديدة ليس لها إسم.

و [arg1 [,arg2,.....argn]]: هي الباراميترات التي يمكنك وضعها للدالة مع الإشارة إلى أنه يجب وضع فاصلة بين كل باراميترين.

و :expression: هو الأمر الذي سوف يرجّع القيمة عندما تتنفذ الدالة مع الإشارة إلى أنه يجب وضع نقطتين : و هو أمر إجباري.

عندما نقوم بتعريف دالة مجهولة Anonymous Function فأننا نقوم بتعريف دالة ليس لها إسم, و بما أنه لا يمكن إستدعاء دالة إلا من خلال مناداتها عن طريق إسمها, فالحل هنا هو أن تشير للدالة بإسم متغير, أي تقوم بتعريف متغير و تجعله يساوي = الدالة التي قمت في تعريفها و عندها سوف يتم إعتبار إسم المتغير هو إسم الدالة الذي من خلاله يمكن مناداتها.

 مثال

resulting = lambda price, tax: price - tax
print(resulting(2022, 1994))

قمنا بتعريف دالة مجهولة Anonymous Function و عمل هذه الدالة عندما يتم إستدعائها نمرر لها عددين وسوف ترجّع ناتج طرح العدد الأول من العدد الثاني, و قمنا بإسناد الدالة إلى كائن إسمه resulting حتى نستطيع مناداته من خلالها.

و عندما نقوم بالضغط على زر إدخال نحصل على النتيجة:

28
google-playkhamsatmostaqltradent