私のコード:
import threading
def hello(arg, kargs):
print arg
t = threading.Timer(2, hello, "bb")
t.start()
while 1:
pass
印刷出力は次のとおりです。
b
コールバックに引数を渡すにはどうすればよいですか? kargsの意味?
Timer
は引数の配列とキーワード引数のdictを取るため、配列を渡す必要があります。
import threading
def hello(arg):
print arg
t = threading.Timer(2, hello, ["bb"])
t.start()
while 1:
pass
配列を与えていないので "b"が表示されているので、"bb"
は反復可能として扱われます。基本的には、["b", "b"]
を指定したかのようです。
kwargs
はキーワード引数用です。例:
t = threading.Timer(2, hello, ["bb"], {arg: 1})
キーワード引数の詳細については、 http://docs.python.org/release/1.5.1p1/tut/keywordArgs.html を参照してください。
Timer
の3番目の引数はシーケンスです。 「bb」をそのシーケンスとして渡すので、hello
はそのシーケンスのエレメント(「b」と「b」)を別々の引数(arg
とkargs
)として取得します。リストに「bb」を入れると、hello
は最初の引数として文字列を取得します。
t = threading.Timer(2, hello, ["bb"])
hello
のパラメーターについては、おそらく次のことを意味します。
def hello(*args, **kwargs):
の意味 **kwargs
はクエストでカバーされています " * argsと** kwargsの意味? "