تقنية

Signature.bind في بايثون: أين القيم الافتراضية؟

خريطة x فقط
الربط. [1] [2]

نجاح الربط لا يعني ظهور كل قيمة افتراضية. [1] [2]

الخلاصة السريعة

bind يحتفظ بالممرر صراحة؛ apply_defaults يكمل القيم الافتراضية. [1] [2]

  • عرفنا tag بافتراضي bud. [1] [2]
  • مررنا 7 للمعامل x فقط. [1] [2]
  • بعد bind يظهر x دون tag. [1] [2]
  • بعد apply_defaults يظهر tag بقيمته. [1] [2]
  • اختبرنا 3.12.14؛ جسم الدالة لم يستدع. [1] [2]

المثال

from inspect import signature
def own(x,tag='bud'):
    pass
ba=signature(own).bind(7)
print(ba.arguments)
ba.apply_defaults()
print(ba.arguments)

[1] [2]

الربط والإكمال

المصدر هنا يكمل خريطة الربط. الناتج أولًا {'x': 7}، ثم {'x': 7, 'tag': 'bud'}. الافتراضي موجود في توقيع الدالة؛ غيابه من الخريطة الأولى لا يعني فقدانه. [1] [2]

خريطة x وtag
الإكمال. [1] [2]

النطاق

نفحص دالة عادية مؤلفة، ولا نستدعيها. الربط يفحص توافق الوسائط مع التوقيع؛ ليس تحققًا من أنواع القيم أو نجاح التنفيذ. إذا مررنا tag صراحة، فلا يستبدله الإكمال. [1] [2]

المراجع

  1. Python 3.12: Signature and BoundArguments
  2. CPython 3.12.14: inspect.py
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

للتوسع: بحث عن لغات البرمجة

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