【问题标题】:How to write a function that passes different key word arguments to different functions如何编写将不同关键字参数传递给不同函数的函数
【发布时间】:2016-05-27 16:23:58
【问题描述】:

我想写一个函数,将不同的关键字参数传递给不同的函数。

例如,我想编写一个函数,通过首先通过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

【问题讨论】:

  • python 如何知道将哪些关键字传递给每个函数?特别是考虑到inspect.signature(plt.gca) -> <Signature (**kwargs)>
  • 是什么定义了关键字参数的去向?
  • @tadhg 这正是我要解决的问题。我能完成这样的事情吗?
  • @zondo 我希望用户决定将哪些可选参数传递给hist,哪些传递给gca
  • 好吧,您可以让用户传递两个字典而不是关键字,然后您可以将其称为 plot_hist(DATA, dict(var1=1, var2=2), dict(var3=3, var4=4)) 并删除定义行中的 **

标签: function python-3.x keyword-argument


【解决方案1】:

在不确切知道将哪些关键字参数委托给每个函数的情况下,**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))

【讨论】:

    猜你喜欢
    • 2014-06-12
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    • 1970-01-01
    • 2021-12-15
    • 1970-01-01
    • 2018-08-04
    • 2016-02-28
    相关资源
    最近更新 更多