Python Function Exit Does Not Work - Why?
Why doesn't exit() stop the script after the first iteration? In my opinion, it has to stop after the first iteration. >>> def func(q): ... def funct(y): ... t
Solution 1:
To answer your question as directly as possible,
Why doesn't
exit()
stop the script after the first iteration?
Because a bare except
will catch BaseException
and Exception
, and since exit()
raises a SystemExit, which is a BaseException
subclass, your code will swallow the exception and pass on each iteration.
Note the difference if you catch Exception
only, which does not suppress a BaseException
:
>>>from sys import exit>>>>>>deffunc(q):...deffunct(y):...try:...print(y)... exit()...except Exception:...pass... funct(q)...>>>a = ['1','2','3','4','5','6','7']>>>for x in a: func(x)...
1 # exits
Solution 2:
try: sys.exit(0)
and move it to the scope of the global function
import sys
deffunc(q):
deffunct(y):
try:
print(y)
except:
pass
funct(q)
sys.exit(0)
a=['1','2','3','4','5','6','7']
for x in a:
func(x)
Output: 1
Post a Comment for "Python Function Exit Does Not Work - Why?"