Während ich Python codiere, verwende ich nur 2 Leerzeichen zum Einrücken. Sicher, PEP-8 empfiehlt wirklich 4 Leerzeichen, aber historisch gesehen ist das für mich ungewöhnlich.
Kann mich jemand überzeugen, 4 statt 2 Leerzeichen zu verwenden? Welche Vor- und Nachteile?
PS Und schließlich, wie kann man auf einfache Weise die gesamte vorhandene Codebasis von 2 Leerzeichen in 4 Leerzeichen konvertieren?
PPS PEP-8 Es wird außerdem dringend empfohlen, keine Registerkarten zum Einrücken zu verwenden. Lies hier
Um es zusammenzufassen:
Vorteile:
- Haben Sie mehr Platz zum Anordnen, wenn Sie Zeichenfolgen mit einer Länge von mehr als 80 Zeilen umbrechen.
- Kann Code aus Snippets kopieren und es funktioniert einfach.
Nachteile:
- Mit einer tieferen Ebene verschachtelter Anweisungen haben Sie weniger Platz für tatsächlichen Code.
Vielen Dank.
python
indentation
conventions
pep8
HardQuestions
quelle
quelle
Antworten:
Alle anderen benutzen 4 Felder. Dies ist der einzige Grund, 4 Leerzeichen zu verwenden, die ich gefunden und akzeptiert habe. In meinem Herzen möchte ich immer noch Tabulatoren verwenden (1 Einzug pro Einzug, macht Sinn, nein? Trennen Sie den Einzug von anderen Leerzeichen. Es ist mir egal, dass Tabulatoren in unterschiedlichen Breiten angezeigt werden können , was keinen syntaktischen Unterschied macht. Das Schlimmste Das kann passieren, dass einige der Kommentare nicht übereinstimmen. Der Horror!), aber ich habe akzeptiert, dass ich 4 Leerzeichen verwende, da die Python-Community insgesamt 4 Leerzeichen verwendet. Auf diese Weise kann ich Code aus Snippets zusammenstellen, die andere geschrieben haben, und alles funktioniert.
quelle
'tab_size' = 4
nur für Python und standardmäßig'tab_size' = 2
für andere Sprachen (wie JavaScript usw.) festzulegen.Ich mag die Tatsache, dass vier Leerzeichen den inneren Code einer Funktion gut einrücken, weil def + ein Leerzeichen vier Zeichen ergibt.
def·foo(): ····pass
quelle
if
Anweisung gut einrücken , weilif
+ ein Leerzeichen drei Zeichen ergibt.Ich denke, die eigentliche Frage ist, warum Leerzeichen und keine Tabulatoren.
Tabs sind eindeutig besser:
Vorteile von Räumen:
quelle
Es gibt keine "bessere" Einrückung. Es ist ein religiöses Thema des Heiligen Krieges. Vier ist schön, weil es ausreicht, um die Einrückung deutlich zu machen, aber nicht so sehr, dass Ihr gesamter Bildschirm größtenteils aus Leerzeichen besteht und Sie horizontal scrollen müssen, um die Hälfte des Programms zu lesen.
Es hat auch den Vorteil, ein "halber Tab" ohne die historische Definition eines "Tabs" zu sein.
Verwenden Sie ansonsten alles, was Ihre Gruppe mag. Es ist wie Schokolade gegen Vanille.
Eine einfache Möglichkeit zum Wechseln ist die Verwendung eines Editors mit Unterstützung für Tabulatoren und Leerzeichen. Konvertieren Sie alle Ihre führenden Leerzeichen in Registerkarten, setzen Sie die Registerkartengröße auf vier und konvertieren Sie dann die führenden Registerkarten zurück in Leerzeichen.
Ziemlich einfach mit einem Python-Skript zu machen. Zählen Sie einfach alle führenden Leerzeichen, fügen Sie dann den gleichen Betrag am Zeilenanfang hinzu und schreiben Sie ihn wieder aus.
quelle
Der PEP ist nicht der Boss von dir. Wenn es bereits konsistent mit 2 Leerzeichen eingerückt ist, gibt es keinen Grund, Ihren gesamten Code so zu ändern, dass er dem entspricht. Sie könnten es in Zukunft verfolgen, wenn Sie wirklich denken, dass es so wichtig ist, aber ehrlich gesagt, ich nicht. Sie sollten sich besser an die Konventionen halten, die Ihnen (und Ihren Mitarbeitern) den größten Komfort beim Lesen und Schreiben bieten.
quelle
Jeder anständige Redakteur (emacs, vim) wird diesen ganzen Unsinn für Sie abstrahieren. Es funktioniert genauso gut mit Leerzeichen oder Tabulatoren und kann so konfiguriert werden, dass eine beliebige Anzahl von Leerzeichen (oder eine beliebige Anzahl von Leerzeichenbreiten für ein Tabulatorzeichen) verwendet wird. Es kann auch ohne großen Aufwand zwischen den verschiedenen Formaten konvertieren (siehe
:retab
Befehl in vim).Wenn Sie versuchen, die Quellformatierung in großen Mengen zu konvertieren, empfehlen wir Ihnen, sich das Dienstprogramm zum Einrücken anzusehen .
Trotzdem kann ich nicht widerstehen, die andere Frage zu beantworten ... Ich habe immer Tabs bevorzugt, da dies das gesamte Problem umgeht und jeder den Quellcode mit den eingestellten Breiten nach Belieben anzeigen kann. Es ist auch viel weniger tippen, wenn Sie in Editoren arbeiten, die beim Konvertieren nicht hilfreich sind. Was 2 gegen 4 Felder betrifft, ist das rein kosmetisch.
quelle
Einer der Gründe ist auch: Wenn Sie eine lange Zeile (länger als 80 Symbole) haben und diese in zwei Teile teilen möchten, haben Sie nur 1 Leerzeichen zum Einrücken, was etwas verwirrend ist:
if code80symbolslong and somelongvariablegoeshere and somelongerthan80symbols \ and someotherstatementhere: # some code inside if block pass if code80symbolslong and somelongvariablegoeshere and somelongerthan80symbols \ and someotherstatementhere: # some code inside if block pass
quelle
Wenn Sie der einzige Codierer sind, der an Ihrer Quelldatei arbeitet, und es keine Codierungsstandards gibt, die einen bestimmten Stil erzwingen, verwenden Sie alles, was Sie möchten. Persönlich (und in Übereinstimmung mit unserem Codierungsstandard) verwende ich harte Tabulatoren, damit jeder, der sich den Code ansieht, seine eigenen Vorlieben verwenden kann.
Um eine Änderung vorzunehmen, müssen Sie lediglich alle Zeilenanfangsbereiche in doppelt so große ändern. Es gibt viele Möglichkeiten, dies zu tun. Im Vim-Texteditor kann ich mir zwei vorstellen: Erstens:
:%s/^\(\s\{2}\)\+/\=repeat(' ', len(submatch(0))*2)
Dies ist ein einfacher regulärer Ausdruck, der am Anfang der Zeile nach einem oder mehreren Leerzeichenpaaren sucht und diese durch doppelt so viele Leerzeichen ersetzt, wie gefunden wurden. Es kann erweitert werden, um alle Dateien zu erstellen, indem Sie vim öffnen mit:
(oder das Äquivalent), gefolgt von (ungetestet):
:argdo %s/^\(\s\{2}\)\+/\=repeat(' ', len(submatch(0))*2)/ | w
Alternative:
" Switch to hard tabs: :set noexpandtab " Set the tab stop to the current setting :set tabstop=2 " Change all spaces to tabs based on tabstop :retab! " Change the tab stop to the new setting :set tabstop=4 " Go back to soft tabs :set expandtab " Replace all the tabs in the current file to spaces :retab
Natürlich werden viele andere Werkzeuge ähnliche Funktionen bieten: ich überrascht würde , wenn so etwas wie
sed
,awk
,perl
oder daspython
nicht sehr leicht tun könnte.quelle
Identifikations- und allgemeine Codierungsstilstandards variieren von Sprache zu Sprache, von Projekt zu Projekt. Es gibt einen Grund für die Übernahme eines Codierungsstilstandards: Damit der Code einheitlich aussieht, unabhängig davon, wer ihn geschrieben hat. Das verbessert die Lesbarkeit des Projekts und sieht, um es klar auszudrücken, besser aus.
Es gibt einen Grund, der bei der Übernahme eines Codierungsstilstandards nicht gültig ist: weil es Ihnen gefällt. Codierungsstandards existieren genau deshalb, weil die Vorlieben der Menschen unterschiedlich sind und wenn sie sich selbst überlassen würden, würde Chaos zum Nachteil aller entstehen.
Wenn Sie Code für sich selbst schreiben, den niemand jemals lesen wird, schreiben Sie ihn nach Belieben. Andernfalls wird das Befolgen des akzeptierten Standards Ihrer Community Ihren Code für die Augen aller anderen viel angenehmer machen. Und denken Sie auch daran, dass Sie es leichter haben, wenn Sie sich entscheiden, in Zukunft Code für eine Community bereitzustellen, wenn Sie bereits an deren Codierungsstil gewöhnt sind.
Was das Ändern der Registerkartengröße betrifft, gibt es viele Quellcode-Formatierer, die Python unterstützen, und die meisten Editoren und IDEs von Programmierern verfügen ebenfalls über diese Funktion. Sie haben es wahrscheinlich bereits, es ist nur eine Frage der Dokumentation des von Ihnen verwendeten Editors.
quelle
Ein Grund dafür ist, dass Sie mehr Anweisungen verschachteln können, wenn Sie weniger Leerzeichen zum Einrücken verwenden (da die Zeilenlänge normalerweise auf 80 beschränkt ist).
Jetzt bin ich mir ziemlich sicher, dass einige Leute sich immer noch nicht darüber einig sind, wie viele verschachtelte Konstrukte das Maximum sein sollten.
quelle
Es ist einfacher, lange verschachtelte Codeblöcke mit 4 Leerzeichen visuell zu identifizieren. Spart Zeit beim Debuggen.
quelle
Wenn Sie Python-Code zusammen mit anderen Programmierern schreiben möchten, wird es zu einem Problem, wenn Sie eine andere Einrückung als diese verwenden. Die meisten Python-Programmierer verwenden normalerweise 4-Leerzeichen-Einrückungen.
quelle
Die Verwendung von 4 oder 2 Feldern liegt ganz bei Ihnen. 4 Plätze ist nur eine Konvention. Was am wichtigsten ist, mischen Sie keine Tabulatoren und Leerzeichen. Verwenden Sie die Leertaste
quelle