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

2018-09-21  本文已影响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):

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

要点

上一篇下一篇

猜你喜欢

热点阅读