У меня есть несколько уровней вызовов функций, передавая общий словарь аргументов ключевых слов:
def func1(**qwargs):
func2(**qwargs)
func3(**qwargs)
Я хотел бы предоставить некоторые аргументы по умолчанию в некоторых последующих вызовах функций, что-то вроде этого:
def func1(**qwargs):
func2(arg = qwargs.get("arg", default), **qwargs)
func3(**qwargs)
Проблема с этим подходом состоит в том, что если arg находится внутри qwargs, TypeError вызывается с «получил несколько значений для аргумента ключевого слова».
Я не хочу устанавливать qwargs ["arg"] по умолчанию, потому что тогда func3 получает этот аргумент без ордера. Я мог бы сделать copy.copy из qwargs и установить «arg» в копии, но в qwargs могли быть большие структуры данных, и я не хочу их копировать (возможно, copy.copy не будет, только copy.deepcopy ?).
Что тут делать с питоном?