可以用两种不同方式调用函数的Python最佳实践
问题描述:
对于可以用两种“种类”参数调用的函数,Python中的最佳实践是什么?可以用两种不同方式调用函数的Python最佳实践
举个例子,我有一个功能run_fit
,可以采取一个radius
参数,适合在半径所有点或可以采取region
参数,适合在所有点自定义region
。
应该radius
和region
是关键词的参数吗?即使总是需要一个?
问我的问题的另一种方式是:有没有办法捕捉这样一个事实,即不需要论证,但至少必须提供一个参数?
答
是的,使用关键字参数,然后使用断言来确保传递正确的参数组合。
def run_fit(radius=None, region=None):
if not radius and not region:
raise AssertionError("Supply either radius or region")
if radius and region:
raise AssertionError("Only supply one of radius and region")
你也可以直接写断言:
assert radius or region, "Supply either radius or region"
assert not (radius and region), "Only supply one of radius or region"
但我个人认为第一个版本是更具可读性。
答
这个问题不仅仅适用于python编程,它可以应用于任何编程。如果一个函数做了两个不同的事情,比如拟合一个半径和拟合一个区域,最好将函数分成两个不同的函数,并给每个类似fit_raidus和fit_region的名称赋予更有意义的名称,而不是像run_fit这样的通用名称。
也许你可以带两个参数,一个是你传入的参数,另一个是你传入的参数的布尔代表? – Natecat