Есть ли способ узнать, сколько аргументов передается в функции? - PullRequest
0 голосов
/ 16 октября 2018

Обращаясь к вопросу выше, есть ли способ определить, сколько аргументов передается функции.

def setup(file1, file2):
    reader1 = PyPDF2.PdfFileReader(file1)
    reader2 = PyPDF2.PdfFileReader(file2)

Моя цель - сделать функцию универсальной.Мой план состоит в том, чтобы определить, сколько передано аргументов, а затем изменить поведение функции, например, если в функцию переданы три файла, она создаст 3 считывателя.Я буду использовать цикл for, чтобы назвать читателей и передать нужные файлы в функцию PdfFileReader().Но я просто не знаю, как заставить функцию вести себя так, как я хочу, чтобы она была в первую очередь.

Ответы [ 3 ]

0 голосов
/ 16 октября 2018

Использовать переменное число аргументов синтаксиса.Например:

def foo(*args):
   print(len(args))
0 голосов
/ 16 октября 2018

Вы можете использовать *args.Просто сделай как:

def setup(*args):
    reader_list = [PyPDF2.PdfFileReader(el) fro el in args]
0 голосов
/ 16 октября 2018

Вместо этого вы можете использовать переменные аргументы:

def setup(*files):
    readers = [PyPDF2.PdfFileReader(file) for file in files]
    return readers

, поэтому, если, например, вы хотите вызвать его из 3 файлов, вы можете вызвать его с помощью:

reader1, reader2, reader3 = setup(file1, file2, file3)
...