如何编写一个函数,使其将不同的关键字参数传递给不同的函数?

3
我想编写一个函数,将不同的关键字参数传递给不同的函数。 例如,我想编写一个函数,通过先使用gca创建坐标轴,然后通过hist添加直方图来绘制我的数据的直方图。我希望用户能够向gcahist都传递其他关键字参数。 我需要的是类似于以下代码(定义行中有语法错误)的函数:
import matplotlib.pyplot as plt 

def plot_hist(data, **kwargs_hist, **kwargs_gca):
    ax = plt.gca(**kwargs_gca)       
    fig = ax.hist(data, **kwargs_hist)[0]
    return fig

1
Python如何知道要将哪些关键字传递给每个函数?特别是考虑到inspect.signature(plt.gca) -> <Signature (**kwargs)> - Tadhg McDonald-Jensen
什么决定了关键字参数的位置? - zondo
@tadhg 这正是我试图解决的问题。我能够实现这样的事情吗? - NewNameStat
@zondo 我希望用户决定将哪些可选参数传递给 hist,以及将哪些可选参数传递给 gca - NewNameStat
4
你可以让用户传递两个字典,而不是关键词参数,这样你就可以像这样调用它: plot_hist(DATA, dict(var1=1, var2=2), dict(var3=3, var4=4)) ,然后只需在定义行中删除** - Tadhg McDonald-Jensen
@TadhgMcDonald-Jensen 谢谢!请将其写成答案,我会接受它。 - NewNameStat
1个回答

阿里云服务器只需要99元/年,新老用户同享,点击查看详情
2

如果不知道应该将哪些关键字参数委托给每个函数,**keywords 在这种情况下就行不通了。相反,您可以将每个函数的关键字都作为参数传入两个字典中:

def plot_hist(data, kwargs_hist={}, kwargs_gca={}):
    ax = plt.gca(**kwargs_gca)       
    fig = ax.hist(data, **kwargs_hist)[0]
    return fig

然后创建单独的字典,可以通过将它们传递给dict构造函数来仍然使用关键字语法:

plot_hist(DATA, dict(hist_arg=3, foo=6), dict(gca_arg=1, bar = 4))

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,