Ipython: لا يمكن الهروب من IPython.embed () عند استدعائه بشكل متكرر داخل الوظيفة داخل حلقة for-loop

تم إنشاؤها على ٢٠ يناير ٢٠١٦  ·  3تعليقات  ·  مصدر: ipython/ipython

أقوم بتشغيل foo.py من سطر الأوامر ، وهو يتضمن دالة لها حلقة for ، بداخلها دالة تحتوي على عبارة IPython.embed (). هذا لتهيئة مترجم في تلك المرحلة داخل الوظيفة للوصول إلى تلك المتغيرات المحلية.

ومع ذلك ، عند محاولة الهروب من المترجم المضمن ، فإنه يفتح فقط مترجمًا جديدًا (يفترض أنه يصل إلى k مرة للحلقة for) ، مما يؤدي إلى قفل هذا الطرف بشكل فعال.

سيكون من الجيد أن يكون لديك أمر مشابه لـ ipdb 's q ، والذي يطرح على الفور استثناء ويخرج إلى CLI حيث تم تنفيذ foo.py .

التعليق الأكثر فائدة

سيكون من الجيد أن يكون لديك أمر واحد يوقف تنفيذ البرنامج النصي تمامًا. مثل ما يعادل:

  1. %kill_embedded (ونعم ، تأكد من ذلك)
  2. exit
  3. "ctrl + c" (ثلاث مرات)

ال 3 كومينتر

جرب %kill_embedded - لا ينفصل عن الحلقة الخاصة بك ، ولكن يجب إجراء جميع المكالمات المستقبلية إلى embed() no-ops ، بحيث يتم تنفيذ باقي النص البرمجي حتى الاكتمال.

سيكون من الجيد أن يكون لديك أمر واحد يوقف تنفيذ البرنامج النصي تمامًا. مثل ما يعادل:

  1. %kill_embedded (ونعم ، تأكد من ذلك)
  2. exit
  3. "ctrl + c" (ثلاث مرات)

سيثير %exit_raise استثناءً في السياق الخارجي وسيتم إنهاء الكود الخاص بك

هل كانت هذه الصفحة مفيدة؟
0 / 5 - 0 التقييمات