2009-07-24 6 views
4

可能性の重複:
What does *args and **kwargs mean?Pythonで引数を渡すとき**引数の前に**何をするのですか?

この例を読んだからとPythonの私のスリムな知識から、それは辞書か何かに配列を変換するための近道である必要がありますか?

class hello: 
    def GET(self, name): 
     return render.hello(name=name) 
     # Another way: 
     #return render.hello(**locals()) 
+0

正確な複製http://stackoverflow.com/questions/287085/what-does-args-and-kwargs-mean – SilentGhost

+1

これは実際には重複していません。この質問は 'f(** d)'で関数を呼び出すことは何を意味するのかを質問しますが、他の質問は関数のパラメータ定義で '*'と '**' – sth

答えて

1

辞書を引数リストとして「アンパック」します。 は、すなわち:

def somefunction(keyword1, anotherkeyword): 
    pass 

それはPythonで

somefunction(keyword1=something, anotherkeyword=something) 
or as 
di = {'keyword1' : 'something', anotherkeyword : 'something'} 
somefunction(**di) 
11

として呼び出すことができf(**d)機能fに辞書dなどのキーワードパラメータの値を渡します。同様にf(*a)は配列aの値を位置パラメータとして渡します。一例として、

**dまたは*aでこの関数を呼び出す

def f(count, msg): 
    for i in range(count): 
    print msg 

>>> d = {'count': 2, 'msg': "abc"} 
>>> f(**d) 
abc 
abc 
>>> a = [1, "xyz"] 
>>> f(*a) 
xyz 
1

Python docuemntation, 5.3.4から:

任意のキーワード引数は正式に対応していない場合パラメータ名、TypeError例外は、正式なp構文**識別子を使用するメタデータが存在する。この場合、仮引数は余分なキーワード引数を含む辞書を受け取る(キーワードをキーと引数値を対応する値として使用する)か、余分なキーワード引数がない場合は(新しい)空の辞書を受け取る。

これは別の文脈でthe power operatorでも使用されます。

1

** local()は、呼び出し元のローカル名前空間に対応する辞書を渡します。 **の辞書に関数を渡すと、可変長の引数リストが可能になります。

関連する問題