Это допустимое использование Python '' kwargs "? - PullRequest
0 голосов
/ 06 декабря 2018

Так что я относительно новичок в Python, и мне тяжело разобраться с kwargs, это кажется достаточно простой концепцией, но каждое его использование, которое я вижу в Интернете, кажется другим.Я правильно это использую?

У меня есть функция plot_performance (), которая создает простой точечный график и имеет необязательное ключевое слово «save», которое при значении True должно сохранять график в формате PNG.

def plot_performance(list_in, **kwargs):

    '''

    '''

    for key in kwargs:
        if (key == 'save') and (kwargs[key] is True):
            plt.savefig('plot.png', bbox_inches='tight')

При первой публикации вопроса, извините, если у меня слишком общий вопрос или форматирование отключено, спасибо!

1 Ответ

0 голосов
/ 06 декабря 2018

Если вы знаете или ожидаете, что save будет пройдено, укажите его напрямую.Вероятно, вы имеете в виду значение по умолчанию, поэтому Бернхард упоминает в комментарии:

def plot_performance(list_in, save=False):
    if save:
        put.save_fig(...)

Если вы действительно использовали kwargs, используйте его get метод.

def plot_performance(list_in, **kwargs):
    save = kwargs.get('save', False)
    if save:
        ...

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

class Child(Base):
    def foo(self, x, **kwargs):
        # do something with x
        # Pass any other keyword args on to another class's definition
        # of foo.
        super().foo(**kwargs)

Реже его можно использовать для принятия произвольных аргументов ключевого слова без необходимости определять их заранее:

class Namespace:
    def __init__(self, **kwargs):
        self.values = dict()
        for kw in kwargs:
            self.values[kw] = kwargs[kw]
...