detach من TextIOWrapper تفصل المخزن الثنائي وتعيده؛ يصبح الغلاف النصي غير قابل للاستخدام. [1]
الخلاصة السريعة
لا؛ مخزننا يبقى مفتوحًا هنا. [1]
- detach من TextIOWrapper تفصل المخزن الثنائي وتعيده؛ يصبح الغلاف النصي غير قابل للاستخدام. [1]
- على CPython 3.12.14، raw مخزن BytesIO يحوي b"bud"؛ نغلفه نصيًا بترميز utf-8. [1]
- بعد الفصل، detached هو raw نفسه؛ الاختباران يطبعان True False: الكائن نفسه، وغير مغلق. [1]
- text.write("leaf") ترفع ValueError؛ فشل الغلاف لا يعني إغلاق المخزن المنفصل. [1]
- ننتقل لنهاية detached ونضيف b"leaf"، فنحصل على b"budleaf". تحكم بغلاف جديد: close تغلق مخزنه. التجربة في الذاكرة فقط. [1]
الغلاف والمخزن
detach من TextIOWrapper تفصل المخزن الثنائي وتعيده؛ يصبح الغلاف النصي غير قابل للاستخدام. [1]
كائن في الذاكرة
على CPython 3.12.14، raw مخزن BytesIO يحوي b"bud"؛ نغلفه نصيًا بترميز utf-8. [1]
حالة الغلاف
بعد الفصل، detached هو raw نفسه؛ الاختباران يطبعان True False: الكائن نفسه، وغير مغلق. [1]
import io raw=io.BytesIO(b"bud") text=io.TextIOWrapper(raw,encoding="utf-8") detached=text.detach() print(detached is raw,detached.closed) try: text.write("leaf") except ValueError: print("ValueError") [1]

المخزن والتحكم
text.write("leaf") ترفع ValueError؛ فشل الغلاف لا يعني إغلاق المخزن المنفصل. [1]
detached.seek(0,2) detached.write(b"leaf") print(detached.getvalue()) direct=io.BytesIO() control=io.TextIOWrapper(direct,encoding="utf-8") control.close() print(direct.closed) [1]
ننتقل لنهاية detached ونضيف b"leaf"، فنحصل على b"budleaf". تحكم بغلاف جديد: close تغلق مخزنه. التجربة في الذاكرة فقط. [1]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
