所以我对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]