TypeError:f0()占用1个位置参数但是9个被赋予

时间:2017-06-26 07:26:12

标签: python django

假设我有一个清单:

a=['hello.com','ok.com']

我有两个功能:

   def f0(id):
         try:
             model.objects.get(links=id)
         except:
             model(modelfield=id).save()

   def f1(request):
        for i in a:
             t1=thread.Thread(target=f0,args=(i))
             t1.start()

虽然我尝试在我的服务器上运行它,但它给了我错误。

  TypeError: f0() takes 1 positional argument but 9 were given

请告诉我这是什么问题。

2 个答案:

答案 0 :(得分:4)

您传递的是git show HEAD:file/path # ours git show MERGE_HEAD:file/path # theirs 值的单个字符串:

args

这不是一个元组,这是一个只包含args=(i) 的分组表达式,一个包含9个独立元素(单字符串)的迭代。

添加逗号;元组由逗号而不是括号组成(尽管你需要使用括号来消除调用中元组与其他参数的歧义):

'hello.com'

或者如果您发现混淆,请使用列表:

args=(i,)

答案 1 :(得分:0)

在'args =(i)'中,(i)不是元组。 通过追加将(i)转换为元组,因此正确的陈述将是:      T1 = thread.Thread(目标= F0,ARGS =(I,))