الكورس

Advertisements

الدوال فى بايثون | (Python Functions (def


سنناقش فى هذا الفصل الدوال فى بايثون | Python Functions، ستتعرف على الدوال وكيفية استخدامها والتعامل معها، مع بعض الأمثلة التوضيحية.


 

الدوال فى بايثون | Python Functions

 

الدوال أو الوظائف (functions) عبارة عن مجموعة من التعليمات البرمجية المنظمة والقابلة لإعادة الاستخدام التي يتم استخدامها لتنفيذ إجراء واحد ذي صلة.

تمنحك Python العديد من الدوال الـ built in مثل ()print و ()len وما إلى ذلك. لكن ماذا لو تريد إنشاء دالة بنفسك لعمل مهمة معينة؟

يمكنك إنشاء دوال خاصة، تسمى ‘defined functions‘ وهى الدوال التى يتم إنشائها من قبل المستخدم.

 


 

إنشاء دالة فى بايثون

 

فيما يلي بعض القواعد البسيطة لإنشاء دالة في Python:

  1. تبدأ الدالة بالكلمة الأساسية def.
  2. متبوعة باسم الدالة لتعريف الوظيفة بشكل فريد.
  3. ثم قوسين مستديرين () لنمرر القيم (parameters أو arguments) إلى الدالة من خلالها.
  4. نقطتان (:) لتحديد نهاية رأس الدالة.
  5. ثم البدأ بكتابة العبارات البرمجية (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", "[email protected]", "Male"]

userInfo(allUserInfo)
Hamed
[email protected]
Male

 

Return Values

 

لإرجاع قيمة للدالة، استخدم عبارة أو كلمة return، كالتالى:

def sum(num1, num2):
  return num1 + num2

print(sum(10, 2)) # outputs: 12

 

Pass Statement

 

لا يمكن أن تكون تعريفات الدوال فارغة ، ولكن إذا كان لديك لسبب ما تعريف للدالة بدون محتوى ، ضع عبارة أو كلمة pass لتجنب الحصول على خطأ، كالتالى:

def myFunc():
    pass


الإبلاغ عن خطأ

×

إذا وجد خطأ وتريد الإبلاغ عن هذا الخطأ، أو إذا كنت تريد تقديم اقتراح على شىء معين، فلا تتردد في إرسال بريد إلكتروني إلينا:

[email protected]

شكرًا لك على مساعدتك لنا!

Advertisements