如何使用字典kwargs作为可调用的函数参数?

时间:2017-10-10 04:05:59

标签: python-3.x function dictionary args kwargs

我正在尝试学习如何通过词典使用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颜色。我的误解/错误的根源是什么?

1 个答案:

答案 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..,而不是您手动执行此操作。