Is this acceptable use of Python ''kwargs"?
所以我对python比较陌生,而且我很难理解kwargs,这似乎是一个简单的概念,但是我在网上看到的它的每一种用法似乎都有所不同。我用得对吗?
我有一个函数plot_performance(),它创建了一个简单的散点图,并且有一个可选的关键字"save",如果设置为true,它将把图保存为png。
1 2 3 4 5 6 7 8 9 | 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 2 3 | def plot_performance(list_in, save=False): if save: put.save_fig(...) |
如果您确实使用了
1 2 3 4 | def plot_performance(list_in, **kwargs): save = kwargs.get('save', False) if save: ... |
但是,当您需要接受您不一定知道或不关心的任意关键字参数,以便将它们传递给另一个函数时,通常使用
1 2 3 4 5 6 | 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) |
更为罕见的是,它可以用来接受任意关键字参数,而不必提前定义它们:
1 2 3 4 5 | class Namespace: def __init__(self, **kwargs): self.values = dict() for kw in kwargs: self.values[kw] = kwargs[kw] |