الدوال فى بايثون | (Python Functions (def
سنناقش فى هذا الفصل الدوال فى بايثون | Python Functions، ستتعرف على الدوال وكيفية استخدامها والتعامل معها، مع بعض الأمثلة التوضيحية.
الدوال فى بايثون | Python Functions
الدوال أو الوظائف (functions) عبارة عن مجموعة من التعليمات البرمجية المنظمة والقابلة لإعادة الاستخدام التي يتم استخدامها لتنفيذ إجراء واحد ذي صلة.
تمنحك Python العديد من الدوال الـ built in مثل ()print و ()len وما إلى ذلك. لكن ماذا لو تريد إنشاء دالة بنفسك لعمل مهمة معينة؟
يمكنك إنشاء دوال خاصة، تسمى ‘defined functions‘ وهى الدوال التى يتم إنشائها من قبل المستخدم.
إنشاء دالة فى بايثون
فيما يلي بعض القواعد البسيطة لإنشاء دالة في Python:
- تبدأ الدالة بالكلمة الأساسية def.
- متبوعة باسم الدالة لتعريف الوظيفة بشكل فريد.
- ثم قوسين مستديرين () لنمرر القيم (parameters أو arguments) إلى الدالة من خلالها.
- نقطتان (:) لتحديد نهاية رأس الدالة.
- ثم البدأ بكتابة العبارات البرمجية (statements) التي تشكل جسم الوظيفة. يجب أن تحتوي العبارات على نفس مستوى المسافة البادئة.
بناء جملة الدالة | Syntax of Function
def functionName(parameters): # statement(s)
مثال للتوضيح:
def sayHello(): print("Hello")
إذا قُمت بتشغيل الكود السابق، لن تظهر لك اى مخرجات بسبب عدم إستدعاء الدالة، لذلك يجب عليك إستدعاء الدالة لتشغيلها.
إستدعاء الدالة | Calling a Function
لاستدعاء دالة، استخدم اسم الدالة متبوعة بأقواس () بداخلها قيم للـ parameters إن وجدت، كالتالى:
def sayHello(): print("Hello") sayHello()
Hello
Parameters/Arguments
يمكن تمرير المعلومات إلى الدالة كـ arguments أو parameters.
يتم وضع الـ parameters بعد اسم الدالة، داخل الأقواس (). يمكنك إضافة العديد من الـ parameters كما تريد ، فقط افصل بينها بفاصلة ( , ). كالتالى:
def printMyName(firstName, secondName): print("My first name is: " + firstName + " & second name is: " + secondName) printMyName("Hamed", "Esam")
My first name is: Hamed & second name is: Esam
بشكل افتراضي ، يجب استدعاء دالة بعدد الـ parameters الصحيحة، وهذا يعني أنه إذا كانت دالتك تتوقع (two parameters)، فيجب عليك استدعاء الدالة باستخدام (two parameters)، ليس أكثر ولا أقل.
إذا قُمت بإستدعاء الدالة السابقة بدون تمرير بيانات أو بيانات ناقصة أو زيادة، فستحصل على خطأ، كالتالى:
# --- First example --- def printMyName(firstName, secondName): print("My first name is: " + firstName + " & second name is: " + secondName) printMyName() # outputs: TypeError: printMyName() missing 2 required positional arguments # --- Second example --- def printMyName(firstName, secondName): print("My first name is: " + firstName + " & second name is: " + secondName) printMyName("Hamed") # outputs: TypeError: printMyName() missing 1 required positional arguments # --- Third example --- def printMyName(firstName, secondName): print("My first name is: " + firstName + " & second name is: " + secondName) printMyName("Hamed", "Esam", "Mohamed") # outputs: TypeError: printMyName() takes 2 positional arguments but 3 were given
لتجنب المشاكل السابقة، تابع ما يلى.
(Arbitrary Arguments (*args
إذا كنت لا تعرف عدد arguments/parameters التي سيتم تمريرها إلى الدالة ، فأضف علامة * قبل اسم الـ parameter في تعريف الدالة.
بهذه الطريقة ستتلقى الدالة مجموعة من الـ arguments، ويمكنها الوصول إلى العناصر وفقًا لذلك، كالتالى:
def printNames(*names): print(names) printNames("Mohamed", "Ahmed", "Ali", "Noor")
('Mohamed', 'Ahmed', 'Ali', 'Noor')
Keyword Arguments
ترتبط الـ arguments بالكلمات الرئيسية باستدعاءات الدوال. عند استخدام هذه الـ arguments مع الكلمات الرئيسية في استدعاء دالة ، يحدد الإستدعاء الـ arguments بواسطة اسم الـ argument.
يسمح لك هذا بتخطي الـ arguments أو وضعها خارج الترتيب لأن مترجم Python قادر على استخدام الكلمات الرئيسية المتوفرة لمطابقة القيم بالـ arguments.
لإرسال arguments استخدام صيغة key = value. كالتالى:
def printFullName(f_name, s_name): print("My Full Name is " + f_name + " " + s_name) printFullName(f_name = "Ahmed", s_name = "Mohamed")
My Full Name is Ahmed Mohamed
(Arbitrary Keyword Arguments (**kwargs
إذا كنت لا تعرف عدد الـ arguments للكلمات الرئيسية التي سيتم تمريرها إلى دالتك، فأضف نجمتين ** قبل اسم الـ parameter في تعريف الدالة.
بهذه الطريقة ستتلقى الدالة قاموسًا للـ arguments، كالتالى:
def printFullName(**full_name): print("My Full Name is " + full_name['f_name'] + " " + full_name['s_name']) printFullName(f_name = "Ahmed", s_name = "Mohamed")
My Full Name is Ahmed Mohamed
القيم الإفتراضية | Default Parameter Value
Default parameter هي قيمة افتراضية تفترض إذا لم يتم توفير قيمة لتلك parameter في استدعاء الدالة.
إذا قمنا باستدعاء الدالة بدون وسيطة ، فإنها تستخدم القيمة الافتراضية، كالتالى:
def myName(name = "Hamed"): print(name) myName() # outputs: Hamed myName("Ahmed") # outputs: Ahmed
كيفية تمرير مجموعة من البيانات داخل الدالة؟
يمكنك إرسال أي نوع من أنواع البيانات إلى الدالة ( set أو list أو dictionary …إلخ) ، وسيتم التعامل معها كنوع البيانات نفسه داخل الدالة. كالتالى:
def userInfo(informations): for info in informations: print(info) allUserInfo = ["Hamed", "hamed@gmail.com", "Male"] userInfo(allUserInfo)
Hamed hamed@gmail.com Male
Return Values
لإرجاع قيمة للدالة، استخدم عبارة أو كلمة return، كالتالى:
def sum(num1, num2): return num1 + num2 print(sum(10, 2)) # outputs: 12
Pass Statement
لا يمكن أن تكون تعريفات الدوال فارغة ، ولكن إذا كان لديك لسبب ما تعريف للدالة بدون محتوى ، ضع عبارة أو كلمة pass لتجنب الحصول على خطأ، كالتالى:
def myFunc(): pass
الإبلاغ عن خطأ
×إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:
info@albashmoparmeg.com
شكرًا لك على مساعدتك لنا!