تقنية

nullcontext في بايثون: لا يفوض الدخول إلى الكائن

قيمة الدخول بالغلاف وبالكائن
box هو الكائن، و7 ناتج طريقته. [1] [2]

اختر مدير السياق المقصود. [1] [2]

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

nullcontext(box) يعيد box نفسه عند الدخول؛ لا يشغل طريقتي دخول الكائن وخروجه. [1] [2]

  • داخل الغلاف، value is box يعطي True. [1] [2]
  • بعده، سجل الاستدعاءات يبقى []. [1] [2]
  • الدخول المباشر عبر with box يعطينا 7. [1] [2]
  • المباشر يسجل enter ثم exit؛ قيمة الدخول ليست بالضرورة الكائن. [1] [2]
  • المثال متزامن في 3.12.14، بخروج عادي ودون موارد فعلية. [1] [2]

المثال

from contextlib import nullcontext
events=[]
class Box:
    def __enter__(self):
        events.append("enter")
        return 7
    def __exit__(self,*exc):
        events.append("exit")
box=Box()
with nullcontext(box) as value:
    print(value is box)
print(events)
with box as value:
    print(value)
print(events)

[1] [2]

الناتج: True ثم [] ثم 7 ثم ['enter', 'exit']. [1] [2]

الغلاف

الغلاف يعيد الكائن؛ لا يستدعي Box.__enter__. [1] [2]

الدخول المباشر

في الدخول المباشر، تستدعي with طريقة Box.__enter__ وتربط ناتجها بـvalue؛ ثم تستدعي Box.__exit__ عند الخروج. [1] [2]

عدد استدعاءات طريقتي الكائن
wrapped بالغلاف وdirect بالكائن. [1] [2]

النطاق

خروج عادي؛ الموارد والسياق غير المتزامن خارج المثال. [1] [2]

المراجع

  1. Python: nullcontext
  2. Python: جملة with
  3. موضوع تك: لغة بايثون — مفردات
  4. موضوع تك: تطبيقات بايثون — مفردات

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