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()中的第一个参数删除后,该参数起作用。不过你能解释一下为什么会这样吗?另外,如果你写下来作为回答,我可以接受。