8

重複の可能性:
**(二重星)と*(星)はPythonパラメーターに対して何をしますか?

ZSIforpythonによって生成されたコードを読んでいます。このような線があります

def verifyVehicle(self, request, **kw): ....

この**kwは何をしているのか知りたいです。これは辞書タイプですか?ありがとう

4

1 に答える 1

21

これは、メソッド定義に含まれていない、関数に渡されるすべてのキーワード引数を参照します。例えば:

>>> def foo(arg, **kwargs):
...     print kwargs
... 
>>> foo('a', b="2", c="3", bar="bar")
{'c': '3', 'b': '2', 'bar': 'bar'}

これは、キーワード以外のすべての引数を参照する1つのアスタリスクを使用するのと似ています。

>>> def bar(arg, *args):
...     print args
... 
>>> bar(1, 2, 3, 'a', 'b')
(2, 3, 'a', 'b')

あなたはこれらを組み合わせることができます(そして人々はしばしばそうします)

>>> def foobar(*args, **kwargs):
...     print args
...     print kwargs
... 
>>> foobar(1, 2, a='3', spam='eggs')
(1, 2)
{'a': '3', 'spam': 'eggs'}
于 2012-04-18T01:50:14.720 に答える