الكورس

Advertisements

Python Functions


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

كما تعلم، تمنحك Python العديد من functions المضمنة مثل ()print، وما إلى ذلك ، ولكن يمكنك أيضًا إنشاء functions خاصة [ تسمى هذه الـ functions بـ الوظائف المعرفة ‘defined functions’ من قبل المستخدم.

💡 يمكنك تمرير البيانات ، المعروفة باسم الـ parameters، إلى الـ function + يمكن للـ function إرجاع البيانات نتيجة لذلك.


 

Create Function

 

فيما يلي بعض القواعد البسيطة لتعريف function في Python:

  1. تبدأ الـ functions بالكلمة الأساسية def متبوعة باسم الـ function والأقواس [ () ].
  2. يجب وضع أي parameters أو arguments إدخال ضمن هذه الأقواس.
  3. يبدأ مقطع التعليمات البرمجية في كل function بعلامة النقطتين (:) ويكون هنلك مسافة بادئة.

 

مثال للتوضيح:

def print_name():
  print("My Name Mohamed.")

 

Calling a Function

 

لاستدعاء function، استخدم [اسم الوظيفة function name متبوعًا بأقواس ()]، كالتالى:

def print_name():
  print("My Name Mohamed.")

print_name()

 

Arguments

 

يمكن تمرير المعلومات إلى الـ functions كـ arguments.

يتم تحديد الـ arguments بعد اسم الـ functions، داخل الأقواس + يمكنك إضافة العديد من الـ arguments كما تريد ، فقط افصل بينها بفاصلة ( , ).

مثال للتوضيح:

def print_name(name):
  print(name)

print_name("Ahmed")

فى المثال السابق يحتوي تم إنشاء function بإسم ‘print_name’ وُقمت بكتابة argument واحدة بإسم ‘name’ ، وعندما يتم استدعاء الـ function، نقوم بتمرير الاسم، والذي يتم استخدامه داخل الـ function لطباعة الاسم.

💡 غالبًا ما يتم اختصار الـ arguments الموجوده داخل الأقواس في وثائق Python.


 

Number of Arguments

 

بشكل افتراضي ، يجب استدعاء دالة بعدد الـ arguments الصحيحة، وهذا يعني أنه إذا كانت وظيفتك تتوقع وسيطتين (two arguments)، فيجب عليك استدعاء الدالة باستخدام وسيطتين (two arguments)، ليس أكثر ولا أقل.

 

مثال للتوضيح:

def print_full_name(f_name, l_name):
  print(f_name + " " + l_name)

print_full_name("Ahmed", "Mohamed")

لوحاولت تستدعى الـ function باستخدام وسيطة 1 أو أكتر من 2  ، فستحصل على خطأ:

# Error
def print_full_name(f_name, l_name):
  print(f_name + " " + l_name)

print_full_name("Ahmed")

# Error
def print_full_name(f_name, l_name):
  print(f_name + " " + l_name)

print_full_name("Ahmed", "Mohamed", "Hmaed")

لتجنب المشكلة السابقة يمكنك إستخدام 👇👇

[Arbitrary Arguments [*args

 

إذا كنت لا تعرف عدد الوسيطات arguments التي سيتم تمريرها إلى الدالة ، فأضف * قبل اسم الـ parameters في تعريف الـ function.

بهذه الطريقة ستتلقى الـ function مجموعة من الـ arguments، ويمكنها الوصول إلى العناصر وفقًا لذلك، كالتالى:

def print_names(*names):
  print(names)

print_names("Ahmed", "Hamed", "Amin")

💡 غالبًا ما يتم اختصار الـ arguments إلى args* في وثائق Python.


 

Default Parameter Value

 

Default parameter (الوسيطة الافتراضية) هي الوسيطة التي تفترض قيمة افتراضية إذا لم يتم توفير قيمة في استدعاء دالة لتلك الوسيطة.

إذا قمنا باستدعاء الدالة بدون وسيطة ، فإنها تستخدم القيمة الافتراضية، كالتالى:

def print_name(name = "Hamed"):
  print("My name is " + name)

print_name("Ahmed") # output = My name is Ahmed
print_name() # output = My name is Hamed

 

Keyword Arguments

 

ترتبط الـ arguments بالكلمات الرئيسية باستدعاءات الدوال + عند استخدام هذه الـ arguments مع الكلمات الرئيسية في استدعاء دالة ، يحدد المتصل الـ arguments بواسطة اسم الـ parameter.

يسمح لك هذا بتخطي الـ arguments أو وضعها خارج الترتيب لأن مترجم Python قادر على استخدام الكلمات الرئيسية المتوفرة لمطابقة القيم بالـ arguments.

لإرسال arguments استخدام صيغة key = value.

 

مثال للتوضيح:

def print_full_name(f_name, s_name):
  print("Name is " + s_name)

print_full_name(f_name = "Ahmed", s_name = "Adham")

 

[Arbitrary Keyword Arguments [**kwargs

 

إذا كنت لا تعرف عدد وسيطات arguments الكلمات الرئيسية التي سيتم تمريرها إلى وظيفتك function، فأضف نجمتين [ ** ] قبل اسم الـ parameter في تعريف الوظيفة function.

بهذه الطريقة ستتلقى الدالة قاموسًا للـ arguments، ويمكنها الوصول إلى العناصر، كالتالى:

def print_full_name(**full_name):
  print("Name is " + full_name['f_name'])

print_full_name(f_name = "Ahmed", s_name = "Adham")

 

Passing a List as an Argument

 

يمكنك إرسال أي نوع من أنواع البيانات الخاصة بالـ argument إلى دالة (string، number ، list، dictionary ، إلخ) ، وسيتم التعامل معها كنوع البيانات نفسه داخل function.

على سبيل المثال إذا قمت بإرسال list كوسيطة argument ، فستظل list لحد ما تصل إلى الوظيفة، كالتالى:

def user_info(informations):
  for info in informations:
     print(info)

all_user_info = ["Hamed", 30, "[email protected]"]

user_info(all_user_info)

 

Return Values

 

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

def calc(num):
  return 2 * num

print(calc(10))

 

pass] Statement]

 

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

def my_func():
  pass

 

Python Recursion

 

Recursion هي عملية تحديد شيء ما في حد ذاته، هذا له فائدة من أنه يمكنك تكرار البيانات للوصول إلى نتيجة.

في بايثون ، نعلم أن الدالة يمكنها استدعاء functions أخرى، حتى أنه من الممكن للـ function أن تطلق على نفسها وتسمى هذه الأنواع من البناء بوظائف الـ Recursion.

بصفتك مطور لازم تكون حذرًا جدًا في عملية الـ Recursion حيث يمكن أن يكون من السهل جدًا كتابة function لا تنتهي أبدًا ، أو function تستخدم كميات زائدة من الذاكرة، ومع ذلك عند كتابة Recursion  بشكل صحيح يمكن أن يكون نهجًا فعالًا للغاية وأنيقًا رياضيًا للبرمجة.

 

مثال للتوضيح:

def factorial(z):
   """This is a recursive function
   to find the factorial of an integer"""

   if z == 1:
     return 1
   else:
     return(z * factorial(z-1))

num = 3
print("The factorial of", num, "is", factorial(num))

 

💡 مميزات وظائف Recursion:

  1. الوظائف العودية تجعل الكود يبدو نظيفًا وأنيقًا.
  2. يمكن تقسيم المهمة المعقدة إلى مشاكل فرعية أبسط باستخدامها.
  3. إنشاء التسلسل أسهل مع Recursion من استخدام بعض التكرار المتداخل.

 

💡 عيوب وظائف Recursion:

  1. في بعض الأحيان يكون من الصعب متابعة المنطق وراء Recursion.
  2. إستدعائات Recursion غير فعالة لأنها تستهلك الكثير من الذاكرة والوقت.
  3. من الصعب تصحيح الوظائف الـ Recursion.

 

💡 بالنسبة ليك كمطور جديد ، قد يستغرق الأمر بعض الوقت لمعرفة كيفية عمل الـ Recursion بالضبط ، وأفضل طريقة لمعرفة ذلك هي عن طريق التدريب وعمل يعض tasks بيها.


 

💡 الزتونة

 

  1. الـ functions (الوظائف): عبارة عن مجموعة من التعليمات البرمجية المنظمة والقابلة لإعادة الاستخدام التي يتم استخدامها لتنفيذ إجراء واحد ذي صلة.
  2. تبدأ الـ functions بالكلمة الأساسية def متبوعة باسم الـ function والأقواس [ () ].
  3. لاستدعاء function، استخدم [اسم الوظيفة function name متبوعًا بأقواس ()].
  4. يمكن تمرير المعلومات إلى الـ functions كـ arguments.
  5. إذا كنت لا تعرف عدد الوسيطات arguments التي سيتم تمريرها إلى الدالة ، فأضف * قبل اسم الـ parameters في تعريف الـ function.
  6. Default parameter (الوسيطة الافتراضية) هي الوسيطة التي تفترض قيمة افتراضية إذا لم يتم توفير قيمة في استدعاء دالة لتلك الوسيطة.
  7. لإرسال arguments استخدام صيغة key = value.
  8. إذا كنت لا تعرف عدد وسيطات arguments الكلمات الرئيسية التي سيتم تمريرها إلى وظيفتك function، فأضف نجمتين [ ** ] قبل اسم الـ parameter في تعريف الوظيفة function.
  9. للسماح لـ function بإرجاع قيمة ، استخدم عبارة أو كلمة Return.
  10. يمكن استخدام الـ parameters وarguments لنفس الشيء ( المعلومات التي يتم تمريرها إلى الـ function).
  11. parameter (المعلمة) هي المتغير المذكور داخل الأقواس في تعريف الوظيفة.
  12. argument (الوسيطة) هي القيمة التي يتم إرسالها إلى الدالة عندما يتم استدعاؤها.

 



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

×

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

[email protected]

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

Advertisements