编写高质量Python代码的59个有效方法 第21条:用只能以关键字形式指定的参数来确保代码明晰

按关键字传参很灵活,可以把函数的用法表达得更明确。
例如,计算两数相除,有两种特殊情况。有时我们想忽略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条:用只能以关键字形式指定的参数来确保代码明晰)