2017-06-26 49 views
2

假設我有一個列表:類型錯誤:F0()需要1周位置的說法,但被給予9

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 

請告訴我最新的問題。

+0

不太確定,但看起來像循環正在進行通過有9個字母的第一個元素(hello.com),你確定a是一個列表嗎? – Eliethesaiyan

回答

4

您傳遞一個單一的字符串作爲args值:

args=(i) 

這不是一個元組,這是隻包含'hello.com',可迭代9個單獨元件(單個字符字符串)分組的表達。

添加逗號;元組由逗號形成的,而不是括號(雖然你需要括號來消除歧義從其他參數的元組在通話中):

args=(i,) 

,或者如果你覺得還不清楚,請使用清單:

args=[i] 
0

在'args =(i)'中,(i)不是元組。 通過追加將(i)轉換爲元組,因此正確的語句爲: t1 = thread.Thread(target = f0,args =(i,))

相關問題