给定参数名的Python函数的动态生成

2024-09-30 16:42:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我想在Python3代码中创建函数,利用运行时提供的数据。我被困在如何按照

def foo(varname1, varname2):
    return varname1 + varname2

其中给出参数名的字符串varname1varname2被指定为某些构造函数的参数,例如:

def makeNewFooFunc(varname1, varname2):
    # do magic
    return foo

fooFunc = makeNewFooFunc('first', 'second')

print(fooFunc(first=1, second=2))
# should return 3

什么是#do magic步骤?这是eval的工作,还是有别的选择


Tags: 函数代码参数returnfoodefmagicdo
1条回答
网友
1楼 · 发布于 2024-09-30 16:42:20

你不需要写这样的函数。 只用**夸尔格

def foo_func(**kwargs):
    return sum(kwargs.values())

foo_func(any_name=1, any_name_2=2)

但如果你还需要做你想做的事,你可以试试

def make_new_func(var_name_1, var_name_2):
    def foo(**kwargs):
        # make sure in kwargs only expected parameters
        assert set(kwargs) == {var_name_1,  var_name_2}
        return kwargs[var_name_1] + kwargs[var_name_2]
    return foo

foo_func = make_new_func('a', 'b')

foo_func(a=1, b=2)

相关问题 更多 >