Python中ZeroDivisionError中不存在返回语句的问题



我一直在做"用Python编程自动化无聊的东西";当然,我不明白为什么作者说输出中None值的原因是事实,因为下面的函数中没有return语句。我以为";返回42/divideBy";是需要的返回语句。我是编程界的新手,所以我希望能有一个简单的解释。感谢

def div42by (divideBy):
try:
return 42/divideBy
except ZeroDivisionError:
print ('Error: You tried to divide by zero.')
print (div42by(2))
print (div42by(12))
print (div42by(0))
print (div42by(1))
(output)
21.0
3.5
Error: You tried to divide by zero.
None
42.0

您认为return 42/divideBy是一个返回语句是正确的。

但当divideBy等于零时,42/divideBy部分将引发一个ZeroDivisionError,这意味着return从未实际运行过。相反,Python跳到print ('Error: You tried to divide by zero.')行,并从那里继续运行。这一行之后没有return语句,所以Python会自动返回None

另一种方法是,你的div42by函数等效于:

def div42by(divideBy):
try:
result = 42 / divideBy
return result
except ZeroDivisionError:
print('Error: You tried to divide by zero.')

当CCD_ 11为零时,CCD_。

由于除以零会引发ZeroDivisionError,因此不执行return语句。该ZeroDivisionError随后被try->除了块。

事情发生的顺序是:

  • python3尝试执行42 / divideBy(为零(
  • 42 / divideBy引发ZeroDivisionError
  • ZeroDivisionError被try捕获,除了
  • 执行except块,使python3打印错误消息
  • 该函数仍在继续,但已没有"代码">
  • 未执行任何返回语句

要仍然获得返回,需要在下面有一个return语句try->除了但仍在函数内部。

相关内容

  • 没有找到相关文章

最新更新