Конечно, это возможно. В питоне можно все, потому что все доступно в любой момент времени. Вопрос только в сложности и обработке всех возможных вариантов. В таких случаях помогает модуль
inspect
. Но, если до такого дошло в прикладном коде, значит дела идут не важно и не туда.
import inspect
def get_default_args(func):
signature = inspect.signature(func)
return {
k: v.default
for k, v in signature.parameters.items()
if v.default is not inspect.Parameter.empty}
def f1(a=5, *b):
print(a)
print(b)
if __name__ == '__main__':
f1(1, 2, 3)
f1(*get_default_args(f1).values(), 1, 2, 3)