给出以下代码
import seaborn as sns
g = sns.barplot(x="CrossValMeans",y="Algorithm",data = cv_res, palette="Set3",**{'xerr':cv_std})
**{'xerr':cv_std}
是什么意思?
答案 0 :(得分:0)
** {}表示您正在将keyword argument
传递给函数或方法。
*args and **kwargs您可以检查此内容以获得更好的解释。
例如
class Test:
def test(self, x, y='y_value', **kwargs):
print(x, y, kwargs, type(kwargs))
t = Test()
t.test('x_value', **{'a': 1, 'b': 'Hello World'}) # YOU CAN PASS THIS AS **{}
t.test('x_value', a=1, b='Hello World') # OR AS THIS
输出:
x_value y_value {'a': 1, 'b': 'Hello World'} <class 'dict'>
x_value y_value {'a': 1, 'b': 'Hello World'} <class 'dict'>
答案 1 :(得分:0)
让我们从实际解释python中*
和**
的含义开始。 -在Python中称为unpacking
。
如果我们以您的字典为例:
**{'xerr':cv_std}
实质上,您是在告诉python将值解压缩为关键字参数;而您可以将其更改为:
*{'xerr': cv_std}
,这将指示python拾取键并将其作为参数(而不是关键字参数)传递。
总结一下,看看:
def my_function(*args, x, **kwargs):
print(args, x, kwargs)
my_function(*{'xer': 1}, **{'x': 2})
将输出:
('xer',) 2 {}
解压缩与将字典解压缩为关键字参数或键元组相比,还有很长的路要走。
>>> a, *extras = [1, 2, 3, 4, 5]
>>> a
1
>>> extras
[2, 3, 4, 5]
以上内容称为扩展序列拆包。关于拆包,有很多信息可以讨论。我建议您阅读在线文章以获取更多信息。