Function Python函数接受N个位置参数,但给出了M

Function Python函数接受N个位置参数,但给出了M,function,parameters,python-3.x,Function,Parameters,Python 3.x,我尝试以下列方式调用函数: for TestCase in sys.argv[1:]: TestTree = ET.parse(TestCase) Root = TestTree.getroot() inputFile = Root[0].text start_server(inputFile) def start_server (inputFile): server_process = Process(target=HTTPServer.initSe

我尝试以下列方式调用函数:

for TestCase in sys.argv[1:]:
    TestTree = ET.parse(TestCase)
    Root = TestTree.getroot()
    inputFile = Root[0].text
    start_server(inputFile)

def start_server (inputFile):
     server_process = Process(target=HTTPServer.initServer, args=(inputFile))
     server_process.start()

def initServer(self,inputFile):
    print(inputFile)
但是,在执行这些行时,我得到一个带有以下错误的回溯:

TypeError: initServer() takes 2 positional arguments but 182 were given
这里,inputFile是一个简单的HTML网页。 我哪里出错并发送了182个参数?

根据:

args
是目标调用的参数元组

所以它一定是一个元组。您提供了
(inputFile)
——相当于简单的
inputFile
。这是实际的文件,它是可编辑的<代码>过程实现可能正在执行
target(*args)
,它将文件解压到其行中

您应该传递
args=(inputFile,)
,这是一个包含单个对象的元组。因此,
*args
会像预期的那样变成
inputFile

根据:

args
是目标调用的参数元组

所以它一定是一个元组。您提供了
(inputFile)
——相当于简单的
inputFile
。这是实际的文件,它是可编辑的<代码>过程实现可能正在执行
target(*args)
,它将文件解压到其行中


您应该传递
args=(inputFile,)
,这是一个包含单个对象的元组。因此,
*args
变成了
inputFile
,正如预期的那样。

您复制粘贴了这个吗?听起来像是传递了
*inputFile
或是我从自己的代码复制粘贴的东西。但它不是从其他地方复制的。尝试传递
args=(inputFile,)
Elazar:在将self作为initServer()中的第一个参数删除后,该参数起作用。不过你能解释一下为什么会这样吗?另外,如果你把它写下来作为答案,我可以接受。你复制粘贴了这个吗?听起来像是传递了
*inputFile
或是我从自己的代码复制粘贴的东西。但它不是从其他地方复制的。尝试传递
args=(inputFile,)
Elazar:在将self作为initServer()中的第一个参数删除后,该参数起作用。不过你能解释一下为什么会这样吗?另外,如果你写下来作为回答,我可以接受。