有没有办法知道函数中传递了多少个参数?

Is there a way to know how many arguments are passed in a function?

参考上面的问题,有没有办法确定有多少参数传递给函数。

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)

使用可变数量的参数语法。例如:

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

你可以利用*args。只是喜欢:

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