أقوم بتشغيل foo.py
من سطر الأوامر ، وهو يتضمن دالة لها حلقة for ، بداخلها دالة تحتوي على عبارة IPython.embed (). هذا لتهيئة مترجم في تلك المرحلة داخل الوظيفة للوصول إلى تلك المتغيرات المحلية.
ومع ذلك ، عند محاولة الهروب من المترجم المضمن ، فإنه يفتح فقط مترجمًا جديدًا (يفترض أنه يصل إلى k مرة للحلقة for) ، مما يؤدي إلى قفل هذا الطرف بشكل فعال.
سيكون من الجيد أن يكون لديك أمر مشابه لـ ipdb
's q
، والذي يطرح على الفور استثناء ويخرج إلى CLI حيث تم تنفيذ foo.py
.
جرب %kill_embedded
- لا ينفصل عن الحلقة الخاصة بك ، ولكن يجب إجراء جميع المكالمات المستقبلية إلى embed()
no-ops ، بحيث يتم تنفيذ باقي النص البرمجي حتى الاكتمال.
سيكون من الجيد أن يكون لديك أمر واحد يوقف تنفيذ البرنامج النصي تمامًا. مثل ما يعادل:
%kill_embedded
(ونعم ، تأكد من ذلك)exit
سيثير %exit_raise
استثناءً في السياق الخارجي وسيتم إنهاء الكود الخاص بك
التعليق الأكثر فائدة
سيكون من الجيد أن يكون لديك أمر واحد يوقف تنفيذ البرنامج النصي تمامًا. مثل ما يعادل:
%kill_embedded
(ونعم ، تأكد من ذلك)exit