@tchaluppa: Da gibt's nicht *den* Fehler. Das sieht aus als wären da gleich mehrere falsche Annahmen gemacht worden.
Für GUI-Programmierung muss man mit Funktionen umgehen können. Also nicht mehr irgendwas ausserhalb der Funktion verändern wollen, Das sind die Grundlagen für Klassen. Und objektorientierte Programmierung (OOP), also Klassen, braucht man für jedes nicht-triviale GUI-Programm.
`zahl` hat auf Modulebene nichts zu suchen. Da steht nur Code der Konstanten, Funktionen, und Klassen definiert. Funktionen und Methoden bekommen alles was sie ausser Konstanten benötigen, als Argument(e) übergeben.
``lambda``-Ausdrücke sind für anonyme Funktionen, also solche die keinen Namen haben. Es macht deshalb nicht so viel Sinn die anonyme Funktion erst an einen, dazu noch völlig nichtssagenden, Namen zu binden. Dann hätte man auch einfach ``def`` verwenden können und hätte bei Fehlern einen sinnvollen Funktionsnamen im Traceback stehen.
“Java is a DSL to transform big Xml documents into long exception stack traces.”
— Scott Bellware
Das ist kein simples Anfängerproblem, weil man für die Lösung einiges an Wissen braucht. Für GUIs muß man Klasse implementieren können, denn nur so läßt sich der Zustand (der Wert der Zahl) über das Ende der Funktion hinaus speichern.