Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python'';“kwargs”吗;?_Python_Keyword Argument - Fatal编程技术网

Python'';“kwargs”吗;?

Python'';“kwargs”吗;?,python,keyword-argument,Python,Keyword Argument,所以我对Python比较陌生,我很难理解kwargs,这似乎是一个足够简单的概念,但我在网上看到的每一种用法似乎都不一样。我用对了吗 我有一个函数plot_performance(),它创建了一个简单的散点图,并有一个可选的关键字“save”,如果设置为True,则应将该图保存为PNG def plot_performance(list_in, **kwargs): ''' ''' for key in kwargs: if (key == 'sav

所以我对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
,请直接指定它。您可能有一个默认值,正如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]

欢迎来到SO。通常,如果您可能有几个可能的关键字参数,则使用kwargs,在您的情况下,一个简单的
def plot\u performance(list\u in,save=false):
就可以了。这是一个具有默认值的方法参数,如果没有为第二个参数提供值,则该参数将为false。如果给定,它将是给定的值。请参阅示例usageNo,这不是一个很好的用途。如果函数定义中只有
save=False
,那么这不仅毫无意义,也不会迭代dict来查找键,而是直接查找键。是的,如果只有一个可选参数,就不需要使用kwargs。如上所述,这里不需要kwargs。但是,如果键入kwargs和kwargs[key]: