Python 直譯器基類
Python 的互動模式基於 REPL (讀取-求值-列印-迴圈) 原理。Python 標準庫中的 `code` 模組提供了一些類和便捷函式,用於在 Python 指令碼中設定 REPL 環境。
`code` 模組中定義了以下兩個類:
`InteractiveInterpreter`:此類處理解析和直譯器狀態(使用者的名稱空間)。
`InteractiveConsole`: 緊密模擬互動式 Python 直譯器的行為。
模組中的兩個便捷函式是:
`interact()`:執行讀取-求值-列印迴圈的便捷函式。
`compile_command()`:此函式對於想要模擬 Python 直譯器主迴圈(REPL)的程式很有用。
互動式直譯器方法
`runsource()`:編譯並在直譯器中執行一些原始碼。
`runcode()`:執行程式碼物件。
互動式控制檯方法
因為 `InteractiveConsole` 類是 `InteractiveInterpreter` 的子類,所以上述方法會自動可用。此外,還定義了以下方法:
`interact()`:緊密模擬互動式 Python 控制檯。
`push()`:將一行源文字推送到直譯器。
`resetbuffer()`:從輸入緩衝區中移除任何未處理的源文字。
`raw_input(prompt="")`
預設情況下,從 `sys.stdin` 寫入提示並讀取一行。
示例
import code x = 10 y = 20 def add(x,y): return x+y print (add(x,y)) code.interact(local=locals()) print (x,y) print (add(x,y))
在上面的程式碼中,定義了兩個變數並將其傳遞給一個函式。然後我們呼叫互動式控制檯。引數 `local=locals()` 允許使用區域性名稱空間作為直譯器迴圈中的預設名稱空間。
如果為變數賦值不同的值並透過按 Ctrl+D 退出控制檯,則這些值現在將傳遞給函式。
輸出
addition= 30 Python 3.6.6 |Anaconda custom (64-bit)| (default, Oct 9 2018, 12:34:16) [GCC 7.3.0] on linux Type "help", "copyright", "credits" or "license" for more information. (InteractiveConsole) >>> x=100 >>> y=200 >>> now exiting InteractiveConsole... 100 200 addition = 300
廣告
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C 語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP