0Pricing
Python Academy · درس

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

استخدم القيم الافتراضية للمعاملات وصياغة الاستدعاء بالوسائط المسماة

الوسائط الافتراضية والمسماة درس مجاني في Python Academy على CoddyKit. هذا هو الدرس 2 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Python Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Python Academy 4 دروس في المجموع.

مقدمة

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

القيم الافتراضية للمعطيات

تمنح `def greet(name, greeting='Hello'):` قيمة افتراضية للمعطى greeting. ويمكن للمستدعين حذفه.
def greet(name, greeting='Hello'):
    print(f'{greeting}, {name}!')
greet('Alice')
greet('Bob', 'Hi')

المعطيات المسماة

استدعوا الدالة باستخدام الأسماء: `greet(name='Alice', greeting='Hi')`. ولا يهم الترتيب عند استخدام المعطيات المسماة.
def describe(name, age, city):
    print(f'{name}, {age}, {city}')
describe(age=30, city='NYC', name='Alice')

الخلط بين المعطيات الموضعية والمسماة

يجب أن تسبق المعطيات الموضعية المعطيات المسماة في الاستدعاء. وتُعد `describe('Alice', city='NYC', age=30)` صيغة صحيحة.
def f(a, b, c='default'):
    print(a, b, c)
f(1, c='X', b=2)

مشكلة القيمة الافتراضية القابلة للتغيير

لا تستخدموا القيم الافتراضية القابلة للتغيير مطلقًا: تشارك `def f(lst=[])` القائمة نفسها بين جميع الاستدعاءات. استخدموا بدلًا منها `def f(lst=None): lst = lst or []`.
def append(x, lst=None):
    if lst is None:
        lst = []
    lst.append(x)
    return lst
print(append(1))
print(append(2))

المعطيات التي لا تُمرَّر إلا بالاسم

يجب استدعاء المعطيات التي تأتي بعد * بالاسم: في `def f(a, *, b):` لا يمكن تمرير b موضعيًا. وهذا يفرض وضوحًا أكبر.
def f(a, *, b):
    return a + b
print(f(1, b=2))

المعطيات الموضعية فقط (3.8 فأحدث)

يجب تمرير المعطيات التي تسبق / موضعيًا: في `def f(a, b, /, c):` لا يمكن استدعاء a وb بالاسم.
def f(a, b, /, c=0):
    return a + b + c
print(f(1, 2, c=3))

**kwargs

تجمع `def f(**kwargs)` المعطيات المسماة الإضافية في dict. ويفيد ذلك في تمرير الخيارات إلى دالة أخرى.
def show(**kwargs):
    for k, v in kwargs.items():
        print(f'{k}={v}')
show(name='Alice', age=30)

الجمع بين *args و**kwargs

تقبل `def f(*args, **kwargs)` أي مجموعة من المعطيات الموضعية والمسماة.
def debug(*args, **kwargs):
    print('args:', args)
    print('kwargs:', kwargs)
debug(1,2,x=3)

فك الحزم في الاستدعاءات

ينشر `f(*[1,2,3])` عناصر قائمة على هيئة معطيات موضعية. وينشر `f(**{'a':1})` عناصر قاموس على هيئة معطيات مسماة.
def add(a, b, c): return a+b+c
d = {'a':1,'b':2,'c':3}
print(add(**d))

التطبيق الجزئي

يثبّت `from functools import partial; double = partial(pow, exp=2)` بعض المعطيات مسبقًا.
from functools import partial
def power(base, exp): return base ** exp
square = partial(power, exp=2)
print(square(5))

تحقق سريع

ما خطر استخدام معطى افتراضي قابل للتغيير مثل `def f(lst=[])`؟

مراجعة

المعطيات الافتراضية: `def f(x=val)`. والاستدعاءات المسماة: `f(x=val)`. تجنبوا القيم الافتراضية القابلة للتغيير. استخدموا * للمعطيات التي لا تُمرَّر إلا بالاسم، و/ للمعطيات الموضعية فقط، و**kwargs لجمع المعطيات الإضافية.

تابعوا التقدم

أحسنتم! انتقلوا إلى الدرس التالي لمواصلة تقدمكم.

الأسئلة الشائعة

هل درس «الوسائط الافتراضية والمسماة» مجاني؟

نعم — نص درس «الوسائط الافتراضية والمسماة» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Python Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Python Academy 4 دروس في المجموع.

ماذا ستتعلم في «الوسائط الافتراضية والمسماة»؟

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

هل أحتاج إلى خبرة سابقة لأبدأ Python Academy؟

لا تُشترط خبرة سابقة. Python Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 2 من أصل 4.

كم من الوقت يستغرق درس «الوسائط الافتراضية والمسماة»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Python Academy هذا؟

نعم. كل درس في Python Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. تعريف الدوال واستدعاؤها
  2. الوسائط الافتراضية والمسماة
  3. args وkwargs
  4. القيم المُعادة ونطاق الرؤية
← العودة إلى Python Academy