expression -- 表達式。
globals -- 變量作用域,全局命名空間,如果被提供,則必須是壹個字典對象。
locals -- 變量作用域,局部命名空間,如果被提供,可以是任何映射對象。
如果傳入globals參數的字典缺少__builtins__的時候,當前全局命名空間將作為globals參數輸入並且在表達式計算之前被解析。locals參數默認與globals相同,如果兩者都省略的話,表達式將在eval()調用的環境中執行。
如果要將字符串型的list,tuple,dict轉變成原有的類型,可以用eval()
eval還可以對字符串型的輸入直接計算。
eval()能對解析的字符串都做處理,而不顧忌可能帶來的後果!
在實際應用過程中如果使用對象不是信任源,應該盡量避免使用eval,在需要使用eval的地方可以用安全性更好的ast.literal_eval替代。
ast模塊就是幫助Python應用來處理抽象的語法解析的。而該模塊下的literal_eval()函數:則會判斷需要計算的內容計算後是不是合法的python類型,如果是則進行運算,否則就不進行運算。