2017-06-26 1 views
2

を与えられた。私は自分のサーバー上でこれを実行しようとしますがTypeError例外:f0は(1つの)位置引数を取りますが、9が、私はリストを持っていると仮定し

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() 

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

は、私は2つの機能を持っています、それは私にエラーを与える。

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

問題が何であるかを教えてください。あなたはargs値として単一の文字列で渡している

+0

かなり確実ではなく、ループが起こっているように見えるではありません9文字の最初の要素(hello.com)を介して、aがリストであることは確かですか? – Eliethesaiyan

答えて

4

args=(i) 

タプルではありません、それは、9つの個別の要素(単一文字列)で反復可能なだけ'hello.com'を含むグループ化された表現です。

カンマを追加します。リストを使用し、

args=(i,) 

またはあなたはそれが混乱発見した場合::タプルはコンマではなく、括弧(通話中に他の引数からタプルを明確にするために括弧を必要とするが)によって形成されている

args=[i] 
0

'args =(i)'では、(i)はタプルではありません。右の文はとなりますので、追加することによって、タプルに 変換(I): T1 = thread.Thread(対象= F0、引数=(I))

関連する問題