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

1

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

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

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

  • 0
    использовать args и kwargs ?
  • 0
    Возможно, вы захотите использовать kwargs. Смотрите это: stackoverflow.com/questions/1769403/…
Теги:
python-3.x
arguments
parameter-passing
filereader

3 ответа

2
Лучший ответ

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

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

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

reader1, reader2, reader3 = setup(file1, file2, file3)
  • 0
    Тогда как мне получить доступ к читателю для каждого файла? Я попробовал это и получил NoneType для readers . Я ожидал получить список читателей. Я ошибаюсь?
  • 0
    Я обновил свой ответ с примером.
1

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

def setup(*args):
    reader_list = [PyPDF2.PdfFileReader(el) fro el in args]
0

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

def foo(*args):
   print(len(args))

Ещё вопросы

Сообщество Overcoder
Наверх
Меню