Python 速查手冊

9.6 執行相關

執行相關的內建函數將程式碼字串編譯成 code 物件或執行在字串中的程式碼,以下為列表說明

參數版本功能
compile(s, f, m)回傳可執行的 code 物件。
eval(e)執行字串參數 e 中的運算式。
exec(o)執行 code 物件或字串參數中的陳述。

compile() 將參數 s 字串編譯為可執行的 code 物件, f 為對應的檔案名稱,一般用空字串即可, m 為模式,共有三種模式,分別是單一陳述的 "single" ,複合陳述的 "exec" ,運算式的 "eval" ,因此執行編譯後的 code 物件,須以另外兩個內建函數 exec()eval() 呼叫,舉例如下

t = compile("for i in range(2): print(i)", "", "exec")
exec(t)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fcompile01.py
# 功能:示範內建函數
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 fcompile01.py
0
1
$

"single" 的例子如下

t = compile("print('hello')", "", "single")
exec(t)

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fcompile02.py
# 功能:示範內建函數
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 fcompile02.py
hello
$

"eval" 的例子如下

t = compile("2 + 2", "", "eval")
print(eval(t))

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fcompile03.py
# 功能:示範內建函數
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 fcompile03.py
4
$

eval(e) 執行字串參數 e 中的運算式,舉例如下

x = 0
eval("print(x)")

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fcompile04.py
# 功能:示範內建函數
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 fcompile04.py
0
$

exec(o) 執行 code 物件或字串參數中的陳述,舉例如下

exec("""class Demo: 
    def demo(self): 
        print('demo')""")
d = Demo()
d.demo()

#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fcompile05.py
# 功能:示範內建函數
# 作者:張凱慶

於命令列執行以上程式,結果如下

$ python3 fcompile05.py
demo
$

上一頁: 9.5 裝飾子相關
Python 速查手冊 - 目錄
下一頁: 9.7 作用域相關
回 Python 教材首頁