callback لا تكبح خطأنا رغم إرجاع دالتنا True؛ push تكبحه في التحكم. [1] [2]
الخلاصة السريعة
لا؛ طريقة التسجيل تؤثر هنا. [1] [2]
- callback لا تكبح خطأنا رغم إرجاع دالتنا True؛ push تكبحه في التحكم. [1] [2]
- في CPython 3.12.14، fn(*args) تسجل عدد الوسائط وتعيد True؛ نرفع RuntimeError داخل with. [1] [2]
- callback(fn) تستدعيها بلا وسائط في مثالنا؛ تصل المعالجة الخارجية: calls=[0] وescaped=True. [1] [2]
- غلاف callback يستدعي دالتنا دون إعادة قيمتها؛ الدالة لا تتلقى تفاصيل الاستثناء. [1] [2]
- تحكم: push(fn) تمرر تفاصيل الاستثناء الثلاثة وتكبحه هنا: calls=[3] وescaped=False؛ دالة متزامنة واحدة فقط. [1] [2]
طريقة التسجيل
callback لا تكبح خطأنا رغم إرجاع دالتنا True؛ push تكبحه في التحكم. [1] [2]
دالة المثال
في CPython 3.12.14، fn(*args) تسجل عدد الوسائط وتعيد True؛ نرفع RuntimeError داخل with. [1] [2]
مع callback
callback(fn) تستدعيها بلا وسائط في مثالنا؛ تصل المعالجة الخارجية: calls=[0] وescaped=True. [1] [2]
from contextlib import ExitStack calls=[] def fn(*args): calls.append(len(args));return True escaped=False try: with ExitStack() as stack: stack.callback(fn) raise RuntimeError("bud") except RuntimeError:escaped=True print(calls,escaped) [1] [2]
![ExitStack; fn returns True; push(fn); RuntimeError in with; calls=[3]; escaped=False](https://images.bahralolom.com/assets/local-2000-20261012/BA-1669/python-exitstack-callback-true-values.png)
الغلاف والتحكم
غلاف callback يستدعي دالتنا دون إعادة قيمتها؛ الدالة لا تتلقى تفاصيل الاستثناء. [1] [2]
calls.clear();escaped=False try: with ExitStack() as stack: stack.push(fn) raise RuntimeError("bud") except RuntimeError:escaped=True print(calls,escaped) [1] [2]
تحكم: push(fn) تمرر تفاصيل الاستثناء الثلاثة وتكبحه هنا: calls=[3] وescaped=False؛ دالة متزامنة واحدة فقط. [1] [2]
المراجع
للتوسع: لغات البرمجة.
أُعدّ هذا المقال بمساعدة الذكاء الاصطناعي، وخضع لمراجعة ذاتية بالأداة نفسها. لا يُنسب إلى مراجع بشري أو خبير مستقل. منهجية المحتوى.
![ExitStack; fn returns True; callback(fn); RuntimeError in with; calls=[0]; escaped=True](https://images.bahralolom.com/assets/local-2000-20261012/BA-1669/python-exitstack-callback-true-main.png)