Sie do haben eine Ausnahme; Sie fangen die Ausnahme (die eine Unterklasse von Exception
ist). Sie erhalten diese Ausnahme, weil fun1
noch nicht existiert.
Bewegen Sie die fun1()
Definition vor der try..except
oder diesen Code in eine Funktion bewegen Sie nachfun1()
wurde erstellt nennen.
Sie wären auch besser dran mit einer weniger generischen Ausnahme, es hätte das Problem viel früher sichtbar gemacht; Sie ValueError
verwenden könnte, wenn man die Dinge testen wollen, ist es weit weniger wahrscheinlich, dass in keinem Zusammenhang Fragen geworfen werden:
>>> try:
... fun1(1)
... fun1(1)
... except ValueError:
... print "exception"
... else:
... print "hi"
...
Traceback (most recent call last):
File "<stdin>", line 2, in <module>
NameError: name 'fun1' is not defined
>>> def fun1(i):
... if i == 0:
... raise ValueError()
... else:
... print "no exception"
...
>>> try:
... fun1(1)
... fun1(1)
... except ValueError:
... print "exception"
... else:
... print "hi"
...
no exception
no exception
hi
>>> try:
... fun1(0)
... except ValueError:
... print "exception"
... else:
... print "hi"
...
exception
Sie einen 'NameError' bekommen ... –