Gegeben:
e = 'a' + 'b' + 'c' + 'd'
Wie schreibe ich das obige in zwei Zeilen?
e = 'a' + 'b' +
'c' + 'd'
Gegeben:
e = 'a' + 'b' + 'c' + 'd'
Wie schreibe ich das obige in zwei Zeilen?
e = 'a' + 'b' +
'c' + 'd'
Aus berufenem Munde: Explizite Linie Verbindung
Zwei oder mehr physische Leitungen können sein zu logischen Leitungen verbunden werden mit Backslash-Zeichen (
\
), wie folgt: Wenn eine physische Zeile mit einem Backslash endet, der nicht Teil einer Zeichenkette Literal oder Kommentar ist, wird sie mit der folgenden Zeile zu einer einzigen logischen Zeile, wobei der Backslash und das folgende Zeilenende-Zeichen. Für Beispiel:if 1900 < year < 2100 and 1 <= month <= 12 \ and 1 <= day <= 31 and 0 <= hour < 24 \ and 0 <= minute < 60 and 0 <= second < 60: # Looks like a valid date return 1
Eine Zeile, die mit einem Backslash endet, kann nicht einen Kommentar enthalten. Ein Backslash bedeutet nicht einen Kommentar fort. Ein Backslash setzt ein Token nicht fort, außer bei String Literalen (d.h. andere Zeichen als Zeichenkettenliterale können nicht über Zeilen mit einem Backslash aufgeteilt werden). A Backslash ist an anderer Stelle in einer Zeile außerhalb eines Zeichenketten-Literales.
Wenn Sie Ihre Zeile wegen einer langen literalen Zeichenfolge umbrechen wollen, können Sie diese Zeichenfolge in Stücke zerlegen:
long_string = "a very long string"
print("a very long string")
wird ersetzt durch
long_string = (
"a "
"very "
"long "
"string"
)
print(
"a "
"very "
"long "
"string"
)
Ausgabe für beide Druckanweisungen:
a very long string
Beachten Sie die Klammer in der Affekthandlung.
Beachten Sie auch, dass die Zerlegung von literalen Zeichenketten in Teile es ermöglicht, das literalen Präfix nur für Teile der Zeichenkette zu verwenden und die Begrenzungszeichen zu mischen:
s = (
'''2+2='''
f"{2+2}"
)
Man kann auch den Aufruf von Methoden unterbrechen ( obj.method()
) in mehreren Zeilen.
Schließen Sie den Befehl in Klammern ein " ()
"und sich über mehrere Zeilen erstrecken:
> res = (some_object
.apply(args)
.filter()
.values)
Ich finde es zum Beispiel nützlich, wenn Pandas/Holoviews-Objekte Methoden in Ketten aufrufen.
Aus The Hitchhiker's Guide to Python ( Fortsetzung der Linie ):
Wenn eine logische Codezeile länger als die zulässige Grenze ist, müssen Sie sie auf mehrere physische Zeilen aufteilen. Der Python-Interpreter fügt aufeinanderfolgende Zeilen zusammen, wenn das letzte Zeichen der Zeile ein Backslash ist. Dies ist in manchen Fällen hilfreich, sollte aber wegen seiner Anfälligkeit vermieden werden: Ein Leerzeichen am Ende der Zeile nach dem Backslash bricht den Code auf und kann zu unerwarteten Ergebnissen führen.
Eine bessere Lösung ist die Verwendung von Klammern um Ihre Elemente. Bleibt eine nicht geschlossene Klammer an einem Zeilenende stehen, fügt der Python-Interpreter die nächste Zeile ein, bis die Klammern geschlossen sind. Das gleiche Verhalten gilt für geschweifte und eckige Klammern.
Allerdings Wenn Sie eine lange logische Zeile aufteilen müssen, ist das in den meisten Fällen ein Zeichen dafür, dass Sie versuchen, zu viele Dinge gleichzeitig zu tun, was die Lesbarkeit beeinträchtigen kann.
Dies vorausgeschickt, hier ein Beispiel, das mehrere Importe berücksichtigt (bei Überschreitung Liniengrenzen, definiert auf PEP-8 ), die auch für Zeichenketten im Allgemeinen gilt:
from app import (
app, abort, make_response, redirect, render_template, request, session
)
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.