如何用Python从字符串定义函数
这是我的代码:
a = \
'''def fun():\n
print 'bbb'
'''
eval(a)
fun()
但是它显示错误:
Traceback (most recent call last):
File "c.py", line 8, in <module>
eval(a)
File "<string>", line 1
def fun():
^
SyntaxError: invalid syntax
那我该怎么办呢,
谢谢
4 个回答
3
Eval 只会计算表达式,而 exec 则是执行语句。
所以你可以尝试这样的代码:
a = \
'''def fun():\n
print 'bbb'
'''
exec a
fun()
17
eval()
函数只能用来处理表达式,也就是说,它只能计算一些简单的值。如果你想执行更复杂的语句,应该使用 exec
。
exec """def fun():
print 'bbb'
"""
不过在你这样做之前,先想想你真的需要动态代码吗?其实大多数情况下,你并不需要这样做。