gpt4 book ai didi

python - 是否可以在运行时生成带参数的 Python 函数?

转载 作者:太空宇宙 更新时间:2023-11-04 11:03:00 25 4
gpt4 key购买 nike

说,

我有一个 python 函数如下:

def ooxx(**kwargs):
doSomething()
for something in cool:
yield something

我想为提示提供另一个带有命名参数的函数,如下所示:

def asdf(arg1, arg2, arg3=1):
frame = inspect.currentframe()
args, _, _, values = inspect.getargvalues(frame)
kwargs = dict((key, values[key]) for key in args) # convert args list into dictionary form
return list(ooxx(**kwargs))

是否有可能有某种方法自动生成函数“asdf”?我有很多动态生成的 ooxx 函数,我希望有相应的带有自定义命名参数的 asdf 函数。不确定这是否是正确的要求或正确的编码方式:p

最佳答案

你的描述对我来说没有意义:你写了一个非常冗长的函数来做这个:

def asdf(arg1, arg2, arg3=1):
return list(ooxx(**locals()))

但您想检查 ooxx 并以某种方式为 asdf 的参数编造适当的名称?那是不可能的,ooxx 上没有这方面的信息。

如果您实际上拥有一个签名并想从中创建一个函数,您将不得不求助于eval 或将函数定义生成到Python 文件并将其导入。

还有 decorator模块。你可以像这样用它创建一个函数:

import decorator
asdf = decorator.FunctionMaker.create(
'asdf(arg1, arg2, arg3)', # signature
'return ooxx(**locals())', # function body
{'ooxx' : ooxx}, # context for the function
('arg3', 1)) # default arguments

关于python - 是否可以在运行时生成带参数的 Python 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3751035/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com