2015-05-17 3 views

ответ

1

Да, это работает

def f(*args, **kwargs): 
    pass 

При вызове функции, как этот f(1, 3, "foo", [1, 2, 10], a=1, apple=33), то функция args будет (1, 3, "foo", [1, 2, 10]), kwargs будет {'a': 1, 'apple': 33}.

Это тоже будет работать

def f(a, b, foo, *args, **kwargs): 
    pass 

Но если мы называем эту функцию с теми же аргументами, a будет 1, b будет 3, foo будет "foo", args будет ([1, 2, 10]), kwargs будет одна и та же.

1

*args получает позиционные аргументы; **kwargs получает именованные аргументы. Например:

f(1, 2, 3, a=1, b=2, c=3) 

пройдет

args = (1, 2, 3) 
kwargs = {a: 1, b: 2, c: 3}