with إدارة السياق

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

with إدارة السياق

عبارة with تستدعي __enter__ / __exit__ لمدير السياق عند الدخول إلى كتلة الشيفرة والخروج منها؛ تُستخدم غالبًا للملفات/الأقفال/الاتصالات.

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

📝 الصياغة

with expr [as target]:
    block

▶ مثال

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

المخرجات:

closed: True
💡 تلميح with أوضح من try/finally، وهي الطريقة الموصى بها رسميًا لإدارة الموارد.
المزيد من الحالات قادم قريباً — تابعونا.

❓ أسئلة شائعة

Qبعد فتح ملف بـ `with`، هل ما زلت بحاجة إلى إغلاقه يدويًا؟
Aلا. يستدعي `with` تلقائيًا `close()` الخاص بالملف (عبر `__exit__`) عند مغادرة الكتلة، حتى لو أُثير استثناء في منتصف الطريق. هذه هي الطريقة الموصى بها رسميًا لإدارة الموارد.
Qهل يمكن لـ `with` إدارة عدة موارد مرة واحدة؟
Aنعم. تتيح بايثون 3.10+ كتابة `with (open(a) as f1, open(b) as f2):`. على الإصدارات الأقدم استخدم `with` المتداخلة، أو أدر الموارد ديناميكيًا عبر `contextlib.ExitStack`.
Qهل يبقى متغير `as` بعد `with` قابلًا للاستخدام خارج الكتلة؟
Aالاسم المتغير ما زال متاحًا (بايثون بلا نطاق على مستوى الكتلة)، لكن المورد أُغلق بالفعل. على سبيل المثال، قراءة أو كتابة ملف خارج `with` يُحدث `ValueError: I/O operation on closed file`.
Web-Tutorial.com

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

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

100%