Python函数采用N个位置参数,但给出了M.

时间:2013-06-06 04:35:14

标签: 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.initServer, args=(inputFile))
     server_process.start()

def initServer(self,inputFile):
    print(inputFile)

但是,在执行这些行时,我得到一个带有以下错误的TraceBack:

TypeError: initServer() takes 2 positional arguments but 182 were given

这里,inputFile是一个简单的HTML网页。 我哪里出错并发出182个参数?

1 个答案:

答案 0 :(得分:3)

根据the docs

  

args是目标调用的参数元组

所以它必须是一个元组。您提供了(inputFile) - 相当于简单inputFile。这是实际文件,可以迭代。 Process实现可能正在执行target(*args),它会将文件解包到其行中。

您应该传递args=(inputFile, ),这是一个包含单个对象的元组。所以*args变为inputFile,正如所料。