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转换为字符串对象?
使用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)
您可以使用eval
with lambda
,例如:
func_obj = lambda a, b: eval('a + b')
Run Code Online (Sandbox Code Playgroud)