从函数中返回未知名称的函数

时间:2016-05-07 13:06:35

标签: python string return exec

code = "def foo(): return 'bar'"

def lol(code):
    exec code
    return foo

a = lol(code)
print a()

这可以正常工作,但是当我们不知道字符串中的函数被调用时,问题就开始了。如果我可以保证代码很小,只需一个函数,我该如何返回该函数?

我想到的一个解决方案就是要求将这个功能称为“foo'等等,所以我可以回复,但感觉很难看。

思想?

1 个答案:

答案 0 :(得分:1)

您可以通过显式指定用于全局和本地执行上下文的字典InputStreamReader input = new InputStreamReader(System.in); BufferedReader buff = new BufferedReader(input); Scanner scan = new Scanner(buff); 来实现。之后用于本地的一个应该有一个函数对象的条目,可以在不知道其名称的情况下返回,因为它应该是字典中定义的唯一项目:

exec