break لا تنظف مولدنا المحتفظ به؛ aclosing تنظفه عند الخروج. [1] [2]
الخلاصة السريعة
- break لا تنظف مولدنا المحتفظ به؛ aclosing تنظفه عند الخروج. [1] [2]
- في CPython 3.12.14، rows مولد غير متزامن يعطي "bud" ثم "leaf"؛ finally تضيف "closed" للسجل. [1] [2]
- مع aclosing وown_events=[]، نخرج بـbreak بعد "bud"؛ السجل داخل الكتلة [] وبعدها ["closed"]. [1] [2]
- __aexit__ تنتظر اكتمال aclose عند الخروج. [1] [2]
- تحكم بسجل جديد control_events=[] ومولد control=rows(control_events): بعد break يبقى [] حتى await control.aclose(). نحتفظ بالمولد ونفحصه قبل إنهاء الحلقة، بلا موارد فعلية. [1] [2]
التنظيف
break لا تنظف مولدنا المحتفظ به؛ aclosing تنظفه عند الخروج. [1] [2]
المولد
في CPython 3.12.14، rows مولد غير متزامن يعطي "bud" ثم "leaf"؛ finally تضيف "closed" للسجل. [1] [2]
الخروج
مع aclosing وown_events=[]، نخرج بـbreak بعد "bud"؛ السجل داخل الكتلة [] وبعدها ["closed"]. [1] [2]
import asyncio from contextlib import aclosing async def rows(events): try: yield "bud" yield "leaf" finally:events.append("closed") async def own_case(): own_events=[] async with aclosing(rows(own_events)) as own: async for value in own:break print(own_events) print(own_events) asyncio.run(own_case()) [1] [2]
![control=rows(control_events); first:"bud"; break; before:[]; await control.aclose(); after:["closed"]](https://images.bahralolom.com/assets/local-2000-20261012/BA-1740/python-aclosing-break-values.png)
التحكم
__aexit__ تنتظر اكتمال aclose عند الخروج. [1] [2]
async def control_case(): control_events=[];control=rows(control_events) async for value in control:break print(control_events) await control.aclose() print(control_events) asyncio.run(control_case()) [1] [2]
تحكم بسجل جديد control_events=[] ومولد control=rows(control_events): بعد break يبقى [] حتى await control.aclose(). نحتفظ بالمولد ونفحصه قبل إنهاء الحلقة، بلا موارد فعلية. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
![aclosing; own=rows(own_events); first:"bud"; break; inside:[]; after:["closed"]](https://images.bahralolom.com/assets/local-2000-20261012/BA-1740/python-aclosing-break-main.png)