【问题标题】:Create a function for getting use input of arguments for another function创建一个函数以获取另一个函数的参数输入
【发布时间】:2021-04-02 12:48:35
【问题描述】:

我需要从函数 (f1) 中获取参数,并将映射到这些参数的参数提供给另一个函数 (f2)。

为此,我创建了针对 f1 和 f2 参数的参数字典,如下所示:

def f1(variable,*args):
    arg_dict = {
                'a' : [args1,args2,args3,args4]
                'b' : [args5,args6]
                'c' : [args7,'{:.2f}'.format]
               }
    f2(*args)
    #---do this---
    #---print this---
    return #---this---

但我想不出一种有效且简单的方法来将这些参数提供给 f1 函数中的 f2。

假设我这样做:

f1(var1,'a','c')

那么 f2 应该运行为:

f2(args1,args2,args3,args4,args7,'{:.2f}'.format)

我还想过将 f1 参数作为单个值或变量下的列表来询问:

def f1(var, param):
    #
    #

所以是这样的:

f1(var1, ['a','c'])

它应该将 ['a','c'] 分配给 f1 下的param。接下来如何进行?

【问题讨论】:

    标签: python-3.x function


    【解决方案1】:

    如果我正确理解了您的问题,那么您所需要的只是一种通过您实际想要传递的参数集过滤arg_dict 的方法,并将该集展平。您可以通过创建一个新列表并在 for 循环中 .extend()ing 来做到这一点:

    def f1(variable,*args):
        arg_dict = {
                    'a' : [args1,args2,args3,args4]
                    'b' : [args5,args6]
                    'c' : [args7,'{:.2f}'.format]
                   }
        pass_args = []
        for arg in args:
            if arg in arg_dict:
                pass_args.extend(arg_dict[arg])
        f2(*pass_args)
        #---do this---
        #---print this---
        return #---this---
    

    【讨论】:

    • 是的。谢谢你。我不知道在 f2 中添加 * 会起作用。再次感谢。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    • 2022-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多