gpt4 book ai didi

python - 如何以编程方式将新函数添加到 Python 中的当前作用域?

转载 作者:行者123 更新时间:2023-11-30 23:36:47 24 4
gpt4 key购买 nike

在 Python 中 it is easy to create new functions programmatically 。我如何将其分配给当前范围内以编程方式确定的名称?

这就是我想做的(在非工作代码中):

obj_types = ('cat', 'dog', 'donkey', 'camel')
for obj_type in obj_types:
'create_'+obj_type = lambda id: id

在上面的例子中,将lambda赋值给待定的函数名显然是行不通的。在实际代码中,函数本身将由函数工厂创建。

背景是懒惰和不重复:我有十几个甚至更多的对象类型,我将为其分配一个生成的函数。所以目前的代码如下所示:

create_cat   = make_creator('cat')
# ...
create_camel = make_creator('camel')

函数 create_cat 等在解析器中使用硬编码。

如果我以编程方式创建类作为新类型,types.new_class()docs 中所示似乎是解决方案。(错误)使用这种方法是我最好的选择吗?

最佳答案

完成您想要做的事情(但不创建具有动态名称的函数)的一种方法是使用名称作为键将 lamda 存储在 dict 中。您可以调用 create['cat'](),而不是调用 create_cat()。这也与解析器逻辑中不硬编码名称很好地吻合。

关于python - 如何以编程方式将新函数添加到 Python 中的当前作用域?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16193684/

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