2016-08-22 3 views
2

Ich versuche, einer importierten Funktion ein Argument zu geben.
Ich habe base.py:Python geben einer importierten Funktion eine Anzahl von Argumenten

import sc1 #import sc1.py 
from threading import Thread 

Thread(target=sc1.main,args="John").start() 

und eine Funktion in sc1.py:

def main(name): 
    print "Hello ",name 

Say

TypeError: main() takes exactly 1 argument (4 given)

Wenn ich args="J" nur einen geben dann fein es funktioniert,
Hat jemand Irgendeine Idee, was ich tun kann?

Antwort

4

Sie wollen ein Tupel von args weitergeben müssen:

Thread(target=sc1.main,args=("John",)).start() 

In Ihrem Fall, da str iterable sind, die Thread versucht "J" "o", "h", "n" als Argumente zu entpacken, anstatt die ganze Sache als eine unteilbare Einheit vorbei.

+0

übergeben Vielen Dank, funktioniert gut! –

2

Rufen Sie die Thread als:

Thread(target=sc1.main,args=["John"]).start() 

Explaination:

Es wird Fehler in Ihrem Fall zu werfen, weil args erwartet wird, von list oder tuple Typ zu sein. Und wenn Sie "John" passieren, wird es als ["J", "o", "h", "n"], d. H. Array von chars

+0

Schön! Danke. –

Verwandte Themen