1我正在学习python,发现很难理解try-and-except语句的位置
def divide (n1, n2): try: d = n1/n2 except : print("Wrong")
然后除以(10,0)得到正确的“错误”
但是如果我把try放在函数的顶部,它就不起作用了
try: def divide (n1, n2): d = n1/n2 except : print("Wrong")
然后除以(10,0)产生常规的回溯错误。
为什么在第二个例子中excel不起作用?
在python中,如果您的execute结果出错,则尝试execute或run。在你的例子2中 定义 (功能)和 定义 在python中,在调用之前不会执行,因此except不起作用
由于函数定义正在尝试。。。除了块而不是函数调用。而且除非调用函数定义,否则函数定义将不会被执行(函数调用应该始终在try…except中)。因此,您提到的第二个代码的效率不足以捕获异常。
下面的代码也可以工作:
def divide (n1, n2): d = n1/n2 try: divide(12, 0) except: print("Wrong")
你的第二次尝试只包括 定义 函数,以及 def 也不例外。如果你把这个叫做某处: divide(10, 0) ,它已经在try catch块之外。
def
divide(10, 0)
这是因为如果不在try except部分中运行函数,它将始终运行,因为函数将始终在不被调用的情况下工作,如果在try except中调用它,它将工作:
try: def divide (n1, n2): d = n1/n2 print(divide(0,0)) except : print("Wrong")
它将提供:
Wrong
但在所有的解决方案中,你的1个解决方案是最好的。
第一个例子是正确的使用方法。
在第二个例子中,定义函数:
def divide (n1, n2): d = n1/n2
所以,当您调用它时,try语句甚至都不执行。try和except语句不在范围内,而且在您想要使用它们的方式上毫无用处。在本例中,如果在到达try时无法定义devide函数,则将打印“错误”输出,但情况并非如此
Here 您将在Python中找到如何处理错误和异常的文档。