美文网首页
编写高质量Python代码的59个有效方法 第2章 函数 第14

编写高质量Python代码的59个有效方法 第2章 函数 第14

作者: 淡淡的咸鱼 | 来源:发表于2018-09-19 11:03 被阅读0次

定义一个求商函数,要点是分母不能为0:

def divide(a, b):
    try:
        return a/b
    except ZeroDivisionError as e:
        return None

人们这样调用这个函数:

result = divide(x, y)
if not result:
    print("Invalid inputs")
else:
    print(result)

这个函数的缺陷在于当分子为0时,本应输出为0的result被判断为False而输出Invalid inputs


另一种写法:

def divide(a, b):
    try:
        return a/b
    except ZeroDivisionError as e:
        raise ValueError("Invalid inputs") from e

为了应对这种抛出异常的函数(抛出异常应写入开发文档),调用者就不会像上面一样调用了

try:
    result = divide(x, y)
except ValueError:
    print("Invalid inputs")
else:
    print(result)

要点:

  • 用None表示返回值容易使调用者犯错,因为None、0、空字符串在条件表达式里都为False。
  • 函数遇到特殊情况时,应抛出异常,而不要返回None,调用者看到文档中所描述的异常后,就会编写相应的代码来处理它们了。
    wtx

相关文章

网友评论

      本文标题:编写高质量Python代码的59个有效方法 第2章 函数 第14

      本文链接:https://www.haomeiwen.com/subject/lrbbnftx.html