執行相關的內建函數將程式碼字串編譯成 code 物件或執行在字串中的程式碼,以下為列表說明
參數版本 | 功能 |
---|---|
compile(s, f, m) | 回傳可執行的 code 物件。 |
eval(e) | 執行字串參數 e 中的運算式。 |
exec(o) | 執行 code 物件或字串參數中的陳述。 |
compile()
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()
eval(e) 執行字串參數 e 中的運算式,舉例如下
x = 0
eval("print(x)")
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fcompile04.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fcompile04.py |
0 |
$ |
exec()
exec(o) 執行 code 物件或字串參數中的陳述,舉例如下
exec("""class Demo:
def demo(self):
print('demo')""")
d = Demo()
d.demo()
#《程式語言教學誌》的範例程式
# http://kaiching.org/
# 檔名:fcompile05.py
# 功能:示範內建函數
# 作者:張凱慶
於命令列執行以上程式,結果如下
$ python3 fcompile05.py |
demo |
$ |
相關教學影片