2010-12-11 8 views

答えて

39

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を参照してください。

+1

をここにキーワード引数の[セクションへのリンクです](http://docs.python.org/tutorial/controlflow.html#keyword-arguments)のチュートリアルの最新バージョンを参照してください(情報は同じように見えますが)。 – martineau

+1

Googleはそのバージョンで私を落とし続けました。皮肉なことに、古いバージョンは読みやすくなります。彼らは遠く離れて、新しい色のスタイリングで気を散らしていて、背景色が急激に前後に飛んでいます。 –

3

Timerの3番目の引数はシーケンスです。そのシーケンスとして "bb"を渡すので、helloは、そのシーケンスの要素( "b"と "b")を別々の引数(argkargs)として取得します。 "bb"をリストに入れて、helloは最初の引数として文字列を取得します。 helloのパラメータについては

t = threading.Timer(2, hello, ["bb"]) 

、あなたはおそらく意味:

def hello(*args, **kwargs): 

**kwargsの意味はquestonで覆われている 『What does *args and **kwargs mean?

関連する問題