我想在Python3代码中创建函数,以利用运行时提供的数据。我被困在如何按照
的方式编写函数的过程中def foo(varname1, varname2):
return varname1 + varname2
其中给出参数名称的字符串varname1
和varname2
被指定为某些构造函数的参数,例如:
def makeNewFooFunc(varname1, varname2):
# do magic
return foo
fooFunc = makeNewFooFunc('first', 'second')
print(fooFunc(first=1, second=2))
# should return 3
#do magic
步骤将是什么?这是eval
的工作,还是有其他选择?
答案 0 :(得分:2)
您不需要编写类似的函数。 只需使用** kwargs
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)