Implizites trycatchpass?

01/10/2010 - 17:39 von Ole Streicher | Report spam
Hallo,

ich möchte gerne eine Liste von einigen Einzelobjekten erstellen, wobei
jede Einzelerstellung auch fehlschlagen kann. Etwa so etwas:

l = [ x(1), y(2), z(3), a(1) ]

die aufgerufenen Funktionen können aber auch fehlschlagen; in diesem
Fall hàtte ich gerne einfach kein Element hinzugefügt.

Derzeit löse ich das standardmàßig:
8<-
l = []
try:
l.append(x(1))
except:
pass
try:
l.append(y(2))
except:
pass
try:
l.append(z(3))
except:
pass
try:
l.append(a(1))
except:
pass
8<-

Das sieht natürlich deutlich unübersichtlicher aus als der Einzeiler
oben; insbesondere wenn die Liste so ca. 20 Eintràge hat.

Gibt es einen Trick, wie ich dem Einzeiler sagen kann '... aber
Exceptions bitte einfach ignorieren'?

Viele Grüße

Ole
 

Lesen sie die antworten

#1 Thomas Rachel
01/10/2010 - 17:57 | Warnen spam
Am 01.10.2010 17:39, schrieb Ole Streicher:

ich möchte gerne eine Liste von einigen Einzelobjekten erstellen, wobei
jede Einzelerstellung auch fehlschlagen kann. Etwa so etwas:

l = [ x(1), y(2), z(3), a(1) ]


die aufgerufenen Funktionen können aber auch fehlschlagen; in diesem
Fall hàtte ich gerne einfach kein Element hinzugefügt.

Derzeit löse ich das standardmàßig:



[snip]

Vielleicht

for f in (lambda:x(1), lambda:y(2), lambda:z(3), lambda:a(1)):
try:
l.append(f())
except KeyboardInterrupt: # würde ich mit reinnehmen
raise
except:
pass

?


Thomas

Ähnliche fragen