contextmanager-async سياق async with

آخر تحديث: 2026-09-22

contextmanager-async سياق async with

async with يُستخدم مع مدير سياق غير متزامن: الدخول والخروج كلاهما ينتظران دوال غير متزامنة.

التصنيفالكلمات المفتاحية والعبارات
النوعكلمة مفتاحية / عبارة
إصدار بايثون3.5+

📝 الصياغة

async with expr [as var]:
    block

▶ مثال

عدّل الكود واضغط تشغيل لرؤية النتيجة في لوحة المخرجات:

المخرجات:

Ctx
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qما الفرق بين `async with` و`with` العادية؟
A`async with` مخصص لمديري السياق غير المتزامنين: الدخول والخروج يستخدم `await` على الطريقتين غير المتزامنتين `__aenter__` / `__aexit__`. بينما تستدعي `with` العادية `__enter__` / `__exit__` المتزامنة.
Qهل يمكن كتابة `async with` داخل دالة عادية؟
Aلا. يمكن أن يظهر `async with` فقط داخل دالة `async def`. كتابته في دالة عادية يعطي `SyntaxError: 'async with' outside async function`.
Qكيف يمكن لفئتي الخاصة دعم `async with`؟
Aنفّذ طريقتين غير متزامنتين: `async def __aenter__(self)` تُرجع الكائن المُدخِل، و`async def __aexit__(self, exc_type, exc, tb)` تقوم بالتنظيف. إرجاع `True` من `__aexit__` يبتلع الاستثناء؛ وإرجاع `False` (أو لا شيء) يتركه ينتشر.
Web-Tutorial.com

فريق Web-Tutorial التقني

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

100%