2016-08-22 3 views
2

Я пытаюсь дать аргумент импортированной функции.
У меня есть base.py:Python дает количество аргументов импортированной функции

import sc1 #import sc1.py 
from threading import Thread 

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

И функция в sc1.py:

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

Say

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

Если я дам только один args="J" то он работает отлично,
ли кто-либо любая идея, что я могу сделать?

ответ

4

Вы хотите передать кортеж аргументах:

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

В вашем случае, поскольку str являются итерацию, то Thread пытается распаковать "J" "o", "h", "n" как аргументы, а не передавая всю вещь как неделимая единица.

+0

Большое спасибо, отлично работает! –

2

Вызовите Thread как:

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

Explaination:

Он бросает ошибку в вашем случае, поскольку args как ожидается, будет list или tuple типа. И когда вы проходите мимо "John", оно проходит как ["J", "o", "h", "n"] i.e. Массив chars

+0

Ницца! Спасибо. –

Смежные вопросы