需要关键字参数'required_arg'的Python方法的最佳样式是什么:
def test_method(required_arg, *args, **kwargs):
def test_method(*args, **kwargs):
required_arg = kwargs.pop('required_arg')
if kwargs:
raise ValueError('Unexpected keyword arguments: %s' % kwargs)
还是其他什么?我希望将来可以将它用于我的所有方法,所以我正在寻找在Python方法中处理所需关键字参数的最佳实践方法。
答案 0 :(得分:7)
到目前为止的第一种方法。为什么要复制已经为您提供的语言?
大多数情况下的可选参数应该是已知的(只有在没有可能知道参数的方法时才使用* args和** kwargs)。通过为其提供默认值(def bar(foo = 0)
或def bar(foo = None)
)来表示可选参数。注意def bar(foo = [])
{{1}}的经典问题。{/ 3}}。
答案 1 :(得分:2)
第一种方法让您有机会为所需的参数提供有意义的名称;使用* args不会。在需要时使用* args非常棒,但为什么要放弃更清楚地表达你意图的机会呢?
答案 2 :(得分:0)
如果您不想要任意关键字参数,请忽略**参数。对于所有神圣的爱,如果你有 需要的东西,那就把它作为一个正常的论点。
而不是:
def test_method(*args, **kwargs):
required_arg = kwargs.pop('required_arg')
if kwargs:
raise ValueError('Unexpected keyword arguments: %s' % kwargs)
这样做:
def test_method(required_arg, *args):
pass