Если возможные параметры и значения по умолчанию фиксированы, Pythonic может написать:
def test(this=1, that=2):
...
Если список параметров является динамическим, ваш подход с kwds.pop () имеетхорошее преимущество, позволяющее вам убедиться, что все аргументы были использованы (например, для определения имен параметров с ошибками).Поучительно посмотреть на фрагмент из кода, сгенерированного collections.namedtuple('Point', ['x', 'y'], verbose=True)
.Обратите внимание на окончательную проверку, чтобы убедиться, что все аргументы были использованы из kwds:
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