Если ваши входные и выходные файлы должны совпадать, вы можете передать в функцию наборы, каждый из которых содержит имена входных и выходных файлов:
def func1(arg1, arg2, *files):
for input_file, output_file in files:
...
# USAGE
func1(1, 2, *zip(["input_1.txt", "input_2.txt"], ["output_1.txt", "output_2.txt"]))
func1(3, 4, ("input_1.txt", "output_1.txt"), ("input_2.txt", "output_2.txt"))
func1(5, 6, *{"input_1.txt": "output_1.txt", "input_2.txt": "output_1.txt"}.items())
Но вам не нужны здесь упаковочные аргументы:
def func2(arg1, arg2, files):
for input_file, output_file in files:
...
# USAGE
func2(1, 2, zip(["input_1.txt", "input_2.txt"], ["output_1.txt", "output_2.txt"]))
func2(3, 4, (("input_1.txt", "output_1.txt"), ("input_2.txt", "output_2.txt")))
func2(5, 6, {"input_1.txt": "output_1.txt", "input_2.txt": "output_1.txt"}.items())