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