python中的eval, exec以及compile都可以把字符串作为代码来执行。
exec函数原型如下:
exec(source, [globals, [locals]])
在使用exec的时候,只能通过globals和locals调用全局和局部变量,也可以修改全局变量,但如果在souce中要增加变量,则会保存在exec自己的执行环境中,在下次执行exec的时候无法在调用该变量。要调用这个变量,方法如下:
1. 在全局变量中增加一个字典变量,如scope
2.在调用exec时,将scope作为locals传入,这样exec的代码中增加的变量就会保存在scope字典中
3.下次调用exec时,scope仍然作为locals传入,这样exec中的代码就可以使用前一次定义的变量了。