Python Tutorials

إتقان وسيطات الدوال في بايثون

Spread the love

تُعدُّ الدوال حجر الزاوية في كتابة أكواد بايثون النمطية القابلة لإعادة الاستخدام. يتناول هذا البرنامج التعليمي تفاصيل وِسائط الدوال، مُزوِّدًا إيَّاكَ بالمعرفة اللازمة لكتابة برامج أنظف وأكثر كفاءة وأقل عرضة للأخطاء.

محتويات

الوسائط الوضعية

الوسائط الوضعية هي أبسط أشكال الوسائط. يتم تمريرها إلى دالة بالترتيب الذي تم تعريفها به. يتم فرض الترتيب بصرامة؛ حيث إن عدم تطابق ترتيب الوسائط أثناء استدعاء الدالة سيؤدي إلى نتائج غير صحيحة أو أخطاء.


def greet(name, greeting):
  print(f"{greeting}, {name}!")

greet("Alice", "Hello")  # ترتيب صحيح
greet("Hello", "Alice")  # ترتيب خاطئ - سيُطبع "Alice, Hello!"

الوسائط المفتاحية

تتيح لك الوسائط المفتاحية تحديد اسم الوسيطة عند استدعاء دالة. هذا يجعل كودك أكثر قابلية للقراءة وأقل عرضة للأخطاء، خاصة عند التعامل مع الدوال التي تحتوي على العديد من المعلمات. لا يهم ترتيب الوسائط المفتاحية.


def describe_pet(animal_type, pet_name, age=None):
  print(f"nI have a {animal_type}.")
  print(f"My {animal_type}'s name is {pet_name.title()}.")
  if age:
    print(f"My {animal_type} is {age} years old.")

describe_pet(animal_type='hamster', pet_name='harry')
describe_pet(pet_name='willie', animal_type='dog', age=5)

الوسائط الافتراضية

توفر الوسائط الافتراضية قيمة احتياطية لمعلمات الدالة. إذا لم يتم توفير قيمة عند استدعاء الدالة، فسيتم استخدام القيمة الافتراضية. يجب دائمًا وضع الوسائط الافتراضية بعد الوسائط غير الافتراضية في تعريف الدالة.


def power(base, exponent=2):
  return base ** exponent

print(power(3))      # الإخراج: 9 (الأس الافتراضي هو 2)
print(power(3, 3))  # الإخراج: 27

عدد متغير من الوسائط (*args و **kwargs)

يسمح لك بناء الجملة `*args` و `**kwargs` بالتعامل مع عدد متغير من الوسائط الوضعية والمفتاحية، على التوالي. يجمع `*args` الوسائط الوضعية في عنصر tuple، بينما يجمع `**kwargs` الوسائط المفتاحية في قاموس.


def my_function(*args, **kwargs):
    print("Positional arguments:", args)
    print("Keyword arguments:", kwargs)

my_function(1, 2, 3, name="Alice", age=30)

الوسائط القابلة للتغيير مقابل الوسائط غير القابلة للتغيير

إن فهم قابلية التغيير أمر بالغ الأهمية عند العمل مع وسائط الدوال. لا يمكن تغيير الكائنات غير القابلة للتغيير (مثل الأرقام، والسلاسل، و tuples) داخل دالة؛ حيث إن أي تغييرات تُنشئ كائنًا جديدًا. يمكن تعديل الكائنات القابلة للتغيير (مثل القوائم، والقاموس) في مكانها، مما يؤثر على الكائن الأصلي خارج الدالة. قد يؤدي هذا إلى آثار جانبية غير متوقعة إذا لم يتم التعامل معه بعناية.


def modify_list(my_list):
  my_list.append(4)  # يُعدِّل القائمة الأصلية

my_list = [1, 2, 3]
modify_list(my_list)
print(my_list)  # الإخراج: [1, 2, 3, 4] (تم تعديل القائمة الأصلية)


def modify_string(my_string):
    my_string += "!!!"  # يُنشئ سلسلة جديدة

my_string = "Hello"
modify_string(my_string)
print(my_string)  # الإخراج: Hello (السلسلة الأصلية لم تتغير)

يوفر هذا الدليل الشامل أساسًا متينًا للعمل مع وسائط الدوال في بايثون. إن إتقان هذه المفاهيم سيعزز بشكل كبير جودة وصيانة كودك.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *