image image


Writing Idiomatic Python

Seremba John Paul zeigt in seinem Artikel »Idiomatic Python. Coding the smart way« in 15 Beispielen, wie man guten und lesbaren Code in Python schreibt. Die meisten dieser Beispiele überzeugen. Gleich das erste etwa:

Schlechter Code

if x <= y and y <= z:
  # do something

Guter Code

if x <= y <= z:
  # do something

Oder dieses (der Autor des Artikels ist offensichtlich Afrikaner 😉 ):

Schlechter Code

cities = ['Nairobi', ‘Kampala’, ‘Lagos’]
index = 0
while index < len(cities):
  print(cities[index])
  index += 1

Guter Code

cities = [‘Nairobi’, ‘Kampala’, ‘Lagos’]
for city in cities:
  print(city)

Ich will hier nicht den gesamten Artikel widerkäuen, Ihr könnt ihn ja schließlich selber lesen, aber ein weiteres Beispiel sei mir noch erlaubt:

Schlechter Code

auth = None
if 'auth_token' in payload:
  auth = payload['auth_token']
else:
  auth = 'Unauthorized'

Guter Code

auth = payload.get('auth_token', 'Unauthorized')

Das letzte Beispiel ist ein wenig tricky und setzt die Kenntnis der dict.get()-Methode voraus, macht aber – abgesehen von der Kürze – den Code fehlertoleranter und sehr viel lesbarer.

Der Autor verweist zum Schluß des Artikels auf das Buch Writing Idiomatic Python von Jeff Knupp. Dort sollen weitere Tips zu finden sein.


1 (Email-) Kommentar


Da überzeugt allenfalls Beispiel #2, und das auch nur, weil hier eine maximal umständliche while- durch das passende for-Konstrukt ersetzt wird.
#1 ist syntaktischer Zucker, der intern zum als schlecht bezeichneten expliziten Konstrukt aufgelöst werden muss, weil der Ausdruck x <= y <= z, konservativ geparst, einfach Bullshit liefert (x <= y liefert einen Wahrheitswert – wie will ich das per <=-Operator sinnvoll mit einem wahrscheinlich numerischen z vergleichen?), und #3 ist in der „Schlecht“-Version gut lesbar und direkter Ausdruck des Algorithmus’, während die „Gut“-Version auf Seiteneffekten beruht, zum Verständnis, wie Du schreibst, intime Kenntnisse von Bibliotheks-Interna nötig sind und der Ausdruck nicht sinnvoll als Verzweigung lesbar ist.

– Moss (Kommentieren) (#)


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter, Autor, Netzaktivist und Hundesportler — Reihenfolge rein zufällig). Hier steht, was mir gefällt. Wem es nicht gefällt, der braucht ja nicht mitzulesen. Wer aber mitliest, ist herzlich willkommen und eingeladen, mitzudiskutieren!

Alle eigenen Inhalte des Schockwellenreiters stehen unter einer Creative-Commons-Lizenz, jedoch können fremde Inhalte (speziell Videos, Photos und sonstige Bilder) unter einer anderen Lizenz stehen.

Der Besuch dieser Webseite wird aktuell von der Piwik Webanalyse erfaßt. Hier können Sie der Erfassung widersprechen.

Diese Seite verwendet keine Cookies. Warum auch? Was allerdings die iframes von Amazon, YouTube und Co. machen, entzieht sich meiner Kenntnis.


Werbung


Werbung


image  image  image
image  image  image


image