Есть ли способ перенаправить аргументы функции, не скрывая тот факт, что первоначальный вызов предоставил или не предоставил необязательные аргументы?
def func1(a=x):
# do stuff
def func2(b=y):
# pass args to func1 without masking func1 defaults
return func1(?)
Вызов func2() должен привести к вызову func1() без аргументов или, по крайней мере, с аргументами по умолчанию, какими бы они ни были.
Следующее почти работает, но в принципе я не знаю, есть ли у func2 способ определить, были ли вызваны его значения по умолчанию.
def func2(b=y):
# this comes close but what if func2(y) is called?
if b == y:
return func1()
else:
return func1(b)
1
, какая разница, если вызывающая функция передала1
или оставила его в покое? - person Ethan Furman   schedule 09.09.2014frobble = func2(a=9)
, какое мне дело до того, что аргумент по умолчаниюfunc1()
изменил значение с9
на11
? - person Ethan Furman   schedule 09.09.2014func2
должен быть достаточно умен, чтобы передавать только соответствующие параметрыfunc1
, и это должно полагаться на значения по умолчанию любых параметров. - person Ethan Furman   schedule 09.09.2014