Czy w Pythonie można wprowadzać zmiany w kodzie, który jest obecnie debugowany i kontynuować bez ponownego uruchamiania wszystkiego? (Sposób mogę w C#, na przykład).Czy w środowisku Python obsługiwane są opcje edycji i kontynuowania?
Odpowiedz
Masz pełną moc tłumacza w zasięgu ręki z pdb
użyć
import pdb
pdb.set_trace()
Stamtąd można definiować i tworzyć nowe obiekty, przedefiniować istniejące te, modyfikuj i ładuj moduły itp. Składnia jest podobna do gdb
. Jeśli korzystasz z ipython, lepszym wyborem może być ipdb
lub możesz automatycznie wywołać debuggera za pomocą funkcji magii ipython %debug
.
Możesz podać nowe wartości imionom, ale wciąż mogą istnieć miejsca odnoszące się do starej wartości. Sprawdź sesji poniżej w powłoce Pythona:
>>> def foo(): print 'Foo'
...
>>> bar = foo
>>>
>>> foo()
Foo
>>> bar()
Foo
>>>
>>> def foo(): print 'Bar'
...
>>> foo()
Bar
>>> bar()
Foo
>>>
>>> def call(): foo()
...
>>> call()
Bar
>>>
>>>
>>> def foo(): print 'Foo reloaded!'
...
>>>
>>> foo()
Foo reloaded!
>>> bar()
Foo
>>>
>>> call()
Foo reloaded!
>>>
Funkcja call
odnosi się do nowego foo
, ale bar
została przypisana wartość starego foo
i że nie zmienia się, kiedy ponownie użyć nazwy foo
.
Czy prosiłeś o wsparcie redaktora? Python-mode in Emacs może uruchomić "gorszy proces python", do którego możesz wysyłać bloki kodu podczas grania z nimi. Lub możesz to zrobić bezpośrednio w powłoce Pythona, jak pokazano powyżej.
- 1. Projekty wdrożeniowe nie obsługiwane przez msbuild: jakie są moje opcje?
- 2. _ftol2_sse, czy są szybsze opcje?
- 3. Czy napisy są obsługiwane w dowolnym natywnym sterowaniu wideo?
- 4. Klient NodeJS i HTTP - czy pliki cookie są obsługiwane?
- 5. Wywołania funkcji nie są obsługiwane w dekoratorze.
- 6. Jakie są opcje wizualizacji relacji klasowych w programie Python
- 7. Python w systemie AIX: Jakie są moje opcje?
- 8. Czy synonimy Oracle są obsługiwane w Entity Framework?
- 9. Czy w systemie iOS obsługiwane są prywatne ramy?
- 10. Jakie są opcje Niektóre i Brak SML?
- 11. Czy aplikacje konsoli asynchronicznej są obsługiwane w .NET Core?
- 12. Jakie są obsługiwane zdarzenia Ember.js?
- 13. Obsługiwane urządzenia są wyjątkowo niskie.
- 14. Gdzie i jak obsługiwane są wyjątki sprężyny i hibernacji?
- 15. Jakie są obsługiwane operatory i polecenia w języku FQL?
- 16. Opcje debugowania w/Python, Flask i Sublime Text 2
- 17. Raporty Javaagent "redefineClasses nie jest obsługiwane w tym środowisku"
- 18. Jakie funkcje ES6 są obsługiwane w JSX?
- 19. Co to są opcje + FollowSymLinks?
- 20. Xcode zatrzymuje się w punktach automatycznego kontynuowania
- 21. Czy istnieje sposób zmuszenia NHTMLUNIT do zignorowania błędów JavaScript strony i kontynuowania wykonywania skryptów?
- 22. Pliki są otwierane w niewłaściwym obszarze edycji
- 23. Czy wyrażenia lambda są obsługiwane przez maszynkę Razor?
- 24. Sprawdzanie wersji modułu Python w środowisku wykonawczym
- 25. Co to są opcje skrótów?
- 26. Jakie są biblioteki łączące opcje w Xcode?
- 27. Czy subskrypcje grupowe są automatycznie obsługiwane na serwerze Reconnect?
- 28. Dokumentacja w języku Python w środowisku Eclipse
- 29. Jak sprawdzić, czy tablice z typami javascript są obsługiwane?
- 30. W zależności od opcji, które opcje są możliwe?
Dobra odpowiedź, ale polecam używanie pdb przez IPython, co czyni go jeszcze potężniejszym (podświetlanie składni, automatyczne debugowanie przy wyjątkach itp.) (Http://ipython.org/ipython-doc/stable/interactive /tutorial.html#debugging). – EOL