这是可以接受的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')

第一次发布问题,所以如果我的问题太笼统或格式不正确,请原谅我,谢谢!

如果您知道或期望传递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]

最新更新