我正在尝试学习如何通过词典使用kwargs作为函数输入。作为一个简单的例子,我试图制作一个基本的(x,y)图,其中kwargs可以指定曲线的颜色和其他一些绘图规格。
import numpy as np
import matplotlib.pyplot as plt
## generate data
f = lambda x : np.array([xi**2 for xi in x]) # function f(x)
x = np.linspace(0, 100)
y = f(x)
## define plotting routine
def get_plot(x, y, kwargs):
"""
This plot will take multiple kwargs when successful.
"""
plt.plot(x, y, **kwargs)
plt.show()
我首先尝试使用一个kwarg生成情节。这很有效。
plot_dict = dict(color='red')
get_plot(x, y, plot_dict)
>> plot appears
然后我尝试使用两个kwargs生成情节。这不起作用。
plot_dict = dict(color='red', xlabel='this is the x-axis')
get_plot(x, y, plot_dict)
>> AttributeError: Unknown property xlabel
但我的印象是xlabel is a kwarg,因为它是一种可调用的arg颜色。我的误解/错误的根源是什么?
答案 0 :(得分:3)
更改为:
def get_plot(x, y, **kwargs):
"""
This plot will take multiple kwargs when successful.
"""
plt.plot(x, y, **kwargs)
plt.show()
并调用这样的函数:get_plot(x, y, **plot_dict)
。
查看this教程,了解如何使用**kwargs
。
简而言之,**kwargs
所做的是将字典分解为成对的argument=value
,即kwarg1=val1, kwarg2=val2..
,而不是您手动执行此操作。