Давайте перейдем к чему-то более эзотерическому. Предположим, вы хотите выполнить список функций и сохранить результат каждой из них. Для каждой функции, которая вызвала исключение, вы хотите записать исключение, а также вести подсчет того, сколько раз вызывается каждый вид исключения. Функции и исключения могут использоваться как клавиши dict
, так что это легко:
funclist = [foo, bar, baz, quux]
results = {}
badfuncs = {}
errorcount = {}
for f in funclist:
try:
results[f] = f()
except Exception as e:
badfuncs[f] = e
errorcount[type(e)] = errorcount[type(e)] + 1 if type(e) in errorcount else 1
Теперь вы можете выполнить if foo in badfuncs
, чтобы проверить, вызвала ли эта функция исключение (или if foo in results
, чтобы проверить, правильно ли она работает), if ValueError in errorcount
, чтобы узнать, была ли вызвана какая-либо функция ValueError
, и т. Д.