IDLE?
源代碼: Lib/idlelib/
IDLE 是 Python 所內(nèi)置的開發(fā)與學(xué)習(xí)環(huán)境。
IDLE 具有以下特性:
編碼于 100% 純正的 Python,使用名為
tkinter的圖形用戶界面工具跨平臺:在 Windows、Unix 和 macOS 上工作近似。
提供輸入輸出高亮和錯誤信息的 Python 命令行窗口 (交互解釋器)
提供多次撤銷操作、Python 語法高亮、智能縮進(jìn)、函數(shù)調(diào)用提示、自動補(bǔ)全等功能的多窗口文本編輯器
在多個窗口中檢索,在編輯器中替換文本,以及在多個文件中檢索(通過 grep)
提供持久保存的斷點(diǎn)調(diào)試、單步調(diào)試、查看本地和全局命名空間功能的調(diào)試器
配置、瀏覽以及其它對話框
目錄?
IDEL 具有兩個主要窗口類型,分別是命令行窗口和編輯器窗口。用戶可以同時打開多個編輯器窗口。對于 Windows 和 Linux 平臺,都有各自的主菜單。如下記錄的每個菜單標(biāo)識著與之關(guān)聯(lián)的窗口類型。
導(dǎo)出窗口,例如使用 編輯=>在文件中查找 是編輯器窗口的的一個子類型。它們目前有著相同的主菜單,但是默認(rèn)標(biāo)題和上下文菜單不同。
在macOS上,只有一個應(yīng)用程序菜單。它根據(jù)當(dāng)前選擇的窗口動態(tài)變化。它具有一個IDLE菜單,并且下面描述的某些條目已移動到符合Apple準(zhǔn)則的位置。
文件目錄 (命令行和編輯器)?
- 新建文件
創(chuàng)建一個文件編輯器窗口。
- 打開...
使用打開窗口以打開一個已存在的文件。
- 近期文件
打開一個近期文件列表,選取一個以打開它。
- 打開模塊...
打開一個已存在的模塊 (搜索 sys.path)
- 類瀏覽器
于當(dāng)前所編輯的文件中使用樹形結(jié)構(gòu)展示函數(shù)、類以及方法。在命令行中,首先打開一個模塊。
- 路徑瀏覽
在樹狀結(jié)構(gòu)中展示 sys.path 目錄、模塊、函數(shù)、類和方法。
- 保存
如果文件已經(jīng)存在,則將當(dāng)前窗口保存至對應(yīng)的文件。自打開或上次保存之后經(jīng)過修改的文件的窗口標(biāo)題欄首尾將出現(xiàn)星號 * 。如果沒有對應(yīng)的文件,則使用“另存為”代替。
- 保存為...
使用“保存為”對話框保存當(dāng)前窗口。被保存的文件將作為當(dāng)前窗口新的對應(yīng)文件。
- 另存為副本...
保存當(dāng)前窗口至另一個文件,而不修改當(dāng)前對應(yīng)文件。
- 打印窗口
通過默認(rèn)打印機(jī)打印當(dāng)前窗口。
- 關(guān)閉
關(guān)閉當(dāng)前窗口(如果未保存則詢問)。
- 退出
關(guān)閉所有窗口并退出 IDLE(如果未保存則詢問)
編輯目錄(命令行和編輯器)?
- 撤銷操作
撤銷當(dāng)前窗口的最近一次操作。最高可以撤回 1000 條操作記錄。
- 重做
重做當(dāng)前窗口最近一次所撤銷的操作。
- 剪切
復(fù)制選區(qū)至系統(tǒng)剪貼板,然后刪除選區(qū)。
- 復(fù)制
復(fù)制選區(qū)至系統(tǒng)剪貼板。
- 粘貼
插入系統(tǒng)剪貼板的內(nèi)容至當(dāng)前窗口。
剪貼板功能也可用于上下文目錄。
- 全選
選擇當(dāng)前窗口的全部內(nèi)容。
- 查找...
打開一個提供多選項(xiàng)的查找窗口。
- 再次查找
重復(fù)上次搜索,如果結(jié)果存在。
- 查找選區(qū)
查找當(dāng)前選中的字符串,如果存在
- 在文件中查找...
打開文件查找對話框。將結(jié)果輸出至新的輸出窗口。
- 替換...
打開 查找并替換 對話框。
- 前往行
將光標(biāo)移到所請求行的開頭并使該行可見。 對于超過文件尾的請求將會移到文件尾。 清除所有選區(qū)并更新行列狀態(tài)。
- 提示完成
打開一個可滾動列表,允許選擇關(guān)鍵字和屬性。請參閱下面的 “編輯和導(dǎo)航”部分中的 Completions 。
- 展開文本
展開鍵入的前綴以匹配同一窗口中的完整單詞;重復(fù)以獲得不同的擴(kuò)展。
- 顯示調(diào)用貼士
在函數(shù)的右括號后,打開一個帶有函數(shù)參數(shù)提示的小窗口。請參閱下面的“編輯和導(dǎo)航”部分中的 Calltips 。
- 顯示周圍括號
突出顯示周圍的括號。
格式菜單(僅 window 編輯器)?
- 縮進(jìn)區(qū)域
將選定的行右移縮進(jìn)寬度(默認(rèn)為4個空格)。
- 區(qū)域減少縮進(jìn)
將選定的行向左移動縮進(jìn)寬度(默認(rèn)為4個空格)。
- 區(qū)域注釋
在所選行的前面插入 ##。
- 區(qū)域取消注釋
從所選行中刪除開頭的 # 或 ##。
- 區(qū)域添加制表符
將 前導(dǎo) 空格變成制表符。 (注意:我們建議使用4個空格來縮進(jìn)Python代碼。)
- 區(qū)域取消制表符
將 所有 制表符轉(zhuǎn)換為正確的空格數(shù)。
- 切換標(biāo)簽
打開一個對話框,以在縮進(jìn)和空格之間切換。
- 新縮進(jìn)寬度
打開一個對話框以更改縮進(jìn)寬度。 Python社區(qū)接受的默認(rèn)值為4個空格。
- 格式段落
在注釋塊或多行字符串或字符串中的選定行中,重新格式化當(dāng)前以空行分隔的段落。段落中的所有行的格式都將少于N列,其中N默認(rèn)為72。
- 尾隨空格
通過將 str.rstrip 應(yīng)用于每行(包括多行字符串中的行),刪除行尾非空白字符之后的尾隨空格和其他空白字符。除Shell窗口外,在文件末尾刪除多余的換行符。
運(yùn)行菜單(僅 window 編輯器)?
- 運(yùn)行模塊
執(zhí)行 檢查模塊 。如果沒有錯誤,重新啟動 shell 以清理環(huán)境,然后執(zhí)行模塊。輸出顯示在 shell 窗口中。請注意,輸出需要使用 “打印” 或 “寫入”。執(zhí)行完成后,Shell 將保留焦點(diǎn)并顯示提示。此時,可以交互地探索執(zhí)行的結(jié)果。這類似于在命令行執(zhí)行帶有
python -i file的文件。
- 運(yùn)行... 定制
與 運(yùn)行模塊 相同,但使用自定義設(shè)置運(yùn)行該模塊。命令行參數(shù) 擴(kuò)展
sys.argv,就像在命令行上傳遞一樣。該模塊可以在命令行管理程序中運(yùn)行,而無需重新啟動。
- 檢查模塊
檢查 “編輯器” 窗口中當(dāng)前打開的模塊的語法。如果尚未保存該模塊,則 IDLE會提示用戶保存或自動保存,如在 “空閑設(shè)置” 對話框的 “常規(guī)” 選項(xiàng)卡中所選擇的那樣。如果存在語法錯誤,則會在 “編輯器” 窗口中指示大概位置。
- Python Shell
打開或喚醒Python Shell窗口。
Shell 菜單(僅 window 編輯器)?
- 查看最近重啟
將Shell窗口滾動到上一次Shell重啟。
- 重啟Shell
重新啟動shell 以清理環(huán)境。
- 上一條歷史記錄
循環(huán)瀏覽歷史記錄中與當(dāng)前條目匹配的早期命令。
- 下一條歷史記錄
循環(huán)瀏覽歷史記錄中與當(dāng)前條目匹配的后續(xù)命令。
- 中斷執(zhí)行
停止正在運(yùn)行的程序。
調(diào)試菜單(僅 window 編輯器)?
- 跳轉(zhuǎn)到文件/行
查看當(dāng)前行。 以光標(biāo)提示,且上一行為文件名和行號。 如果找到目標(biāo),如果文件尚未打開則打開該文件,并顯示目標(biāo)行。 使用此菜單項(xiàng)來查看異?;厮葜幸玫脑创a行以及用文件中查找功能找到的行。 也可在 Shell 窗口和 Output 窗口的上下文菜單中使用。
- 調(diào)試器(切換)
激活后,在Shell中輸入的代碼或從編輯器中運(yùn)行的代碼將在調(diào)試器下運(yùn)行。在編輯器中,可以使用上下文菜單設(shè)置斷點(diǎn)。此功能不完整,具有實(shí)驗(yàn)性。
- 堆棧查看器
在樹狀目錄中顯示最后一個異常的堆?;厮?,可以訪問本地和全局。
- 自動打開堆棧查看器
在未處理的異常上切換自動打開堆棧查看器。
選項(xiàng)菜單(命令行和編輯器)?
- 配置 IDLE
打開配置對話框并更改以下各項(xiàng)的首選項(xiàng):字體、縮進(jìn)、鍵綁定、文本顏色主題、啟動窗口和大小、其他幫助源和擴(kuò)展名。在MacOS上,通過在應(yīng)用程序菜單中選擇首選項(xiàng)來打開配置對話框。有關(guān)詳細(xì)信息,請參閱:幫助和首選項(xiàng)下的 首選項(xiàng)設(shè)置。
大多數(shù)配置選項(xiàng)適用于所有窗口或?qū)淼乃写翱?。以下選項(xiàng)僅適用于活動窗口。
- 顯示/隱藏代碼上下文(僅 window 編輯器)
在編輯窗口頂部打開一個面板來顯示在窗口頂部滾動的代碼塊上下文。 請參閱下文“編輯與導(dǎo)航”章節(jié)中的 代碼上下文。
- 顯示/隱藏行號(僅 window 編輯器)
在編輯窗口左側(cè)打開一個顯示代碼文本行編號的列。 默認(rèn)為關(guān)閉顯示,這可以在首選項(xiàng)中修改 (參見 設(shè)置首選項(xiàng))。
- 縮放/還原高度
在窗口的正常尺寸和最大高度之間進(jìn)行切換。 初始尺寸默認(rèn)為 40 行每行 80 字符,除非在配置 IDLE 對話框的通用選項(xiàng)卡中做了修改。 屏幕的最大高度由首次在屏幕上將縮小的窗口最大化的操作來確定。 改變屏幕設(shè)置可能使保存的高度失效。 此切換操作在窗口最大化狀態(tài)下無效。
Window 菜單(命令行和編輯器)?
列出所有打開的窗口的名稱;選擇一個將其帶到前臺(必要時對其進(jìn)行去符號化)。
幫助菜單(命令行和編輯器)?
- 關(guān)于 IDLE
顯示版本,版權(quán),許可證,榮譽(yù)等。
- IDLE 幫助
顯示此 IDLE 文檔,詳細(xì)介紹菜單選項(xiàng),基本編輯和導(dǎo)航以及其他技巧。
- Python 文檔
訪問本地Python文檔(如果已安裝),或啟動Web瀏覽器并打開docs.python.org顯示最新的Python文檔。
- 海龜演示
使用示例Python代碼和turtle繪圖運(yùn)行turtledemo模塊。
可以在“常規(guī)”選項(xiàng)卡下的“配置IDLE”對話框中添加其他幫助源。有關(guān)“幫助”菜單選項(xiàng)的更多信息,請參見下面的 幫助資源 小節(jié)。
上下文菜單?
通過在窗口中右擊(在 macOS 上則為按住 Control 鍵點(diǎn)擊)來打開一個上下文菜單。 上下文菜單也具有編輯菜單中的標(biāo)準(zhǔn)剪貼板功能。
- 剪切
復(fù)制選區(qū)至系統(tǒng)剪貼板,然后刪除選區(qū)。
- 復(fù)制
復(fù)制選區(qū)至系統(tǒng)剪貼板。
- 粘貼
插入系統(tǒng)剪貼板的內(nèi)容至當(dāng)前窗口。
編輯器窗口也具有斷點(diǎn)功能。 設(shè)置了斷點(diǎn)的行會被特別標(biāo)記。 斷點(diǎn)僅在啟用調(diào)試器運(yùn)行時有效。 文件的斷點(diǎn)會被保存在用戶的 .idlerc 目錄中。
- 設(shè)置斷點(diǎn)
在當(dāng)前行設(shè)置斷點(diǎn)
- 清除斷點(diǎn)
清除當(dāng)前行斷點(diǎn)
shell 和輸出窗口還具有以下內(nèi)容。
- 跳轉(zhuǎn)到文件/行
與調(diào)試菜單相同。
Shell 窗口也有一個輸出折疊功能,參見下文的 Python Shell 窗口 小節(jié)。
- 壓縮
如果將光標(biāo)位于輸出行上,則會折疊在上方代碼和下方提示直到 'Squeezed text' 標(biāo)簽之間的所有輸出。
編輯和導(dǎo)航?
編輯窗口?
IDLE 可以在啟動時打開編輯器窗口,這取決于選項(xiàng)設(shè)置和你啟動 IDLE 的方式。 在此之后,請使用 File 菜單。 對于給定的文件只能打開一個編輯器窗口。
標(biāo)題欄包含文件名稱、完整路徑,以及運(yùn)行該窗口的 Python 和 IDLE 版本。 狀態(tài)欄包含行號 ('Ln') 和列號 ('Col')。 行號從 1 開始;列號則從 0 開始。
IDE 會定擴(kuò)展名為 .py* 的文件包含 Python 代碼而其他文件不包含。 可使用 Run 菜單來運(yùn)行 Python 代碼。
按鍵綁定?
在本節(jié)中,'C' 是指 Windows 和 Unix 上的 Control 鍵,以及 macOS 上的 Command 鍵。
Backspace 向左刪除; Del 向右刪除
C-Backspace 向左刪除單詞; C-Del 向右刪除單詞
方向鍵和 Page Up/Page Down 移動
C-LeftArrow 和 C-RightArrow 按字移動
Home/End 跳轉(zhuǎn)到行首/尾
C-Home/C-End 跳轉(zhuǎn)到文檔首/尾
一些有用的Emacs綁定是從Tcl / Tk繼承的:
C-a 行首
C-e 行尾
C-k 刪除行(但未將其放入剪貼板)
C-l 將插入點(diǎn)設(shè)為窗口中心
C-b 后退一個字符而不刪除該字符(通常你也可以用方向鍵進(jìn)行此操作)
C-f 前進(jìn)一個字符而不刪除該字符(通常你也可以用方向鍵進(jìn)行此操作)
C-p 向上一行(通常你也可以用方向鍵進(jìn)行此操作)
C-d 刪除下一個字符
標(biāo)準(zhǔn)的鍵綁定(例如 C-c 復(fù)制和 C-v 粘貼)仍會有效。 鍵綁定可在配置 IDLE 對話框中選擇。
自動縮進(jìn)?
在一個代碼塊開頭的語句之后,下一行會縮進(jìn) 4 個空格符(在 Python Shell 窗口中是一個制表符)。 在特定關(guān)鍵字之后(break, return 等),下一行將不再縮進(jìn)。 在開頭的縮進(jìn)中,按 Backspace 將會刪除 4 個空格符。 Tab 則會插入空格符(在 Python Shell 窗口中是一個制表符),具體數(shù)量取決于縮進(jìn)寬度。 目前,Tab 鍵按照 Tcl/Tk 的規(guī)定設(shè)置為四個空格符。
另請參閱 Format 菜單 的縮進(jìn)/取消縮進(jìn)區(qū)的命令。
完成?
Completions are supplied for functions, classes, and attributes of classes, both built-in and user-defined. Completions are also provided for filenames.
The AutoCompleteWindow (ACW) will open after a predefined delay (default is two seconds) after a '.' or (in a string) an os.sep is typed. If after one of those characters (plus zero or more other characters) a tab is typed the ACW will open immediately if a possible continuation is found.
If there is only one possible completion for the characters entered, a Tab will supply that completion without opening the ACW.
'Show Completions' will force open a completions window, by default the C-space will open a completions window. In an empty string, this will contain the files in the current directory. On a blank line, it will contain the built-in and user-defined functions and classes in the current namespaces, plus any modules imported. If some characters have been entered, the ACW will attempt to be more specific.
If a string of characters is typed, the ACW selection will jump to the entry most closely matching those characters. Entering a tab will cause the longest non-ambiguous match to be entered in the Editor window or Shell. Two tab in a row will supply the current ACW selection, as will return or a double click. Cursor keys, Page Up/Down, mouse selection, and the scroll wheel all operate on the ACW.
"Hidden" attributes can be accessed by typing the beginning of hidden
name after a '.', e.g. '_'. This allows access to modules with
__all__ set, or to class-private attributes.
Completions and the 'Expand Word' facility can save a lot of typing!
Completions are currently limited to those in the namespaces. Names in
an Editor window which are not via __main__ and sys.modules will
not be found. Run the module once with your imports to correct this situation.
Note that IDLE itself places quite a few modules in sys.modules, so
much can be found by default, e.g. the re module.
If you don't like the ACW popping up unbidden, simply make the delay longer or disable the extension.
提示?
A calltip is shown when one types ( after the name of an accessible function. A name expression may include dots and subscripts. A calltip remains until it is clicked, the cursor is moved out of the argument area, or ) is typed. When the cursor is in the argument part of a definition, the menu or shortcut display a calltip.
A calltip consists of the function signature and the first line of the docstring. For builtins without an accessible signature, the calltip consists of all lines up the fifth line or the first blank line. These details may change.
The set of accessible functions depends on what modules have been imported into the user process, including those imported by Idle itself, and what definitions have been run, all since the last restart.
For example, restart the Shell and enter itertools.count(. A calltip
appears because Idle imports itertools into the user process for its own use.
(This could change.) Enter turtle.write( and nothing appears. Idle does
not import turtle. The menu or shortcut do nothing either. Enter
import turtle and then turtle.write( will work.
In an editor, import statements have no effect until one runs the file. One might want to run a file after writing the import statements at the top, or immediately run an existing file before editing.
代碼上下文?
在一個包含 Python 代碼的編輯器窗口內(nèi)部,可以切換代碼上下文以便顯示或隱藏窗口頂部的面板。 當(dāng)顯示時,此面板可以凍結(jié)代碼塊的開頭行,例如以 class, def 或 if 關(guān)鍵字開頭的行,這樣的行在不顯示時面板時可能離開視野。 此面板的大小將根據(jù)需要擴(kuò)展和收縮以顯示當(dāng)前層級的全部上下文,直至達(dá)到配置 IDLE 對話框中所定義的最大行數(shù)(默認(rèn)為 15)。 如果如果沒有當(dāng)前上下文行而此功能被啟用,則將顯示一個空行。 點(diǎn)擊上下文面板中的某一行將把該行移至編輯器頂部。
上下文面板的文本和背景顏色可在配置 IDLE 對話框的 Highlights 選項(xiàng)卡中進(jìn)行配置。
Python Shell 窗口?
通過 IDLE 的 Shell 可以輸入、編輯和召回整條語句。 大部分控制臺和終端在同一時刻只能處理單個物理行。
當(dāng)向 Shell 粘貼代碼時,它并不會被編譯和執(zhí)行,直到按下 Return 鍵。 在此之前可以先編輯所粘貼的代碼。 如果向 Shell 粘貼了多行代碼,多條語句會被當(dāng)作一條語句來編譯,結(jié)果將引發(fā) SyntaxError。
之前小節(jié)中描述的編輯功能在交互式地輸入代碼時也可使用。 IDLE 的 Shell 窗口還會響應(yīng)以下按鍵。
C-c 中斷執(zhí)行命令
C-d 發(fā)送文件結(jié)束命令;如果在
>>>提示符后按下會關(guān)閉窗口。Alt-/ (擴(kuò)展單詞) 也有助于減少輸入量
歷史命令
Alt-p 提取與你所輸入鍵匹配的前一條命令。 在 macOS 上請使用 C-p。
Alt-n 提取下一條命令。 在 macOS 上請使用 C-n。
在任意的前一條命令上按 Return 將提取該命令
文本顏色?
IDLE 文本默認(rèn)為白底黑字,但有特殊含義的文本將以彩色顯示。 對于 Shell 來說包括 Shell 輸出,Shell 錯誤,用戶輸出和用戶錯誤。 對于 Shell 提示符下或編輯器中的 Python 代碼來說則包括關(guān)鍵字,內(nèi)置類和函數(shù)名稱,class 和 def 之后的名稱,字符串和注釋等。 對于任意文本窗口來說則包括光標(biāo)(如果存在)、找到的文本(如果可能)和選定的文本。
廣西著色是在背景上完成的,因此有時會看到非著色的文本。 要改變顏色方案,請使用配置 IDLE 對話框的高亮選項(xiàng)卡。 編輯器中的調(diào)試器斷點(diǎn)行標(biāo)記和彈出面板和對話框中的文本則是用戶不可配置的。
啟動和代碼執(zhí)行?
在附帶 -s 選項(xiàng)啟用的情況下,IDLE 將會執(zhí)行環(huán)境變量 IDLESTARTUP 或 PYTHONSTARTUP 所引用的文件。 IDLE 會先檢查 IDLESTARTUP;如果 IDLESTARTUP 存在則會運(yùn)行被引用的文件。 如果 IDLESTARTUP 不存在,則 IDLE 會檢查 PYTHONSTARTUP。 這些環(huán)境變量所引用的文件是存放經(jīng)常被 IDLE Shell 所使用的函數(shù),或者執(zhí)行導(dǎo)入常用模塊的 import 語句的便捷場所。
此外,Tk 也會在存在啟動文件時加載它。 請注意 Tk 文件會被無條件地加載。 此附加文件名為 .Idle.py 并且會在用戶的家目錄下查找。 此文件中的語句將在 Tk 的命名空間中執(zhí)行,所以此文件不適用于導(dǎo)入要在 IDLE 的 Python Shell 中使用的函數(shù)。
命令行語法?
idle.py [-c command] [-d] [-e] [-h] [-i] [-r file] [-s] [-t title] [-] [arg] ...
-c command run command in the shell window
-d enable debugger and open shell window
-e open editor window
-h print help message with legal combinations and exit
-i open shell window
-r file run file in shell window
-s run $IDLESTARTUP or $PYTHONSTARTUP first, in shell window
-t title set title of shell window
- run stdin in shell (- must be last option before args)
如果有參數(shù):
如果使用了
-,-c或r,則放在sys.argv[1:...]和sys.argv[0]中的所有參數(shù)都會被設(shè)為'','-c'或'-r'。 不會打開任何編輯器窗口,即使是在選項(xiàng)對話框中的默認(rèn)設(shè)置。在其他情況下,參數(shù)為要打開編輯的文件而
sys.argv反映的是傳給 IDLE 本身的參數(shù)。
啟動失敗?
IDLE uses a socket to communicate between the IDLE GUI process and the user
code execution process. A connection must be established whenever the Shell
starts or restarts. (The latter is indicated by a divider line that says
'RESTART'). If the user process fails to connect to the GUI process, it
displays a Tk error box with a 'cannot connect' message that directs the
user here. It then exits.
導(dǎo)致連接失敗的一個常見原因是用戶創(chuàng)建的文件與標(biāo)準(zhǔn)庫模塊同名,例如 random.py 和 tkinter.py。 當(dāng)這樣的文件與要運(yùn)行的文件位于同一目錄中時,IDLE 將無法導(dǎo)入標(biāo)準(zhǔn)庫模塊。 可用的解決辦法是重命名用戶文件。
雖然現(xiàn)在已不太常見,但殺毒軟件或防火墻程序也有可能會阻止連接。 如果無法將此類程序設(shè)為允許連接,那么為了運(yùn)行 IDLE 就必須將其關(guān)閉。 允許這樣的內(nèi)部連接是安全的,因?yàn)閿?shù)據(jù)在外部端口上不可見。 一個類似的問題是錯誤的網(wǎng)絡(luò)配置阻止了連接。
Python 的安裝問題有時會使 IDLE 退出:存在多個版本時可能導(dǎo)致程序崩潰,或者單獨(dú)安裝時可能需要管理員權(quán)限。 如果想要避免程序崩潰,或是不想以管理員身份運(yùn)行,最簡單的做法是完全卸載 Python 并重新安裝。
有時會出現(xiàn) pythonw.exe 僵尸進(jìn)程問題。 在 Windows 上,可以使用任務(wù)管理員來檢查并停止該進(jìn)程。 有時由程序崩潰或鍵盤中斷(control-C)所發(fā)起的重啟動可能會出現(xiàn)連接失敗。 關(guān)閉錯誤提示框或使用 Shell 菜單中的 Restart Shell 可能會修復(fù)此類臨時性錯誤。
當(dāng) IDLE 首次啟動時,它會嘗試讀取 ~/.idlerc/ 中的用戶配置文件(~ 是用戶的家目錄)。 如果配置有問題,則應(yīng)當(dāng)顯示一條錯誤消息。 除隨機(jī)磁盤錯誤之外,此類錯誤均可通過不手動編輯這些文件來避免。 請使用 Options 菜單來打開配置對話框。 一旦用戶配置文件出現(xiàn)錯誤,最好的解決辦法就是刪除它并使用配置對話框重新設(shè)置。
如果 IDLE 退出時沒有發(fā)出任何錯誤消息,并且它不是通過控制臺啟動的,請嘗試通過控制臺或終端 (python -m idlelib) 來啟動它以查看是否會出現(xiàn)錯誤消息。
運(yùn)行用戶代碼?
With rare exceptions, the result of executing Python code with IDLE is
intended to be the same as executing the same code by the default method,
directly with Python in a text-mode system console or terminal window.
However, the different interface and operation occasionally affect
visible results. For instance, sys.modules starts with more entries,
and threading.activeCount() returns 2 instead of 1.
在默認(rèn)情況下,IDLE 會在單獨(dú)的 OS 進(jìn)程中運(yùn)行用戶代碼而不是在運(yùn)行 Shell 和編輯器的用戶界面進(jìn)程中運(yùn)行。 在執(zhí)行進(jìn)程中,它會將 sys.stdin, sys.stdout 和 sys.stderr 替換為從 Shell 窗口獲取輸入并向其發(fā)送輸出的對象。 保存在 sys.__stdin__, sys.__stdout__ 和 sys.__stderr__ 中的原始值不會被改變,但可能會為 None。
當(dāng) Shell 獲得焦點(diǎn)時,它將控制鍵盤與屏幕。 這通常會保持透明,但一些直接訪問鍵盤和屏幕的函數(shù)將會不起作用。 這也包括那些確定是否有鍵被按下以及是哪個鍵被按下的系統(tǒng)專屬函數(shù)。
IDLE 的標(biāo)準(zhǔn)流替換不會被執(zhí)行進(jìn)程中創(chuàng)建的子進(jìn)程所繼承,不論它是由用戶代碼直接創(chuàng)建還是由 multiprocessing 之類的模塊創(chuàng)建的。 如果這樣的子進(jìn)程使用了 input 獲取 sys.stdin 或者使用了 print 或 write 輸出到 sys.stdout 或 sys.stderr,則應(yīng)當(dāng)在命令行窗口中啟動 IDLE。 這樣二級子進(jìn)程將會被附加到該窗口進(jìn)行輸出和輸出。
在執(zhí)行進(jìn)程中運(yùn)行的 IDLE 代碼會向調(diào)用棧添加在其他情況下不存在的幀。 IDLE 包裝了 sys.getrecursionlimit 和 sys.setrecursionlimit 以減少額外棧幀的影響。
如果 sys 被用戶代碼重置,例如使用了 importlib.reload(sys),則 IDLE 的修改將丟失,來自鍵盤的輸入和向屏幕的輸出將無法正確運(yùn)作。
當(dāng)用戶代碼直接或者通過調(diào)用 sys.exit 引發(fā) SystemExit 時,IDLE 將返回 Shell 提示符而非完全退出。
Shell中的用戶輸出?
當(dāng)一個程序輸出文本時,結(jié)果將由相應(yīng)的輸出設(shè)備來確定。 當(dāng) IDLE 執(zhí)行用戶代碼時,sys.stdout 和 sys.stderr 會被連接到 IDLE Shell 的顯示區(qū)。 它的某些特性是從底層的 Tk Text 部件繼承而來。 其他特性則是程序所添加的。 總之,Shell 被設(shè)計(jì)用于開發(fā)環(huán)境而非生產(chǎn)環(huán)境運(yùn)行。
例如,Shell 絕不會丟棄輸出。 一個向 Shell 發(fā)送無限輸出的程序?qū)⒆罱K占滿內(nèi)存,導(dǎo)致內(nèi)存錯誤。 作為對比,某些系統(tǒng)文本模式窗口只會保留輸出的最后 n 行。 例如,Windows 控制臺可由用戶設(shè)置保留 1 至 9999 行,默認(rèn)為 300 行。
A Tk Text widget, and hence IDLE's Shell, displays characters (codepoints) in the BMP (Basic Multilingual Plane) subset of Unicode. Which characters are displayed with a proper glyph and which with a replacement box depends on the operating system and installed fonts. Tab characters cause the following text to begin after the next tab stop. (They occur every 8 'characters'). Newline characters cause following text to appear on a new line. Other control characters are ignored or displayed as a space, box, or something else, depending on the operating system and font. (Moving the text cursor through such output with arrow keys may exhibit some surprising spacing behavior.)
>>> s = 'a\tb\a<\x02><\r>\bc\nd' # Enter 22 chars.
>>> len(s)
14
>>> s # Display repr(s)
'a\tb\x07<\x02><\r>\x08c\nd'
>>> print(s, end='') # Display s as is.
# Result varies by OS and font. Try it.
repr 函數(shù)會被用于表達(dá)式值的交互式回顯。 它將返回輸入字符串的一個修改版本,其中的控制代碼、部分 BMP 碼位以及所有非 BMP 碼位都將被替換為轉(zhuǎn)義代碼。 如上面所演示的,它使用戶可以辨識字符串中的字符,無論它們會如何顯示。
普通的與錯誤的輸出通常會在與代碼輸入和彼此之間保持區(qū)分 (顯示于不同的行)。 它們也會分別使用不同的高亮顏色。
對于 SyntaxError 回溯信息,表示檢測到錯誤位置的正常 '^' 標(biāo)記被替換為帶有代表錯誤的文本顏色高亮。 當(dāng)從文件運(yùn)行的代碼導(dǎo)致了其他異常時,用戶可以右擊回溯信息行在 IDLE 編輯器中跳轉(zhuǎn)到相應(yīng)的行。 如有必要將打開相應(yīng)的文件。
Shell 具有將輸出行折疊為一個 'Squeezed text' 標(biāo)簽的特殊功能。 此功能將自動應(yīng)用于超過 N 行的輸出 (默認(rèn) N = 50)。 N 可以在設(shè)置對話框中 General 頁的 PyShell 區(qū)域中修改。 行數(shù)更少的輸出也可通過在輸出上右擊來折疊。 此功能適用于過多的輸出行數(shù)導(dǎo)致滾動操作變慢的情況。
已折疊的輸出可通過雙擊該標(biāo)簽來原地展開。 也可通過右擊該標(biāo)簽將其發(fā)送到剪貼板或單獨(dú)的查看窗口。
開發(fā) tkinter 應(yīng)用程序?
IDLE 有意與標(biāo)準(zhǔn) Python 保持區(qū)別以方便 tkinter 程序的開發(fā)。 在標(biāo)準(zhǔn) Python 中輸入 import tkinter as tk; root = tk.Tk() 不會顯示任何東西。 在 IDLE 中輸入同樣的代碼則會顯示一個 tk 窗口。 在標(biāo)準(zhǔn) Python 中,還必須輸入 root.update() 才會將窗口顯示出來。 IDLE 會在幕后執(zhí)行同樣的方法,每秒大約 20 次,即每隔大約 50 毫秒。 下面輸入 b = tk.Button(root, text='button'); b.pack()。 在標(biāo)準(zhǔn) Python 中仍然不會有任何可見的變化,直到輸入 root.update()。
大多數(shù) tkinter 程序都會運(yùn)行 root.mainloop(),它通常直到 tk 應(yīng)用被銷毀時才會返回。 如果程序是通過 python -i 或 IDLE 編輯器運(yùn)行的,則 >>> Shell 提示符將直到 mainloop() 返回時才會出現(xiàn),這時將結(jié)束程序的交互。
當(dāng)通過 IDLE 編輯器運(yùn)行 tkinter 程序時,可以注釋掉 mainloop 調(diào)用。 這樣將立即回到 Shell 提示符并可與正在運(yùn)行的應(yīng)用程序交互。 請記得當(dāng)在標(biāo)準(zhǔn) Python 中運(yùn)行時重新啟用 mainloop 調(diào)用。
在沒有子進(jìn)程的情況下運(yùn)行?
By default, IDLE executes user code in a separate subprocess via a socket, which uses the internal loopback interface. This connection is not externally visible and no data is sent to or received from the Internet. If firewall software complains anyway, you can ignore it.
如果創(chuàng)建套接字連接的嘗試失敗,IDLE 將會通知你。 這樣的失敗可能是暫時性的,但是如果持續(xù)存在,問題可能是防火墻阻止了連接或某個系統(tǒng)配置錯誤。 在問題得到解決之前,可以使用 -n 命令行開關(guān)來運(yùn)行 IDLE。
如果 IDLE 啟動時使用了 -n 命令行開關(guān)則它將在單個進(jìn)程中運(yùn)行并且將不再創(chuàng)建運(yùn)行 RPC Python 執(zhí)行服務(wù)器的子進(jìn)程。 這適用于 Python 無法在你的系統(tǒng)平臺上創(chuàng)建子進(jìn)程或 RPC 套接字接口的情況。 但是,在這種模式下用戶代碼沒有與 IDLE 本身相隔離。 而且,當(dāng)選擇 Run/Run Module (F5) 時運(yùn)行環(huán)境也不會重啟。 如果你的代碼已被修改,你必須為受影響的模塊執(zhí)行 reload() 并重新導(dǎo)入特定的條目 (例如 from foo import baz) 才能讓修改生效。 出于這些原因,在可能的情況下最好還是使用默認(rèn)的子進(jìn)程來運(yùn)行 IDLE。
3.4 版后已移除.
幫助和偏好?
幫助資源?
Help 菜單項(xiàng) "IDLE Help" 會顯示標(biāo)準(zhǔn)庫參考中 IDLE 一章的帶格式 HTML 版本。 這些內(nèi)容放在只讀的 tkinter 文本窗口中,與在瀏覽器中看到的內(nèi)容類似。 可使用鼠標(biāo)滾輪、滾動條或上下方向鍵來瀏覽文本。 或是點(diǎn)擊 TOC (Table of Contents) 按鈕并在打開的選項(xiàng)框中選擇一個節(jié)標(biāo)題。
Help 菜單項(xiàng) "Python Docs" 會打開更豐富的幫助源,包括教程,通過 docs.python.org/x.y 來訪問,其中 'x.y' 是當(dāng)前運(yùn)行的 Python 版本。 如果你的系統(tǒng)有此文檔的離線副本 (這可能是一個安裝選項(xiàng)),則將打開這個副本。
選定的 URL 可以使用配置 IDLE 對話框的 General 選項(xiàng)卡隨時在幫助菜單中添加或移除。
偏好設(shè)定?
The font preferences, highlighting, keys, and general preferences can be
changed via Configure IDLE on the Option menu.
Non-default user settings are saved in a .idlerc directory in the user's
home directory. Problems caused by bad user configuration files are solved
by editing or deleting one or more of the files in .idlerc.
On the Font tab, see the text sample for the effect of font face and size on multiple characters in multiple languages. Edit the sample to add other characters of personal interest. Use the sample to select monospaced fonts. If particular characters have problems in Shell or an editor, add them to the top of the sample and try changing first size and then font.
On the Highlights and Keys tab, select a built-in or custom color theme and key set. To use a newer built-in color theme or key set with older IDLEs, save it as a new custom theme or key set and it well be accessible to older IDLEs.
macOS 上的IDLE?
Under System Preferences: Dock, one can set "Prefer tabs when opening documents" to "Always". This setting is not compatible with the tk/tkinter GUI framework used by IDLE, and it breaks a few IDLE features.
擴(kuò)展?
IDLE contains an extension facility. Preferences for extensions can be changed with the Extensions tab of the preferences dialog. See the beginning of config-extensions.def in the idlelib directory for further information. The only current default extension is zzdummy, an example also used for testing.
