我可以使用'eval'在Python中定义一个函数吗?

xun*_*ang 7 python eval python-2.7

我想用eval定义一个Python函数:

func_obj = eval('def foo(a, b):  return a + b')
Run Code Online (Sandbox Code Playgroud)

但它返回无效的语法错误?我该怎么做?

顺便问一下,如何在Python中将函数obj转换为字符串对象?

Ash*_*ary 8

使用exec.eval用于表达式而不是语句.

>>> exec 'def foo(a, b):  return a + b'
>>> foo(1, 2)
3
Run Code Online (Sandbox Code Playgroud)

函数对象的函数代码:

def func():
    """ I'm func """
    return "Hello, World"
... 
>>> import inspect
>>> print inspect.getsource(func)
def func():
    """ I'm func """
    return "Hello, World"
Run Code Online (Sandbox Code Playgroud)


Sau*_*tro 6

您可以使用evalwith lambda,例如:

func_obj = lambda a, b: eval('a + b')
Run Code Online (Sandbox Code Playgroud)

  • ```def f(a,b) = return eval('a+b')``` 的作用相同。 (2认同)