في هذا الموضوع سنشرح الدوال (Function) بالتفصيل في لغة البايثون مع الأمثلة…
هل سبق لك أن شعرت بالحاجة إلى تنظيم الشفرة البرمجية الخاصة بك وجعلها أكثر فهمًا وسهولة في الصيانة؟ هل واجهت تحديًا في إعادة استخدام الأكواد التي كتبتها مرارًا وتكرارًا؟ إذا كانت إجابتك بنعم، فإن الحل السحري يكمن في الدوال (Function)!
تخيل أنك تمتلك أداة قوية تمكنك من تجميع مجموعة من الأوامر المترابطة في وحدة واحدة قابلة للتنفيذ، وبإمكانك استدعاء هذه الوحدة في أي مكان في برنامجك بسهولة ويسر. هذه هي الدوال (Function) في لغة البايثون!
تعتبر الدوال (Function) أحد أدوات البرمجة الأساسية في بايثون، وتساعدك في تحقيق تنظيم أكثر فعالية لشفرتك. بدلاً من تكرار نفس الأكواد مرارًا وتكرارًا، يمكنك بسهولة تجميعها في دوال منفصلة تقوم بتنفيذ مهام محددة وتُرجع نتائجها.
والأفضل من ذلك، يمكنك إنشاء دوال خاصة بك وفقًا لاحتياجاتك الخاصة. فبفضل الدوال (Function) المخصصة، يمكنك إعادة استخدام شفرتك بكل سهولة وتوسيع قدرات برنامجك دون الحاجة للبدء من الصفر في كل مرة.
سواء كنت مبتدئًا في عالم البرمجة أو مطورًا محترفًا، فإن الدوال (Function) ستكون أداة قوية في يدك. ستساعدك في بناء برامج قوية ومنظمة، وتسهل عليك عملية البرمجة الجماعية وتحقيق التعاون المثالي مع فريقك.
استعد لاكتشاف سحر الدوال (Function) في لغة البايثون وكيف يمكن أن تحول شفرتك إلى عمل فني متناغم يسهل حياتك كمطور بشكل لا يصدق!
ما هي الدوال (Function) في لغة البايثون ؟
في لغة البايثون، تعرف الدوال باستخدام الكلمة المحجوزة “def”، متبوعة بالاسم الذي ترغب في تعريف الدالة به، وبين قوسين تحدد المدخلات المطلوبة للدالة. يتم تحديد جسم الدالة بواسطة الإزاحة العمودية (Indentation)، ويمكن أن تحتوي الدالة على بيانات وأوامر منطقية معينة.
صيغة تعريف الدالة في لغة البايثون:
def function_name(input1, input2, ...):
# Function body
# Logical commands
return return_value
حيث:
def
: هذه الكلمة المحجوزة تُستخدم لتحديد بداية تعريف الدالة.function_name
: هذا هو الاسم الذي تختاره للدالة الخاصة بك. يجب أن يتبع قواعد تسمية الدوال في لغة البايثون، مثل البدء بحرف أو شرطة سفلية، وأن يتكون من حروف وأرقام وشرطات سفلية.(input1, input2, ...)
: هذه هي المعاملات أو المدخلات التي تتوقعها الدالة. يمكنك تحديد مدخلات متعددة عن طريق فصلها بفواصل. هذه المدخلات هي متغيرات تحمل القيم التي يتم تمريرها للدالة عند استدعائها.- ”
:
“: هو علامة النقطة والفاصلة التي تشير إلى نهاية سطر تعريف الدالة وبداية جسم الدالة. # Function body
: هذا تعليق يصف هدف الدالة. ليس إلزاميًا ولكن غالبًا ما يُستخدم لتوفير شرح موجز.# Logical commands
: هذه هي البيانات أو الأوامر الفعلية التي تشكل جسم الدالة. يتم ترتيبها بمستوى الإزاحة العمودية (Indentation) للإشارة إلى أنها تنتمي إلى الدالة.return return_value
: في هذا السطر يتم تحديد القيمة التي ستقوم الدالة بإرجاعها بعد تنفيذ الأوامر الخاصة بها. الكلمة المحجوزةreturn
تليها القيمة أو المتغير الذي ترغب في إرجاعه كنتيجة للدالة. إذا كنت لا ترغب في أن تعيد الدالة أي قيمة، يمكنك حذف هذا السطر أو ببساطة استخدامreturn
بدون تحديد قيمة.
الآن دعنا نلقي نظرة على مثال بسيط لتعريف دالة في بايثون:
def greet(name):
message = "Hello, " + name + "!"
print(message)
# Function call
greet("John")
الكود المعطى يتضمن تعريف الدالة greet
واستدعائها. دعنا نشرحه خطوة بخطوة:
def greet(name):
: هذا هو تعريف الدالةgreet
التي تأخذ مدخلًا واحدًا يسمىname
.message = "Hello, " + name + "!":
في جسم الدالة، يتم إنشاء متغيرmessage
وتهيئته بقيمة تتألف من نص ثابت"Hello, "
وقيمة المدخلname
ونص ثابت"!"
. بمعنى آخر، يتم دمج قيمة المدخل مع النص الثابت لإنشاء رسالة التحية.print(message)
: تُستخدم هذه السطر لطباعة قيمة المتغيرmessage
التي تحمل رسالة التحية على الشاشة.greet("John")
: هذا هو استدعاء الدالةgreet
مع تمرير قيمة"John"
كمدخل لها. عند تنفيذ هذا الاستدعاء، تتم طباعة رسالة التحية"Hello, John!"
على الشاشة.
باختصار، الكود يقوم بتعريف دالة تدعى greet
تقوم بتهنئة الشخص المحدد بالاسم الذي يتم تمريره كمدخل، ومن ثم يتم استدعاء الدالة مع اسم "John"
لطباعة رسالة التحية “Hello, John!”.
هذا مثال بسيط يوضح كيفية استخدام الدوال في لغة البايثون لتجميع الأوامر المرتبطة بمهمة معينة داخل وحدة قابلة لإعادة الاستخدام.
أنواع الدوال (Function) في لغة البايثون
في لغة البايثون، هناك عدة أنواع للدوال (Functions) وهي كالتالي:
دوال مُعرفة مسبقًا (Built-in Functions):
دوال مُعرفة مسبقًا (Built-in Functions) هي الدوال التي تأتي مدمجة مع لغة البايثون ويمكنك استخدامها مباشرة دون الحاجة إلى تعريفها. هذه الدوال توفر وظائف مستخدمة بشكل شائع وتسهل عليك القيام بمهام معينة. فيما يلي مثال بسيط يوضح بعض الدوال المعرفة مسبقًا وكيفية استخدامها:
# دالة len()
text = "Hello, world!"
length = len(text)
print(length)
# الناتج: 13
# دالة type()
number = 10
number_type = type(number)
print(number_type)
# الناتج: <class 'int'>
# دالة abs()
number = -5
absolute_value = abs(number)
print(absolute_value)
# الناتج: 5
# دالة max()
numbers = [5, 2, 8, 1, 6]
maximum = max(numbers)
print(maximum)
# الناتج: 8
# دالة min()
numbers = [5, 2, 8, 1, 6]
minimum = min(numbers)
print(minimum)
# الناتج: 1
في هذا المثال، قمنا باستخدام بعض دوال التعامل مع الأعداد في لغة البايثون المعرفة مسبقًا:
- استخدمنا دالة
len()
لحساب طول النصtext
. - استخدمنا دالة
type()
للحصول على نوع المتغيرnumber
. - استخدمنا دالة
abs()
للحصول على القيمة المطلقة للعددnumber
. - استخدمنا دالة
max()
للعثور على القيمة الكبرى في القائمةnumbers
. - استخدمنا دالة
min()
للعثور على القيمة الصغرى في القائمةnumbers
.
هذه الدوال هي أمثلة فقط على العديد من الدوال المعرفة مسبقًا المتاحة في لغة البايثون. يمكنك استكشاف المزيد من هذه الدوال واستخدامها في برامجك حسب الحاجة.
دوال مُعرّفة من قِبل المستخدم (User-Defined Functions):
دوال مُعرّفة من قِبل المستخدم (User-Defined Functions) هي الدوال التي يتم تعريفها بواسطة المستخدم وتستخدم لتنفيذ سلسلة من الأوامر المحددة. يمكنك تعريف دوال خاصة بك لتنفيذ مهام محددة وإعادة القيم بناءً على المدخلات المحددة. إليك شرحًا لكيفية تعريف واستخدام دوال مُعرّفة من قِبل المستخدم في لغة البايثون:
# تعريف الدالة
def greet(name):
greeting = "Hello, " + name + "!"
return greeting
# استدعاء الدالة
message = greet("John")
print(message)
# الناتج: Hello, John!
في هذا المثال، قمنا بتعريف دالة تسمى greet
تأخذ مدخلًا واحدًا يُمثل اسمًا. جسم الدالة ينشئ رسالة تحيّة تحتوي على الاسم المدخل ويُرجعها باستخدام عبارة return
. ثم، قمنا بإستدعاء الدالة وتم تمرير القيمة “John” كمدخل، وتم تخزين الناتج في المتغير message
ومن ثم طباعته.
يمكنك تعريف دوال متعددة واستخدامها في برامجك حسب الحاجة. يساعدك تعريف الدوال المُعرّفة من قِبل المستخدم في تنظيم الشفرة وإعادة استخدام الأكواد في أماكن متعددة بدلاً من إعادة كتابتها مرارًا وتكرارًا.
دوال مُموجة (Lambda Functions):
دوال مُموجة (Lambda Functions) هي دوال صغيرة ومجهولة التي يمكن تعريفها داخل الشفرة في نقطة الاستخدام. تشبه الدوال المُعرّفة من قِبل المستخدم في الوظائف التي تقوم بها، ولكنها تُعرف باستخدام التعبير lambda
بدلاً من def
. تكون الدوال المُموجة عادةً مفيدة عندما تحتاج إلى دالة بسيطة وغير معقدة ولا تحتاج إلى تعريف رسمي لها.
إليك مثال يوضح كيفية استخدام الدوال المُموجة في لغة البايثون:
# تعريف الدالة المُموجة
add_numbers = lambda x, y: x + y
# استدعاء الدالة المُموجة
result = add_numbers(5, 3)
print(result)
# الناتج: 8
في هذا المثال، قمنا بتعريف الدالة المُموجة باستخدام التعبير lambda
. تأخذ الدالة مدخلين x
و y
وتقوم بإرجاع مجموعهما. ثم قمنا بحفظ الدالة المُموجة في المتغير add_numbers
. بعد ذلك، قمنا بإستدعاء الدالة المُموجة وتم تمرير القيمتين 5 و 3 كمدخلات، وتم تخزين الناتج في المتغير result
ومن ثم طباعته.
تُستخدم الدوال المُموجة غالبًا في الحالات التي تتطلب استخدام دالة بسيطة وقصيرة في نقطة محددة من الشفرة ولا تحتاج لتعريف كامل لدالة منفصلة. يمكنك استخدامها في العديد من السياقات، مثل تمريرها كمعامل لدوال أخرى أو استخدامها في عمليات التحويل والفرز والتصفية في القوائم والمصفوفات.
دوال مُسماة (Named Functions):
الدوال المُسماة (Named Functions) هي الدوال التي يتم تعريفها باستخدام الكلمة المفتاحية def
في لغة البايثون وتحتوي على اسم يُعطى لها. تعتبر الدوال المُسماة هي الأسلوب الأكثر استخدامًا وشيوعًا لتعريف الدوال في البايثون.
إليك مثال يوضح كيفية تعريف واستخدام الدوال المُسماة:
# تعريف الدالة المُسماة
def greet(name):
greeting = "Hello, " + name + "!"
print(greeting)
# استدعاء الدالة المُسماة
greet("John")
# الناتج: Hello, John!
في هذا المثال، قمنا بتعريف الدالة المُسماة greet
باستخدام الكلمة المفتاحية def
. تأخذ الدالة مدخلًا واحدًا name
وتنشئ رسالة تحية تحتوي على الاسم المدخل وتطبعها باستخدام الدالة print()
. ثم، قمنا بإستدعاء الدالة المُسماة وتم تمرير القيمة “John” كمدخل، وسيتم طباعة النص “Hello, John!”.
تعتبر الدوال المُسماة مفيدة في العديد من الحالات حيث يكون لديك مهمة معينة تحتاج إلى تكرارها في أجزاء مختلفة من الشفرة. بتعريف الدالة مرة واحدة، يمكنك استخدامها في أي مكان آخر في الشفرة ببساطة بواسطة استدعاء اسم الدالة. تساعد الدوال المُسماة على تنظيم الشفرة وإعادة استخدام الأكواد وجعل الشفرة أكثر قابلية للصيانة والفهم.
هذا والسلام عليكم ورحمة الله وبركاته…
( لا تنسا مشاركة الموضوع ليستفيد غيرك )