Это возможный сценарий использования для locals()
:
def foo(arg, arg2=None):
return another_fn(**locals())
Если вам нужно, вы также можете распаковать self
:
class bar:
def foo(self, arg):
kwargs = locals()
kwargs.pop('self')
return another_fn(**kwargs)
Предостережение: если вы определите какие-либо локальные переменные в методе перед вызовом locals()
, они попадут в вывод, и вам придется их отфильтровать.
def foo(self, arg=None):
baz = 'Oops'
kwargs = locals() # {'self': <bar at 0x0000>, 'arg': None, 'baz': 'Oops'}
return another_fn(**kwargs)
Простое решение просто позвоните locals()
, прежде чем делать что-либо еще, сделайте копию для безопасности и не забудьте очистить self
в методах экземпляра:
class bar:
def foo(self, arg=None):
kwargs = locals().copy() # {'self': <bar at 0x0000>, 'arg': None}
kwargs.pop('self')
baz = 'Oops'
return another_fn(**kwargs)
Надеюсь, это поможет!