image image


image

Syntaktischer Zucker in Py5: With with is better then without with

Processing.py besitzt ein Sprachkonstrukt, das ich schon einmal als »syntaktischen Zucker« bezeichnet habe. Es geht darum, daß die Klammerung zum Beispiel mit push_matrix() und pop_matrix() zumindest von mir als nicht sehr »pythonisch« empfunden wird. Immer denke ich: »Das gehört doch eingerückt!« In Processings Java-Mode ist das egal, weil man in Java einrücken kann, wie man will – Einrückungen haben dort einfach keine Bedeutung. Und so kann man den Java-Quellcode sehr übersichtlich gestalten.

Doch Python reagiert ja bekanntlich sehr sensibel auf Einrückungen, da hier Leerzeichen Teil der Syntax sind. Aber die Macher von Processing.py haben dies bedacht und uns einen Ausweg aus diesem Dilemma geboten: Das with-Statement. Jetzt war ich sehr gespannt, ob dieses Statement auch den Sprung nach Py5 geschafft hat. Spoiler: Es hat!

def setup():
    size(400, 400)
    window_move(1400, 30)
    window_title("With with")
    background(233, 195, 91)
    no_loop()


def draw():
    fill(color(25, 149, 156))
    circle(100, 100, 50)

    with push_style():
        fill(color(211, 132, 65))
        stroke_weight(5)
        circle(200, 200, 50)
    circle(300, 300, 50)
    
    print("I did it, Babe!")

Wie der Screenshot im Banner oben beweist, wird dieses Codeschnipsel klaglos ausgeführt, und dies sollte auch mit push_matrix(), begin_shape(), begin_closed_shape() und ähnlichen Konstrukten funktionieren. Man spart zwar in der Regel nur eine Codezeile (die Zeile mit dem korrespondierenden end), aber da man den Code unter dem with einrückt, ist er einfach übersichtlicher (und »pythonischer«) strukturiert.


(Kommentieren) 

image image



Über …

Der Schockwellenreiter ist seit dem 24. April 2000 das Weblog digitale Kritzelheft von Jörg Kantel (Neuköllner, EDV-Leiter Rentner, 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

Diese Spalte wurde absichtlich leergelassen!


Werbung


image  image  image
image  image  image


image