Вы можете иметь значение по умолчанию kwargs
и все еще распаковывать с splat
а-ля **kwargs
def john(name, dog, *args, bob="bob", **kwargs):
print(name, dog, bob)
# "ream" is an unpacked arg
john("john", 1, "ream") # john 1 bob
# jane is an unpacked kwarg
john("john", 1, "ream", jane="jane") # john 1 bob
john("john", 1, "ream", bob="jane") # john 1 jane
Установить значение по умолчанию для *arg
довольно сложно, потому что идея состоит в том, чтобы сделать функцию требовать этот вклад. Вы могли бы взглянуть на некоторые приемы в этом духе а-ля реализации встроенной функции range
. Я бы просто сделал это kwarg
, хотя.
Когда дело доходит до нарушения авторского права яблоко сразу связало нас с создателями других приложений, которые используют наше имя. Они не хотят связываться легальные сражения, но они действительно упрощают соединение между всеми сторонами. Можно полагать, что менять имя избегает дальнейших задержек, поскольку яблоко может просто ожидать на приложении, что они думают, мог стать разногласиями по авторскому праву.