通過exec可以執行動態Python代碼,類似Javascript的eval功能;
而Python中的eval函數可以計算Python表達式,並返回結果;
(exec不返回結果,print(eval("…"))打印None);
例如:
>>> exec("print(\"hello, world\")") hello, world >>> a = 1 >>> exec("a = 2") >>> a 2
這里有個scope(命名空間,作用域)的概念,為了不破壞現在的scope,可以新建一個scope(一個字典)執行exec(Javascript沒有此功能):
>>> scope = {} >>> exec("a = 4", scope) >>> a 2 >>> scope['a'] 4 >>> scope.keys() dict_keys(['a', '__builtins__'])
__builtins__包含了所有的內建函數和值