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中的代碼就可以使用前一次定義的變量了。