Это допустимое использование Python ''kwargs"?
Так что я относительно новичок в 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 ответ
Если вы знаете или ожидаете 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]