Effektives Python-Memo Element 4 Schreiben Sie eine Hilfsfunktion anstelle eines komplizierten Ausdrucks

** Hinweise zu effektivem Python ** Punkt 4: Schreiben Sie Hilfsfunktionen anstelle komplexer Ausdrücke

** Schreiben Sie eine Hilfsfunktion, da das Schreiben eines komplizierten Ausdrucks in einem einzelnen Satz die Lesbarkeit beeinträchtigt ** Wenn Sie Lust dazu haben, fügt Python eine enorme Menge an Syntax in einen Satz ein, aber das Lesen wird sehr schwierig. Daher sollten Sie eine Hilfsfunktion bereitstellen, um die Lesbarkeit zu verbessern.

Beispiel zum Abrufen des Inhalts einer URL-Abfrage

Einfaches Beispiel

#Fragen Sie nach Argumenten aus der URL-Abfrage

from urllib.parse import parse_qs
my_values = parse_qs('red=5&blue=0&green=',
                     keep_blank_values=True)
print('red:     ', my_values.get('red'))
print('green:   ', my_values.get('green'))
print('opacity: ', my_values.get('opacity'))

>>>
red:      ['5']
green:    ['']
opacity:  None

⇒ Wenn es keinen Wert gibt, ist es besser, auf Null zu vereinheitlichen

#Vergleichen Sie vor und nach dem Ausdruck mit dem Operator oder
red = my_values.get('red', [''])[0] or 0
green = my_values.get('green', [''])[0] or 0
opacity = my_values.get('opacity', [''])[0] or 0
print('red:     %r' % red)
print('green    %r' % green)
print('opacity  %r' % opacity)

>>>
red:     '5'
green    0
opacity  0

Ich konnte es schaffen, aber es ist schwer zu sehen. .. .. Darüber hinaus gibt es Fälle, in denen Sie Zahlen mit mathematischen Formeln anstelle von Zeichenfolgen verarbeiten möchten. Also lasst es uns mit int () umschließen!

red = int(my_values.get('red', [''])[0] or 0)
print('red:     %r' % red)

>>>
red:     5

Es ist ziemlich schwer zu sehen. Nicht viele Menschen können es auf einen Blick verstehen. Sie müssen überhaupt nicht so viel in eine Zeile passen.

Lassen Sie uns den Zustand leicht mit if / else beurteilen

red = my_values.get('red', [''])
red = int(red[0]) if red[0] else 0
print('red:     %r' % red)

>>>
red:     5

Es ist ein wenig ordentlich, aber die Beschreibung der if-Anweisung ist nicht schön Wenn Sie es mit einer strengen if-Anweisung schreiben

red = my_values.get('red', [''])
if red[0]:
    red = int(red[0])
else:
    red = 0
print('red:      %r' % red)
>>>
red:      5

Es wird übertragen, aber es ist schwer wieder zu sehen.

Schreiben wir eine Hilfsfunktion

def get_first_int(values, key, default=0):
    found = values.get(key,[''])
    if found[0]:
        found = int(found[0])
    else:
        found = default
    return found

red = get_first_int(my_values, 'red')
print('red:     %r' % red)

>>>
red:     5

Zusammenfassung

Python hat viele nützliche Beschreibungen, aber wenn Sie es zu oft verwenden, bleibt es lesbar. Schreiben Sie je nach Situation viele Hilfsfunktionen.

Recommended Posts

Effektives Python-Memo Element 4 Schreiben Sie eine Hilfsfunktion anstelle eines komplizierten Ausdrucks
Effektives Python-Memo Element 7 Verwenden Sie die Listeneinschlussnotation anstelle von Karte und Filter
Effektives Python-Memo Punkt 3
kanonischer Python-Ausdruck oder Match-Objekt-Memo
Ein Memo, dass ich eine Grundfunktion in Python mit Wiederholung geschrieben habe
Effektives Python-Memo Punkt 10 Aufzählung aus der Reichweite
Ein Memo, das ein Tutorial zum Ausführen von Python auf Heroku erstellt hat
Zeichnen Sie in Python ein Diagramm einer quadratischen Funktion
Holen Sie sich den Aufrufer einer Funktion in Python
EP 4 Write Helper-Funktionen anstelle komplexer Ausdrücke
Memo mit Python mit HiveServer2 von EMR verbunden
So schreiben Sie einen Listen- / Wörterbuchtyp von Python3
[Python] Ein Memo zum vertikalen Schreiben von CSV mit Pandas
Ich habe versucht, Python (3) anstelle eines Funktionsrechners zu verwenden
Pythons Lambda-Ausdruck ...
Python-Memo für reguläre Ausdrücke
So entwickeln Sie in einer virtuellen Python-Umgebung [Memo]
Effektives Python-Memo-Element 19 Geben Sie Schlüsselwortargumenten optionales Verhalten
Python> Aus einer mehrzeiligen Zeichenfolge anstelle einer Datei lesen> io.StringIO ()
Effektiver Python-Hinweis Punkt 16 Erwägen Sie, einen Generator zurückzugeben, ohne eine Liste zurückzugeben
Erstellen Sie eine Funktion in Python
Schreiben Sie eine Kerneldichtefunktion
[Python] Wert des Funktionsobjekts (?)
[Python] Der Ursprung des Namens der Python-Funktion
[Python] Ein Memo häufig verwendeter Phrasen in Python-Skripten
Effektives Python-Memo Element 11 Verwenden Sie zip, um Iteratoren parallel zu verarbeiten
Ich habe versucht, mit Python einen regulären Ausdruck für "Betrag" zu erstellen
[Python 3.8 ~] Wie man rekursive Funktionen mit Lambda-Ausdrücken intelligent definiert
Ich habe versucht, mit Python einen regulären Ausdruck von "Zeit" zu erstellen
Effektiver Python-Hinweis Punkt 15 Wissen, wie sich Schließungen auf den Funktionsumfang beziehen
Ich habe versucht, mit Python einen regulären Ausdruck von "Datum" zu erstellen
Eine Funktion, die die Verarbeitungszeit einer Methode in Python misst
[Python3] Definition eines Dekorators, der die Ausführungszeit einer Funktion misst
Die Idee, die Konfigurationsdatei mit einer Python-Datei anstelle von yaml zu füttern
[Python] Eine einfache Funktion zum Ermitteln der Mittelkoordinaten eines Kreises