أساسيات الدوال في بايثون
الدوال هي حجر الأساس لأي برنامج مكتوب بلغة بايثون. فهي تسمح بتنظيم الكود، وتجنب التكرار، وإنشاء حلول معيارية قابلة لإعادة الاستخدام.
يواجه العديد من المبتدئين وحتى المطورين ذوي الخبرة أسئلة مهمة عند العمل مع دوال بايثون. كيف يتم تمرير الوسيطات إلى الدالة بشكل صحيح؟ ما هي المتغيرات العامة وكيفية التعامل معها؟ لماذا نحتاج إلى الديكوراتورات وكيفية استخدام global؟ كيف يتم إرجاع قيم متعددة من دالة؟
تعريف وتركيب دوال بايثون
ما هي الدالة في بايثون
الدالة هي كتلة مسماة من الكود يمكن استدعاؤها بشكل متكرر. يتم إنشاء الدوال في بايثون باستخدام الكلمة المفتاحية def.
تعريف واستدعاء الدوال
يتم تعريف الدالة على النحو التالي:
def greet():
print("مرحباً بالعالم!")
يتم استدعاء الدالة باستخدام اسمها:
greet()
يمكن أن تحتوي دوال بايثون على تعليمات مختلفة، وعبارات شرطية، وحلقات تكرار، وبنى لغوية أخرى. يساعد التعريف الصحيح للدوال في إنشاء كود قابل للقراءة ومنظم.
وسيطات الدوال في بايثون
الوسيطات الموضعية
يتم تمرير الوسيطات الموضعية إلى الدالة بنفس الترتيب الذي تم تعريفها به:
def greet(name):
print(f"مرحباً، {name}!")
greet("سارة")
عند استخدام الوسيطات الموضعية، من المهم الحفاظ على الترتيب الصحيح لتمرير المعاملات.
الوسيطات الافتراضية
تسمح الوسيطات الافتراضية بتعيين قيم للمعاملات سيتم استخدامها إذا لم يتم تمرير وسيطة:
def greet(name="ضيف"):
print(f"مرحباً، {name}!")
greet() # مرحباً، ضيف!
استخدام الوسيطات الافتراضية يزيد من مرونة الدوال ويقلل من عدد المعاملات الإلزامية.
الوسيطات المفتاحية
يتم تمرير الوسيطات المفتاحية مع تحديد اسم المعامل:
def order(item, quantity):
print(f"لقد طلبت {quantity} {item}")
order(item="بيتزا", quantity=2)
الوسيطات المفتاحية تجعل الكود أكثر قابلية للقراءة وتسمح بتمرير المعاملات بأي ترتيب.
عدد متغير من الوسيطات
تدعم بايثون تمرير عدد غير محدد من الوسيطات من خلال *args و **kwargs:
def summation(*args):
print(sum(args))
summation(1, 2, 3, 4) # 10
def print_info(**kwargs):
for key, value in kwargs.items():
print(f"{key}: {value}")
print_info(name="أحمد", age=30)
التركيب *args يقبل أي عدد من الوسيطات الموضعية. التركيب **kwargs يقبل أي عدد من الوسيطات المفتاحية.
إرجاع القيم من دوال بايثون
أساسيات تعليمة return
يمكن للدوال إرجاع النتائج من خلال تعليمة return. هذا يسمح باستخدام نتيجة عمل الدالة في أجزاء أخرى من البرنامج:
def add(a, b):
return a + b
result = add(5, 3)
print(result) # 8
تعليمة return تنهي تنفيذ الدالة وتعيد التحكم إلى مكان استدعائها.
إرجاع قيم متعددة
تسمح بايثون بإرجاع قيم متعددة في وقت واحد:
def get_coordinates():
return 10, 20
x, y = get_coordinates()
من الناحية الفنية، تقوم بايثون بإرجاع tuple، والذي يمكن بعد ذلك فك حزمته إلى متغيرات منفصلة. هذه طريقة ملائمة للحصول على نتائج متعددة من دالة واحدة.
خصائص العمل مع return
إذا كانت الدالة لا تحتوي على تعليمة return، فإنها تقوم تلقائياً بإرجاع None. من المهم تذكر أن أي كود بعد return لن يتم تنفيذه.