Если вы не написали эту функцию и не можете изменить ее сигнатуру, вы можете передать нужное количество аргументов следующим образом:
function_name(*(0,) * function_name.__code__.co_argcount)
Она передаст то же значение (в этом случае от 0
) до всех аргументов, ожидаемых функцией.
Если вам нужно передать только 10 аргументов, например, вы можете написать:
function_name(*(0,) * 10)
Если вы хотите указать конкретные c аргументы по их позиции, а не по их именам, вы можете использовать это:
import inspect
def func(a, b, c=None, d='foo', e=False):
print(a, b, c, d, e)
def fill_args(fun, value, arg_numbers):
return {
name: value
for name in (
tuple(inspect.signature(fun).parameters)[i]
for i in arg_numbers
)
}
if __name__ == '__main__':
func(**fill_args(func, 0, (0, 1, 2)))
func(**fill_args(func, 'bar', (0, 1, 4)))
func(**fill_args(func, True, (0, 1, 3)))