2012-04-18 6 views
7

Можно создать дубликат:
What does ** (double star) and * (star) do for python parameters?Что означает двойная звезда, за которой следует имя переменной в python?

Я читаю некоторый код, который был сгенерирован с помощью ZSI для питона. Существует линия, как этот

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

Я хочу знать, что делает это ** кВт neams. Является ли этот тип типа словарем? Спасибо

ответ

16

Он ссылается на все аргументы ключевого слова, переданные функции, не входящей в определение метода. Например:

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

Он похож на только используя одну звездочку, которая относится ко всем без именованных аргументов:

>>> 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'} 
+0

Это все объясняет! благодаря – ACZINT