Ссылаясь на вопрос выше, существует ли способ определить, сколько аргументов передано функции.
def setup(file1, file2):
reader1 = PyPDF2.PdfFileReader(file1)
reader2 = PyPDF2.PdfFileReader(file2)
Моя цель - сделать эту функцию универсальной. Мой план состоит в том, чтобы определить, сколько аргументов передано, а затем изменить поведение функции, например, если три файла переданы в функцию, это создаст 3 считывателя. Я буду использовать for
цикла, чтобы назвать читателей и передать правильные файлы функции PdfFileReader()
. Но я просто не знаю, как заставить функцию вести себя так, как я хочу, чтобы она была в первую очередь.
Вместо этого вы можете использовать переменные:
def setup(*files):
readers = [PyPDF2.PdfFileReader(file) for file in files]
return readers
поэтому, если, например, вы хотите называть его 3-мя файлами, вы можете вызвать его с помощью:
reader1, reader2, reader3 = setup(file1, file2, file3)
readers
. Я ожидал получить список читателей. Я ошибаюсь?
Вы можете использовать *args
. Просто сделайте так:
def setup(*args):
reader_list = [PyPDF2.PdfFileReader(el) fro el in args]
Используйте переменное число синтаксиса аргументов. Например:
def foo(*args):
print(len(args))
args
иkwargs
?