تقنية

partial في بايثون: وسيط الكلمة المفتاحية قابل للتجاوز

تجاوز b دون تغيير المحفوظ
العودة إلى b المحفوظ. [1] [2]

وسيط الكلمة المفتاحية ليس قيدًا ثابتًا. [1] [2]

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

مع partial، وسيط الكلمة المفتاحية في الاستدعاء يتقدم على المحفوظ. [1] [2]

  • f(b=3) يعطي (4,3) بدل (4,10). [1] [2]
  • الاستدعاء التالي f() يعود إلى (4,10) في مثالنا. [1] [2]
  • f(a=7) يكرر a المحفوظ بالموضع؛ يرفع TypeError. [1] [2]
  • g=partial(pair,4)؛ يضيف g(3) العدد 3 بعد 4، فيعطي (4,3). [1] [2]
  • أعداد صحيحة في 3.12.14؛ دون تغيير خصائص f. [1] [2]

المثال

from functools import partial
def pair(a,b): return a,b
f=partial(pair,4,b=10)
print(f())
print(f(b=3))
print(f())
try:
    f(a=7)
except TypeError:
    print("conflict")

[1] [2]

الناتج: (4, 10)؛ (4, 3)؛ (4, 10)؛ conflict. [1] [2]

التفسير

b محفوظ بالكلمة المفتاحية؛ b الجديد يتجاوزه لهذا الاستدعاء فقط. [1] [2]

المقارنة

أما f(a=7)، فيمرر a مرتين: 4 بالموضع و7 بالاسم. الخطأ من تعارض الربط، لا من استبدال 4. [1] [2]

في g=partial(pair,4)، الاستدعاء g(3) يعطي (4,3)؛ 3 يضاف بعد 4. [1] [2]

تكرار a خطأ؛ الوسيط الجديد لـg ينجح
موضع محفوظ يختلف عن كلمة مفتاحية. [1] [2]

النطاق

أعداد صحيحة في 3.12.14؛ دون تعديل خصائص partial. [1] [2]

المراجع

  1. Python: partial ووسائط الاستدعاء
  2. CPython 3.12.14: نموذج partial
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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