Frage von offeltoffel, 54

Python: eine Programmierumgebung zum Kompilieren Zeile für Zeile?

Liebe Community,

ich schreibe für die Arbeit immer wieder ein paar Codes in Python. Am Ende sollen sie natürlich als ein Programm durchlaufen und das tun, wofür sie programmiert wurden. Zu Beginn aber fand ich es in anderen Sprachen (z.B. "R") immer ganz praktisch, dass ich sie zeilenweise ausführen konnte. Idealerweise zeigt mir die Umgebung auch eine Übersicht mit allen gerade aktiven Variablen und ihrem derzeitigen Wert - nützlich für das Debugging (zur Zeit arbeite ich mit print Variable und raise SystemExit).

Ich weiß, dass das zeilenweise Kompilieren langsamer ist, aber im Debug-Modus wäre mir das egal.

Derzeit nutze ich den PyCharm und JetBrains, aber der ist mir auch insgesamt etwas zu unübersichtlich. Habt ihr eine bessere Empfehlung für mich?

Falls das wichtig ist, ich habe Anaconda Python 2.7 installiert. Danke!

Antwort
von androhecker, 40

PyCharm ist sogar sehr gut, man muss sich nur einarbeiten.
Anstatt den Run Button zu drücken, kannst du auch das den Käfer daneben klicken, dann wird der Debugger gestartet. Aber zuerst musst du links im Editor die Code Zeile mit einem roten Punkt markieren, bei der der Debugger anfängt. Sobald du also den Debugger dann gestartet hast und das Programm bei der Zeile angekommen ist, wird das Programm pausiert und unten in deinem Debugger Fenster siehst du alle Variablen, du siehst sie auch im Code als Kommentar hinter der Variable und die aktive Zeile wird markiert. Dann kannst du verschiedene Aktionen benutzen, wie Resume, zur nächsten Zeile, Step in, etc.

Der Debugger von JetBrains ist übrigens auch einer der besten.

Kommentar von offeltoffel ,

Danke, androhecker, für den Tipp!

Angenommen, ich habe einen sehr zeitintensiven Code am Anfang stehen und möchte dann mit dem Ergebnis rumspielen. Kann der Debug-Modus dann auch bis dahin laufen und ich kann nachher am Script rumarbeiten und sehen, wie sich das auf die Variablen auswirkt, ohne alles nochmal neu rechnen zu müssen?

model_result = ... # rechenintensiver Code
variante = model_result * 2

Ich setze den Breakpoint auf "variante = ", lasse das Script laufen. Wenn es fertig ist, sehe ich mir das Ergebnis von "variante" an, bin unzufrieden, ändere den Code in

variante = model_result * 2.4

und lasse mir dann "variante" nochmal anzeigen, ohne den ganzen Rattenschwanz von vorher nochmal rechnen zu müssen, weil alles noch im Memory gespeichert ist und wirklich nur diese Zeile nochmal gerechnet wird. Oder ich rechne eine Zeile vorher nochmal und schaue, wie sich das auf "variante" auswirkt usw.

Das Beispiel ist natürlich nicht sonderlich gut, aber es geht um das Prinzip. Danke!

Kommentar von androhecker ,

Ja, du setzt einfach den Debug Punkt (also den roten Punkt) auf diese Zeile, dann wird das Programm bis dahin einfach durchlaufen und wohlgemerkt VOR der Zeile stoppen. Wirklich viel langsamer wird der Code davor nicht sein.

Keine passende Antwort gefunden?

Fragen Sie die Community