Lange Zeilen im Sourcecode

Generell sollte man Zeilen im Sourcecode auf 79 Zeichen beschränken, damit sie auch z.B. in der Konsole ohne Umbruch lesbar sind. Auch im Styleguide (PEP-8) wird darauf hingewiesen. Wie man das umsetzen kann, soll hier kurz erklärt werden.

lange Codezeilen

Generell kann man lange Zeilen mit dem Backslash ("\") trennen und in der nächsten Zeile fortsetzen:

   1 def test(txt, txt2="default", txt3="default", txt4="default", txt5="default", \
              txt6="default", txt7="default"):
   2     print txt, txt2
   3 
   4 test(txt="Eine längerer Beispieltext", txt2="Und noch eine Zeile mehr \
   5           dran...")

Allerdings kann man sich in dem Fall auch den Backslash sparen, da man Ausdrücke in Klammern generell auf mehrere Zeilen verteilen kann:

   1 def test(txt, txt2="default", txt3="default", txt4="default", txt5="default",
   2          txt6="default", txt7="default"):
   3     print txt, txt2
   4 
   5 test(
   6     txt="Eine längerer Beispieltext",
   7     txt2="Und noch eine Zeile mehr dran :)"
   8 )

Wie man hier im Wiki allerdings schon sehen kann, gibt es dennoch einen Unterschied. Während die def-Zeile im ersten Listing (mit Backslash) wirklich nur eine Zeile umfasst, ist es im zweiten Listing auf zwei Zeilen verteilt. Das Endergebnis ist allerdings in beiden Fällen das selbe.

lange Strings

Mit dem Backslash bekommt man allerdings bei langen Strings im Quellcode Probleme mit der Einrückung:

   1 def test():
   2     print "Einen langen Text kann man nicht einfach in einer endlos langen \
   3     Zeile schreiben, das sieht im Sourcecode einfach nicht schön aus und sollte \
   4     vermieden werden!"
   5 
   6 test()

Die Ausgaben von test sieht nämlich dann so aus:

Einen langen Text kann man nicht einfach in einer endlos langen     Zeile schreiben, das sieht im Sourcecode einfach nicht schön aus und sollte    vermieden werden!

Man sieht also die "leeren" Stellen im Text. In diesem Fall darf man also nicht einrücken, weil die Leerzeichen mit in den String wandern. Eine Möglichkeit ist nun folgende:

   1 def test():
   2     print "Einen langen Text kann man nicht einfach in einer endlos langen \
   3 Zeile schreiben, das sieht im Sourcecode einfach nicht schön aus und sollte \
   4 vermieden werden!"
   5 
   6 test()

So ist der Text nun richtig und hat überall nur ein Leerzeichen. Aber der Sourcecode sieht in dem Fall nicht mehr wirklich gut aus. Mit einem Trick kann man das auch ganz anders machen:

   1 def test():
   2     print (
   3         "Einen langen Text kann man nicht einfach in einer endlos langen "
   4         "Zeile schreiben, das sieht im Sourcecode einfach nicht aus und "
   5         "sollte vermieden werden!"
   6     )
   7 
   8 test()

Ausgabe:

Einen langen Text kann man nicht einfach in einer endlos langen Zeile schreiben, das sieht im Sourcecode einfach nicht aus und sollte vermieden werden!

Das funktioniert, weil Python direkt aufeinanderfolgende Stringliterale zu einem einzigen verbindet. Zu beachten ist, dass in der Klammer die einzelnen Textteile nicht mit einem Komma getrennt werden dürfen, damit das Ergebnis der Klammer ein String ist und kein Tuple.

Lange Zeilen im Sourcecode (last edited 2010-04-02 09:01:32 by p5B236513)