تقنية

ContextVar في بايثون: هل يضيف default قيمة إلى السياق؟

افتراضي المتغير D لا يضيف ربطًا إلى Context فارغ
لا ربط. [1] [2]

افصل الافتراضي عن القيمة المسندة. [1] [2]

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

لا؛ default لا يجعل المتغير عضوًا في السياق الفارغ. [1] [2]

  • c.run(v.get) يعيد D. [1] [2]
  • c.get(v) يعيد None. [1] [2]
  • v in c يعطي False؛ c[v] يرفع KeyError. [1] [2]
  • بعد إسناد D صراحة تصبح العضوية True. [1] [2]
  • اختبرنا 3.12.14؛ بلا خيوط أو مهام. [1] [2]

المثال

from contextvars import (
 ContextVar, Context)
v=ContextVar("bud",default="D")
c=Context()
print(c.run(v.get))
print(c.get(v))
print(v in c)
try:
 print(c[v])
except KeyError:
 print("KeyError")
c.run(v.set,"D")
print(v in c,c[v])

[1] [2]

طريقان للبحث

المصدر يرجع افتراضي المتغير عند غياب الربط عبر v.get. خريطة السياق تبحث عن الربط نفسه؛ c.get له افتراضي مستقل. المخرجات: D، None، False، KeyError، True D. [1] [2]

إسناد D يجعل المتغير عضوًا ويتيح فهرسة السياق
ربط موجود. [1] [2]

قيمة واحدة وحالتان

قد يعيد المتغير D قبل الإسناد وبعده؛ العضوية تميز وجود الربط. [1] [2]

المراجع

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

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

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