マイコード:python theading.Timer:コールバックに引数を渡す方法は?
import threading
def hello(arg, kargs):
print arg
t = threading.Timer(2, hello, "bb")
t.start()
while 1:
pass
プリントアウトプットだけである:
b
私はコールバックに引数を渡すことができますどのように?カーグはどういう意味ですか?
マイコード:python theading.Timer:コールバックに引数を渡す方法は?
import threading
def hello(arg, kargs):
print arg
t = threading.Timer(2, hello, "bb")
t.start()
while 1:
pass
プリントアウトプットだけである:
b
私はコールバックに引数を渡すことができますどのように?カーグはどういう意味ですか?
Timer
は、引数の配列とキーワード引数の辞書を取るので、あなたは、配列を渡す必要があります。
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
は最初の引数として文字列を取得します。 hello
のパラメータについては
t = threading.Timer(2, hello, ["bb"])
、あなたはおそらく意味:
def hello(*args, **kwargs):
を**kwargs
の意味はquestonで覆われている 『What does *args and **kwargs mean?』
をここにキーワード引数の[セクションへのリンクです](http://docs.python.org/tutorial/controlflow.html#keyword-arguments)のチュートリアルの最新バージョンを参照してください(情報は同じように見えますが)。 – martineau
Googleはそのバージョンで私を落とし続けました。皮肉なことに、古いバージョンは読みやすくなります。彼らは遠く離れて、新しい色のスタイリングで気を散らしていて、背景色が急激に前後に飛んでいます。 –