Function Python:设置配置参数

Function Python:设置配置参数,function,python,Function,Python,处理配置参数的首选方法是什么 例如: test(this=7) 可通过以下方式处理: def test(**kw): this = kw.pop('this', 1) that = kw.pop('that', 2) 或 有更好的(更具python风格的)方法吗?我个人喜欢循环使用键/值对,如下所示: def test(**kw): for k, v in kw.items(): if k == 'this': something =

处理配置参数的首选方法是什么

例如:

test(this=7)
可通过以下方式处理:

def test(**kw):
  this = kw.pop('this', 1)
  that = kw.pop('that', 2)


有更好的(更具python风格的)方法吗?

我个人喜欢循环使用键/值对,如下所示:

def test(**kw):
    for k, v in kw.items():
        if k == 'this':
            something = v
        # etc...

如果可能的参数和默认值是固定的,python方法是写入:

def test(this=1, that=2):
    ...
如果参数列表是动态的,那么使用kwds.pop()的方法有一个很好的优点,即可以让您验证是否使用了所有参数(例如检测拼写错误的参数名)。查看由
collections.namedtuple('Point',['x','y'],verbose=True)生成的代码片段很有帮助。请注意最后一项检查,以确保所有参数都是从KWD中使用的:

    def _replace(_self, **kwds):
        'Return a new Point object replacing specified fields with new values'
        result = _self._make(map(kwds.pop, ('x', 'y'), _self))
        if kwds:
            raise ValueError('Got unexpected field names: %r' % kwds.keys())
        return result 

def test(this=1,that=2)有什么问题?
?@JBernardo-没有什么问题,不过如果有很多参数,它可能会变得很麻烦。显示您是否设置了默认值?仅使用**kw,您就不会。如果我需要参数的默认值,我会做
测试(a=1,b=2,**kwargs)
。最后的检查很好
    def _replace(_self, **kwds):
        'Return a new Point object replacing specified fields with new values'
        result = _self._make(map(kwds.pop, ('x', 'y'), _self))
        if kwds:
            raise ValueError('Got unexpected field names: %r' % kwds.keys())
        return result