Как параметры args и kargs выглядят в Python?

Полагаю, я понимаю, как использовать их по отдельности в таких функциях, как ...

f (* args) или f (** kargs)

Но что, если функция принимает оба аргумента? Пример: f (* args, ** kargs)


person FlyingBumble    schedule 17.05.2015    source источник


Ответы (2)


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

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 будет таким же.

person f43d65    schedule 17.05.2015

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

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

пройдет

args = (1, 2, 3)
kwargs = {a: 1, b: 2, c: 3}
person Community    schedule 17.05.2015