Как правильно передать ключевые слова?

Mark Omo спросил: 14 ноября 2017 в 06:51 в: python

При написании функций, которые вызывают другие подфункции, я часто хочу позволить вызывающей стороне передавать произвольные аргументы ключевых слов для этих подфункций. Тем не менее, текущий способ, которым я реализую это, является грязным, и я ищу более ясный, лаконичный и понятный способ.

Ниже приведен пример того, как я в настоящее время реализую это:

def foo(a, print_line="Hello World!"):
    print a, print_linedef bar(a, number=2, multiple=4):
    print a, number * multipledef baz(a, **kwargs):
    if "print_line" in kwargs:
        foo(a, print_line=kwargs["print_line"])
    else:
        foo(a)    bar_kwargs = dict()
    if "number" in kwargs:
        bar_kwargs["number"] = kwargs["number"]
    if "multiple" in kwargs:
        bar_kwargs["multiple"] = kwargs["multiple"]
    bar(a, **bar_kwargs)

Этот метод подвержен ошибкам, и мне нужно реализовать каждый kwarg, который я хочу выразить. Иногда я могу обойтись без foo(a, print_line=kwargs.get("print_line", False), но я бы хотел сохранить аргумент kwarg по умолчанию.

0 ответов