[Python-de] nonlocal vermeiden

"Jürgen K. Leese" j.kleese at arcor.de
So Mär 24 17:32:56 CET 2013


Hallo,

ich bin gerade über die etwas sehr schräge Behandlung von lokalen
Variablen gestolpert. Daran lässt sich natürlich nichts ändern, die
Frage ist, wie mache ich Folgendes besser?

In einer Funktion, die irgendwas zeilenweise ausliest, habe ich diese
Hilfsfunktion definiert:

def holezeile():
  nonlocal zeile, zeilennummer
  zeile = zeilevonirgendwoeinlesen()
  zeilennummer += 1

In der übergeordneten Funktion, die zeile und zeilennummer verwurstet,
wird holezeile() an gut einem Dutzend Stellen aufgerufen - daher die
vergesslichkeitsfehlersichere Stütze mit holezeile(). Sollte ich an
holezeile() mal etwas ändern wollen, möchte ich das nicht an einem
Dutzend Stellen machen müssen.

Die nonlocal-Zeile finde ich hässlich, und diejenigen, die sich den Kram
ausgedacht haben, sollen wohl der Meinung sein, der Zugriff auf
übergeordnete Variablen wäre eh schlechter Stil.

Hässlich und schlecht. Aber wie mache ich sowas denn nun schön und gut,
ohne dabei denselben Code dutzendmal zu wiederholen?

Herzlichen Dank für Einblicke,
Jürgen


Mehr Informationen über die Mailingliste python-de