Если у меня была функция с тремя или четырьмя необязательными аргументами ключевых слов, лучше ли использовать ** kwargs или указать их в определении функции?
Я чувствую как
def foo(required, option1=False, option2=False, option3=True)
выглядит гораздо более неуклюже, чем
def foo(required, **kwargs)
.
Однако, если мне нужно использовать эти ключевые слова в качестве условных выражений, а они не существуют, у меня будут выдаваться KeyErrors, и я чувствую, что проверяю ключи перед тем, как каждое условное выражение немного запутано.
def foo(required, **kwargs):
print(required)
if 'true' in kwargs and kwargs['true']:
print(kwargs['true'])
foo('test', true='True')
foo('test2')
против
def foo(required, true=None):
print(required)
if true:
print(true)
foo('test', true='True')
foo('test2')
Мне интересно, какой самый питонический путь. У меня есть функция, над которой я работаю, которая в зависимости от переданных параметров будет возвращать разные значения, поэтому мне интересно, как лучше всего справиться с этим. Это работает сейчас, но мне интересно, есть ли лучший и более питонический способ справиться с этим.