美文网首页
编写高质量Python代码的59个有效方法 第21条:用只能以关

编写高质量Python代码的59个有效方法 第21条:用只能以关

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

    按关键字传参很灵活,可以把函数的用法表达得更明确。
    例如,计算两数相除,有两种特殊情况。有时我们想忽略ZeroDivisionError异常并返回无穷。有时想忽略OverflowError异常返回0。

    def sate_division(a, b, ignore_overflow=False, ignore_zero_division=False):
        try:
            return a/b
        except OveflowError:
            if ignore_overflow:
                return 0
            else:
                raise
        except ZeroDivisionError:
            if ignore_zero_division:
                return float('inf')
        else:
            raise
    

    缺陷是关键字参数依然可以通过位置参数的形式调用。

    safe_division(1, 2, True, False)
    

    对于复杂函数来说,最好保证调用者清晰地调用代码。可以定义一种只能以关键字形式来指定的参数。

    def sate_division(a, b, *, ignore_overflow=False, ignore_zero_division=False):
    

    *号表示位置参数就此终结。

    要点

    • 关键字参数能使函数调用的意图更明确
    • 对于各参数之间容易混淆的函数,可以声明只能以关键字形式指定的参数。对于接受多个boolean标志的函数,更应该这样做

    相关文章

      网友评论

          本文标题:编写高质量Python代码的59个有效方法 第21条:用只能以关

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