تقنية

Context.run في بايثون: هل يدخل السياق نفسه مرتين داخل الاستدعاء؟

رفض ثم استعمال
تفسير توضيحي [1] [2]

ميز الدخول المتداخل من الاستعمال المتتابع. [1] [2]

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

لا؛ السياق النشط يرفض الدخول إلى نفسه. [1] [2]

  • أنشأنا سياقًا واحدًا c. [1] [2]
  • يدخل outer السياق عبر run. [1] [2]
  • الدخول المتداخل إلى c يرفع RuntimeError. [1] [2]
  • بعد الخروج، يعيد c.run(inner) قيمة bud. [1] [2]
  • اختبرنا 3.12.14 في خيط واحد. [1] [2]

المثال

أنشأنا سياقًا واحدًا c. يدخل outer السياق عبر run. [1] [2]

from contextvars import Context
c=Context()
def inner():return "bud"
def outer():
 try:c.run(inner)
 except RuntimeError:print("RuntimeError")
c.run(outer)
print(c.run(inner))

[1] [2]

دخول مرفوض

الدخول المتداخل إلى c يرفع RuntimeError. [1] [2]

الدالة inner لا تُنفذ في الاستدعاء المرفوض. [1] [2]

استعمال لاحق

بعد الخروج، يعيد c.run(inner) قيمة bud. [1] [2]

النتيجة: RuntimeError ثم bud. [1] [2]

ضبط سياق آخر
تفسير توضيحي [1] [2]

سياقان مختلفان يسمحان بالتداخل في ضبطنا المستقل. [1] [2]

النطاق

اختبرنا 3.12.14 في خيط واحد. [1] [2]

المراجع

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

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

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