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