"Effective Python 2nd Edition" Kapitel 1 <Pythonisches Denken>

Einführung

Ausführungsumgebung

Wenn Sie den Beispielcode veröffentlichen, veröffentlichen Sie das Ergebnis der Ausführung in der folgenden Ausführungsumgebung. Wir werden versuchen, es in einer Form bereitzustellen, die so fehlerfrei wie möglich ist. Bitte verzeihen Sie uns, wenn es nicht funktioniert oder falsch ist.

Kapitel 1

import this Kennen Sie "The Zen of Python"? Wenn Sie den Python-Interpreter starten und "import this" ausführen, wird "The Zen of Python" angezeigt (siehe unten).

>>> import this
The Zen of Python, by Tim Peters

Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!

Hier ist ** eine Beschreibung der Leitprinzipien für diejenigen, die die Programmiersprache "Python" selbst in Form eines Wortes erstellen **. Es wurde von Tim Peters geschrieben, einem wichtigen Beitrag zu Python, und ich denke, es beschreibt ** den Geist und die Philosophie von "Python" **. Wenn Sie Software mit Python entwickeln, sollten Sie sie einmal lesen. (Aber ich habe es kürzlich zum ersten Mal erfahren ...

Es gibt einen Qiita-Artikel, der zusammen mit der japanischen Übersetzung ausführlich erklärt wird. Ich denke, dass es einfacher sein wird, sich jedes Sprichwort vorzustellen, wenn Sie sich das ansehen. Das Zen von Python - Qiita

Übrigens heißt es laut PEP 20 - Das Zen von Python, wenn Sie "import this" im Interpreter ausführen, "The Zen of Python". Scheint als Osterei angezeigt zu werden.

Sie sollten "nicht somelist" anstelle von "len (somelist) == 0" (ab Punkt 2) verwenden.

Wenn Sie herausfinden möchten, dass eine Liste leer ist, möchten Sie sie als "if len (somelist) == 0" bewerten. Stattdessen sollten Sie "if not somelist" schreiben. Dies nutzt die Tatsache aus, dass die leere Liste implizit als "Falsch" ausgewertet wird (PEP 8 (Python Code Style Guide)) (https://pep8-ja.readthedocs.io). Es ist auch in / ja / latest /) beschrieben.

Wenn Sie Binärwerte auswerten, schreiben Sie "if flag" anstelle von "if flag == True". Es ist jedoch möglicherweise einfacher, sich daran zu erinnern, wenn Sie der Meinung sind, dass es dasselbe ist.

Verwenden Sie nicht "else" in "for" und "while" (ab Punkt 9).

Die Anweisungen for und while haben einen else-Block, der nur ** ausgeführt wird, wenn break nicht innerhalb der Schleife ausgeführt wird.

for i in range(3):
    print(i)
    if i == 1:
        break
else:
    print("Hello")  #Es wird nicht angezeigt, da break ausgeführt wird

>>>
0
1
for i in range(3):
    print(i)
else:
    print("Hello")  #Es wird angezeigt, weil break nicht ausgeführt wurde

>>>
0
1
2
Hello

Wie Sie dem obigen Beispielcode entnehmen können, wissen Sie nicht, wann "else" ausgeführt wird und wann "else" nicht ausgeführt wird. Code, der auf diese Weise nicht intuitiv ist, ist irreführend und kann Fehler verursachen und sollte nicht verwendet werden.

Stattdessen können Sie eine Hilfsfunktion wie folgt erstellen und implementieren:

def hoge():
     for i in range(3):
         print(i)
         if i == 1:
             return False
     return True

if not hoge():
    print("Hello")

>>>
0
1
Hello

Substitutionsformel verhindert Wiederholung (ab Punkt 10)

Zuweisungsausdrücke sind eine neue Syntax, die in Python 3.8 hinzugefügt wurde. Normalerweise schreiben Sie in der Zuweisung "Anweisung" "a = b", aber in der Zuweisung "Ausdruck" schreiben Sie "a: = b". Mit dem Zuweisungsausdruck kann der Teil, in dem der Code in der Vergangenheit dupliziert wurde, wie folgt präzise geschrieben werden.

#Bisher
count = fresh_fruit.get('lemon', 0)
if count:
    make_lemonade(count)
else:
    out_of_stock()
#Von nun an (wenn mit einer Zuweisungsformel geschrieben)
if count := fresh_fruit.get('lemon', 0):  #Die Zuordnung zur Zählung und Auswertung kann gleichzeitig in einer Zeile erfolgen
    make_lemonade(count)
else:
    out_of_stock()

Wenn Sie beispielsweise Code schreiben möchten, der eine übereinstimmende Zeichenfolge mit einem regulären Ausdruck extrahiert, können Sie ihn wie folgt präzise schreiben.

#Bisher
import re
string = "abcABC"

match = re.match(r"([a-z]+)", string)
if match:
    print(f"{match.group(1)}")
else:
    print("Not match")

>>>
abc
#Von nun an (wenn mit einer Zuweisungsformel geschrieben)
import re
string = "abcABC"

if match := re.match(r"([a-z]+)", string):  #Die Zuordnung zur Übereinstimmung und Auswertung kann in einer Zeile erfolgen
    print(f"{match.group(1)}")
else:
    print("Not match")

>>>
abc

Übrigens wird der Zuweisungsausdruck-Operator : = als Walross-Operator bezeichnet, da er den Augäpfeln und Reißzähnen der Seuchi ähnelt. Wenn Sie " a: = b "aussprechen, sprechen Sie es auch als" a Walross b "aus. Es bringt mich dazu, es als "ein Walross b" auszusprechen, aber ich bin sicher, dass es als "ein Doppelpunkt gleich b" umformuliert wird, ohne mit der anderen Partei kommunizieren zu können ... lol

Zusammenfassung

Wir haben "Effective Python 2nd Edition" Kapitel 1 eingeführt.

Ich möchte Kapitel 2 und darüber hinaus nach und nach vorstellen, also treffen wir uns beim nächsten Mal wieder!

Referenzseite

Recommended Posts

"Effective Python 2nd Edition" Kapitel 1 <Pythonisches Denken>
"Effective Python 2nd Edition" Kapitel 3 <Funktionen>
Ameisenbuch mit Python (Kapitel 3 Zwischenausgabe ~)
Erste Python 3rd Edition
[Python] Kapitel 01-01 Über Python (Erster Python)
Effektives Python-Memo Punkt 3