Was bedeutet Python? [geschlossen]

87

Auf vielen Websites sehe ich oft Kommentare, dass Code nicht pythonisch ist oder dass es einen pythonischeren Weg gibt, um dasselbe Ziel zu erreichen.

Was bedeutet Python in diesem Zusammenhang? Zum Beispiel, warum ist

while i < someValue:
   do_something(list[i])
   i += 1

nicht pythonisch während

for x in list:
   doSomething(x)

ist pythonisch?

Jon
quelle
11
Das Zen von Python , Was ist Pythonic , etc ...
Martin Tournoij
Dies ist eine Off-Topic-Frage. Sie hätten ein kleines Codebeispiel bereitstellen können, um mehr über das Thema zu erfahren.
ρss

Antworten:

100

Nutzen Sie die Funktionen der Python-Sprache, um Code zu erstellen, der klar, präzise und wartbar ist.

Pythonic bedeutet Code, der nicht nur die Syntax richtig macht, sondern den Konventionen der Python-Community folgt und die Sprache so verwendet, wie sie verwendet werden soll.

Dies lässt sich vielleicht am einfachsten anhand eines negativen Beispiels erklären, wie im verlinkten Artikel aus den anderen Antworten. Beispiele für unpythonischen Code stammen häufig von Benutzern anderer Sprachen, die anstelle von Python-Programmiermustern wie Listenverständnissen oder Generatorausdrücken versuchen, in Mustern, die in C oder Java häufiger verwendet werden, eine Brechstange zu bilden. Schleifen sind hierfür besonders häufige Beispiele.

Zum Beispiel in Java könnte ich verwenden

for i in (i; i < items.length ; i++)
 {
  n = items[i];
 ... now do something
 }

In Python können wir versuchen, dies mit while-Schleifen zu replizieren, aber die Verwendung wäre sauberer

for i in items:
  i.perform_action()

Oder sogar ein Generatorausdruck

(i.some_attribute for i in items)

Wenn also jemand sagt, dass etwas unpythonisch ist, sagt er im Wesentlichen, dass der Code so umgeschrieben werden könnte, dass er besser zum Python-Codierungsstil passt.

Durch Eingabe import thisüber die Befehlszeile erhalten Sie eine Zusammenfassung der Python-Prinzipien. Weniger bekannt ist, dass der Quellcode für import thisentschieden und von Natur aus unpythonisch ist! Schauen Sie sich das an, um ein Beispiel dafür zu finden, was Sie nicht tun sollten.

James
quelle
26
Übrigens ist der Quellcode für "import this" hier: github.com/python/cpython/blob/master/Lib/this.py
Gautam
Was wäre ein Beispiel in einem anderen Bereich? Wie kochen, entwerfen, fahren ..?
Daniel Springer
1
Für ein Beispiel eines komplexeren Codes wird eine "unpythonische" Implementierung der Vigenere-Verschlüsselung in dieser Antwort zunehmend "pythonischer" gemacht (Offenlegung: mein Code und meine Meinungen): stackoverflow.com/questions/2490334/…
Nick
17
Ich denke, ich sollte hier einen Kommentar mit meinem Benutzernamen
hinterlassen