تقنية

contextvars في بايثون: أي قيمة يعيد رمز set القديم؟

الرمز الأول يعيد الافتراضي هنا
مثال مؤلف. [1] [2]

نختبر رمزًا مؤلفًا قبل تعديل ثانٍ. [1] [2]

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

يعيد reset(t) الحالة قبل set الذي أنشأ t، لا آخر تعديل تلقائيًا. [1] [2]

  • يطبع مثالنا D، وليس A. [1] [2]
  • نشأ t عند تعيين A؛ لم توجد قيمة قبله في السياق. [1] [2]
  • التعيين اللاحق لـB لا يغير الحالة المحفوظة في t. [1] [2]
  • حفظ رمز تعيين B وإعادته يعطي A بدلًا من ذلك. [1] [2]
  • اختبرنا 3.12.14 في سياق واحد لكل حالة؛ الرمز نفسه لا يُستعمل مرتين. [1] [2]

المثال

from contextvars import ContextVar
v=ContextVar("own",default="D")
t=v.set("A")
v.set("B")
v.reset(t)
print(v.get())

[1] [2]

الحالة والافتراضي

قبل الإسناد الأول لا توجد قيمة في السياق؛ لذلك يلغي الرمز القديم الربط، ويعيد get الافتراضي D. لو سبق A ربط بقيمة P، يعيد الرمز P؛ ليس reset أمرًا يعيد الافتراضي دائمًا. [1] [2]

الرمز الأحدث يعيد A
رمز تعيين B. [1] [2]

الحدود

يجب أن يخص الرمز المتغير والسياق نفسيهما. المثال لا يختبر نقل الرموز بين خيوط أو مهام، ولا يستخدمها كمدير سياق. [1] [2]

المراجع

  1. Python: ContextVar.reset والرموز
  2. CPython3.12.14: context.c
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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