Я немного запутался в использовании *args
.
Я хочу написать функцию, которая принимает переменное количество аргументов, но при этом может использовать преимущество определения предопределенного значения для ключевого аргумента.
Но невозможно написать такую функцию:
def foo(*args, bar = "foo"):
print bar, args
Просто можно написать так:
def foo2(bar = "foo", *args):
print bar, args
Но затем я вызываю foo2
и передаю первый аргумент, который переопределяет значение по умолчанию для bar
!.
foo2("somevalue")
somevalue ()
Где способ сделать это лучше ??
Я знаю, что мог бы написать так:
def foo(*args, **kwargs):
kwargs["bar"] = "foo"
но что-то вроде определения первого метода (которое приводит к синтаксической ошибке) с моей точки зрения более интуитивно понятно.