所以我对Python还是比较陌生,我很难理解kwarg,这似乎是一个简单的概念,但我在网上看到的每个用法似乎都不同。我使用的对吗?
我有一个函数plot_performance(),该函数创建一个简单的散点图,并具有可选的关键字“保存”,如果将其设置为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')
第一次发布问题,如果我的问题过于笼统或格式不正确,请原谅我!
答案 0 :(得分:1)
如果您知道或希望通过save
,请直接指定。您可能会记住一个默认值,所以正如Bernhard在评论中提到的那样:
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]