评估功能及其他功能

eval for functions and beyond

我最近一直在尝试进行一些程序综合。 在这里,我正在生成代表有效函数的字符串。我当前的解决方案包括将字符串打印到标准输出,将它们存储到一个文件中,然后从其他地方调用该文件。 但是,函数可以直接导入给定的命名空间吗? 假设以下示例:

def sum2(x):
    return sum(x)

print(sum2([1,2,3]))


sstring = """
def sum3(x):
    return sum(x)
"""

eval(sstring)
print(sum3([1,2,3]))

是否有类似第二部分(不起作用)的东西? eval() 是否仅限于原始表达式?

eval 的大哥exec 会帮你的。

def sum2(x):
    return sum(x)

print(sum2([1,2,3]))


sstring = """
def sum3(x):
    return sum(x)
"""

exec(sstring)
print(sum3([1,2,3]))

编译成功:

eval(compile(sstring, '', 'single'))

Demo at repl.it.