【发布时间】:2018-07-19 00:10:49
【问题描述】:
这不是 creating a function object from a string 的副本,因为这是一个 Python 2 解决方案,exec 不是函数()
尝试在 Python 3 中实现该解决方案得到以下结果:
d = {}
exec("def f(x): return x")in d
print(d)
返回:
{}
所以问题是,如何在 Python 3 中从任意字符串创建函数? (在我的情况下,从 YAML 文件中读取,但这是一个附带问题。)
【问题讨论】:
-
我不明白
in d部分想要做什么。如果您只是exec该代码,您将能够在您的代码中调用f(x)。无论哪种方式,我都不建议运行任意字符串,这似乎是一个 XY 问题 -
我需要函数对象,这样我就可以将它放在一个对象中以供以后使用。用户必须能够创建使用来自对象的数据的任意函数。
-
@user3483203 这是 Python 2 中
exec关键字语法的一部分(显然)。对我来说,这似乎是个坏主意。 -
对。了解人们不知道我的申请。超越其他人是否会这样做的问题,是否仍然可以从任意字符串创建函数对象?
-
@sP_ 不,它返回
{},因为d是一个空字典。中间的代码行只是检查None是否是d的成员,它不是。
标签: python python-3.x