[X-Post & F'up2 de.comp.lang.python] Sieghard Schicktanz wrote:
Hallo Bernd,
Du schriebst am Wed, 17 Dec 2014 13:17:19 +0100:
Lies und beherzige bitte http://einklich.net/usenet/zitier.
Ist es und tut es aber. Ich benutze z.B. gerne für "transiente" Ausgaben (für Tests und zum Prüfen) vollständig ausgerückte Ausgabe-Statements (die also ab Spalte 1 stehen). Das fällt bei einem einigermaßen ... _Geht_ in Python _nicht_.
debug = True
if debug: statement1 statement2
Ok, und jetzt nochmal in einem "if" innerhalb einer dreifach geschachtelten Schleife, bitte. BTW, in einer Funktion, natürlich.
https://en.wikipedia.org/wiki/Moving_the_goalposts Abgesehen davon: In Python schreibt man das IMHO nicht so, sondern geht davon aus, dass Funktionen vom Compiler inlined und unnötige Aufrufe wegoptimiert werden können. Diesen Ansatz empfehle ich auch für andere Programmiersprachen – optimal natürlich als Präprozessor-Makro. Daher stellt sich das Problem erst gar nicht: from sys import stderr debug_level=2 def dmsg (*args, **kwargs): if getattr(kwargs, 'min_level', None) is None: kwargs['min_level'] = 1 if not hasattr(kwargs, 'file'): kwargs['file'] = stderr if debug_level >= kwargs['min_level']: del kwargs['min_level'] print(*args, **kwargs) for …: for …: for …: dmsg("foo", min_level=1) Abgesehen davon: Wer in seinem Code eine dreifach verschachtelte Schleife *direkt* stehen hat, macht sehr wahrscheinlich etwas fhcsla. Denn er hat es wahrscheinlich versäumt, seinen Code mittels Subroutinen (in Python und Shell: Funktionen; in Python zusätzlich: Methoden) zu strukturieren. -- PointedEars Twitter: @PointedEars2 Please do not cc me. / Bitte keine Kopien per E-Mail.