美文网首页
编写高质量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