【发布时间】:2019-03-17 18:21:05
【问题描述】:
我正在上一门 Python 课程,他们建议在 while 循环中使用 try 和 except 块,以便在满足条件之前不断询问输入。直觉上我觉得像这样在“except”块中再次调用函数会更短:
def exceptiontest():
try:
print(int(input("number 1: "))+int(input("number 2:")))
except:
print("a mistake happened")
exceptiontest()
exceptiontest()
在论坛上询问课程时,我得到的答复是不一样。我现在有点困惑。任何人都可以为我澄清吗?提前致谢!
【问题讨论】:
-
如果您一次又一次地调用该函数,您正在调用堆栈上装订函数调用:
exceptiontest(exceptiontest(exceptiontest(exceptiontest(exceptiontest(exceptiontest(exceptiontest())))))):。那是不必要的努力和不好的做法 - while 循环不需要这样做,因为您停留在同一个函数中。 -
不要让错误悄悄地过去。很好用:除了ValueError as e: print(e)。
-
@Patrick Artner,非常有用的链接,谢谢。我知道它与性能和调用堆栈有关。很好的帮助!
标签: python recursion error-handling while-loop try-except