Python需要变量样式

时间:2010-05-17 20:40:32

标签: python

需要关键字参数'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方法中处理所需关键字参数的最佳实践方法。

3 个答案:

答案 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