IDLE
源代码:Lib/idlelib/
IDLE 是python内置的开发和学习环境。
IDLE有如下特征:
-用100%纯正的python编码完成,使用名为tkinter的GUI图形用户界面
-跨平台:在Windows、Unix和Mac OS X上工作近似
-提供代码输入、输出和错误信息提示的着色的Python Shell窗口(交互式解释器)
-提供多次撤销、python代码着色、智能缩进、call tips、自动补全和其他特征的多窗口文本编辑器
-任意窗口查找检索,编辑窗口中替换文本,在多文件中查找(grep)
-提供持续的断点调试、单步调试以及查看全局和本地命名空间的调试器
-配置、浏览以及其他对话框。
1、菜单
IDLE有两个主要窗口类型,Shell窗口和编辑窗口。支持同时打开多个编辑窗口。输出窗口,例如用于文件的编辑/查找,是编辑窗口的子类型。它们一般具有与编辑窗口相同的顶部菜单,但有着与之不同的默认标题和上下文菜单。
IDLE的菜单基于当前被选中的窗口动态变化。下面记录的每个菜单均指示与之关联的窗口类型。
1.1 文件菜单(Shell和编辑窗口)
新文件/New File:
创建一个新的文件编辑窗口
打开/Open:
用[打开窗口]打开存在的文件
最近文件/Recent File:
打开一个近期文件列表,单击以打开。
打开模组/Open Module:
打开一个已存在的模组(用sys.path搜索)
类浏览器/class Browser:
以树形结构在当前编辑器文件下展示函数、类和方法。首先在Shell中打开一个模块。
路径浏览器/Path Browser:
以树形结构显示sys.path目录,模块,函数,类和方法。
保存/Save:
保存当前窗口到关联的文件(如果文件存在)。自从已打开或上次保存以来已更改的窗口在窗口的标题栏前后有’*‘号标记。如果不存在关联文件,请使用’另存为’。
保存为/Save As:
使用’另存为’对话框保存当前窗口。保存的文件成为了窗口新的关联文件。
保存副本为/Save Copy As:
将当前窗口保存到新的文件中而不改变当前关联的文件。
打印窗口/Print Window:
用默认打印机打印当前窗口
关闭/Close:
关闭当前窗口(如果未保存,则咨询)
退出/Exit:
关闭所有窗口并且退出IDLE(如果未保存,则咨询)
1.2 编辑菜单(Shell and Editor)
撤销/Undo:
在当前窗口撤销最后一次更改。最多可以撤销1000次更改。
重做/Redo:
对当前窗口重做最后一次撤销的操作。
剪切/Cut:
将所选内容复制到系统范围的剪贴板中;然后删除所选内容。
复制/Copy:
将所选内容复制到系统范围的剪贴板中。
粘贴/Paste:
将内存剪切板中的内容插入当前窗口。
剪切板功能在上下文菜单中也可以使用。
全选/Select All:
选择当前窗口的全部内容。
搜索/Find:
打开包含许多选项的搜索对话框。
再次搜索/Find Again:
重复最后一次搜索(如果有的话)
搜索选中内容/Find Selection:
搜索当前选中的字符串内容,如果有的话。
在文件中搜索/Find in File:
打开文件搜索对话框。结果放在一个新的输出窗口。
替换/Replace:
打开一个搜索-替换对话框。
前往行/Go to Line:
将光标移到请求的行号并使该行可见。
显示完成/Show Completions:
打开一个可滚动列表,允许选择关键字和属性。请参阅下面提示部分中的完成。
展开字/Expand Word:
展开已键入的前缀以匹配同一窗口中的完整单词;重复可获得不同的展开方式。
Show call tip:
在函数未闭合括号时,打开一个带有函数参数提示的小窗口。
显示周围的括号/Show surrounding parens:
高亮显示周围的括号。
1.3 格式菜单(仅编辑窗口)
缩进/Indent Region:
按缩进宽度右移选中行(默认四个空格)
取消缩进/Dedent Region:
按缩进宽度左移选中行(默认四个空格)
注释区域/Comment Out Region:
在选定行前面插入##。
移除注释/Uncomment Region:
移除选定行前的#或##。
制表符替换空格区域/Tabify Region:
将最前端的一段空格转变为制表符。(注意:我们建议使用4个空格块来缩进python代码)
空格替换制表符/Untabify Region:
将所有制表符替换为恰当数量的空格。
切换制表符/Toggle Tabs:
打开一个用于在空格缩进和制表符缩进之间转换的对话框。
新缩进宽度/New Indent Width:
打开一个对话框来改变缩进宽度。python社区接受的默认值是4个空格。
设置格式段落/Format Paragraph :
重新格式化在注释块或多行字符串或字符串选定行中当前以空行分隔的段落。段落中的所有行的格式都将小于N列,其中N默认为72列。
删除行尾空白/Strip trailing whitespace :
通过向每一行作用str.rstrip函数,包括包含多行字符串的行,移除行最后的非空白字符串之后尾随的空格和其他空白字符。
1.4 运行菜单(仅编辑窗口)
Python Shell:
打开或唤醒Python Shell窗口。
检查模块/Check Module:
检查编辑器窗口中当前打开的模块的语法。如果模块尚未保存,则将提示用户保存或自动保存,在IDLE的设置对话框的“常规”选项卡中选择。如果存在语法错误,则在编辑器窗口中显示近似位置。
运行模块:
检查模块(如上)。如果没有错误,重新运行Shell以清理环境,然后运行模块。输出显示在Shell窗口。请注意’输出’需要使用到’print’或’write’。当运行结束,Shell会保留焦点并显示提示。此时,用户可以交互式地探索运行结果。这类似于在命令行使用python -i file
执行文件。
1.5 Shell menu(仅Shell窗口)
查看上次重新运行/View Last Restart:
将shell窗口滚动到最近一次Restart。
Restart Shell:
重新运行Shell以清理环境。
中断执行/Interrupt Execution:
停止正在运行的程序。
1.6 Debug menu(Shell Only)
前往文件/行 Go to File/Line:
看看当前行。使用光标,并在上面的行中输入文件名和行号。如果找到,打开文件(如果尚未打开),并显示行。使用此选项可以查看异常回溯中引用的源行和文件中查找找到的行。也可以在Shell窗口和输出窗口的上下文菜单中使用。
调试器(切换)/Debugger(toggle):
激活后,在shell中输入或从编辑器运行的代码将在调试器中运行。在编辑器中,可以使用上下文菜单设置断点。这个功能仍不完全,有些实验性。
堆栈查看器/Stack Browser:
显示树形栈的最后一个异常的栈堆回溯,可以访问局部和全局变量。
自动打开堆栈查看器/Auto-open Stack Browser:
切换在未处理的异常上自动打开堆栈查看器。
1.7 选择菜单(Shell and Editor)
配置IDLE/Configure IDLE :
打开配置对话框,更改如下首选项:字体,缩进,键绑定,文本颜色主题,启动窗口,大小尺寸以及其他帮助源和拓展(参见下文)。在OS X上通过选择应用程序菜单中的首选项打开配置对话框。要将新的内置颜色主题(IDLE Dark)与旧的IDLE一起使用,请将其另存为新的自定义主题。
非默认用户设置保存在用户主目录中的.idlerc目录中。通过编辑或删除.idlerc中的一个或多个文件,可以解决由错误的用户配置文件引起的问题。
代码上下文/Code Context (toggle)(Editor Window only) :
打开编辑窗口顶部的一个窗格,该窗格显示在窗口顶部滚动的代码块上下文。单击此窗格中的行将在编辑器顶部显示该行。
1.8 窗口菜单(Shell and Editor)
缩放高度/Zoom Height:
在正常大小和最大高度之间切换窗口。除非在“配置IDLE”对话框的“常规”选项卡上更改,否则初始大小默认为40行80个字符。
此菜单的其余部分列出所有打开窗口的名称;选择一个窗口将其置顶(deiconifying it if necessary)。
1.9 帮助菜单(Shell and Editor)
关于 IDLE:
显示版本、版权、许可证、信用证以及其他。
IDLE Help:
显示关于IDLE详细菜单选项,基本编辑和导航以及其他提示的帮助文档。即本贴汉化内容
Python帮助文档/Python Docs:
访问本地Python文档(如果已安装),或启动web浏览器并打开docs.Python.org以显示最新的Python文档。
海龟演示/Turtle Demo:
使用示例Python代码和Turtle绘图来运行Turtledemo模块。
附加帮助源可以通过配置IDLE对话框下的“常规”选项卡添加到此处。
1.10 上下文菜单/Context Menus
通过在窗口中单击鼠标右键(在OS X上单击控件)打开上下文菜单。上下文菜单在“编辑”菜单上也具有标准剪贴板功能。
Cut/Copy/Pasta功能见1.2Edit menu,此处不再复述。
编辑器窗口也有断点函数。具有断点设置的行被特别标记。断点只有在调试器下运行时才有效。文件的断点保存在用户的.idlerc目录中。
设置断点/Set Breakpoint:
在当前行设置一个断点。
清理断点/Clear Breakpoint:
清除该行上的断点。
Shell和Output窗口具有以下内容。
Go to file/line
Same as in Debug menu. 见1.6调试目录。
2、编辑和导航
在本节中,“C”是指Windows和Unix上的控制键Ctrl和Mac OSX上的命令键。
-Backspace向光标左边删除,Del向光标右边删除.
-C+Backspace删除掉光标左边所有内容;C+Del删除掉光标右边所有内容.
-箭头键和向上翻页PgUp/向下翻页PgDn移动
-C+左箭头和C+右箭头按word移动 (#备注一下,此处的按词移动仅指英文单词读者可以自行尝试)
-Home/End转到行首/行尾
- C+Home/C+End go to begin/end of file 转到文件的开头和末尾
-一些有用的Emacs绑定继承自Tcl/Tk:
.C+a 行开头
.C+e 行结尾
.C+k 删掉整行(但不放入剪切板)
.C+l 围绕插入点的中心窗口 ???
.C+b 返回一个字符而不删除(通常也可以使用光标键)
.C+f 前进一个字符而不删除(通常也可以使用光标键)
.C+p 向上走一行(通常也可以使用光标键)
.C+d 删除下一个字符
标准键绑定(如C+c复制和C+v粘贴)可以工作。在IDLE配置对话框中选择键绑定。
2.1 自动缩进
在block-opening语句之后,下一行将缩进4个空格(在Python Shell窗口中缩进一个Tab制表符长度)。在某些关键字(break、return等)之后,下一行是取消缩进(dedented)。在行首缩进中,退格删除最多4个空格(如果有)。Tab插入空格(在Python Shell窗口的一个Tab),数字取决于缩进宽度。目前,由于Tcl/Tk的限制,标签被限制为四个空格。
另请参见1.2“编辑”菜单中的“缩进/取消缩进”命令。
2.2 补完/Completions
为内置和用户定义的函数、类和类的属性提供补全。文件名也提供了补全。
键入“.”或(在字符串中)os.sep后,**自动完成窗口(ACW)**将在预定义的延迟(默认为两秒)后打开。如果在其中一个字符(加上零个或多个其他字符)之后键入了一个制表符,则如果找到可能的延续符,ACW将立即打开。
如果输入的字符只有一个可能的完成,一个制表符将提供该完成而不打开ACW。
“Show Completions”将强制打开一个补全窗口,默认情况下,C+space将打开一个Completions窗口。在空字符串中,它将包含当前目录中的文件。在空行中,它将包含当前命名空间中的内置和用户定义的函数和类,以及导入的任何模块。如果输入了一些字符,ACW将尝试更具体。
如果键入了字符串,则ACW选择将跳到与这些字符最匹配的条目。输入Tab将导致在Editor或Shell中输入最长的非二义性匹配。一行中的两个tab将提供当前ACW选择,返回或双击也将提供。光标键、上/下翻页、鼠标选择和滚轮都在ACW上操作。
“Hidden”属性可以通过在“.”后面键入隐藏名称的开头来访问,例如_
.这允许访问设置了__all__
的模块,或访问类私有属性。
补全和“扩展单词”功能可以节省大量的输入!
'补全’功能当前仅限于命名空间’namespace’中的那些。在编辑器窗口中,找不到不通过__main__
和sys.modules
的名称。使用导入运行模块一次以更正此情况。注意,IDLE本身在sys.modules中放置了很多模块,因此默认情况下可以找到很多模块,例如re模块。
如果您不喜欢ACW在未经允许的情况下突然出现,只需延长延迟时间或禁用扩展。
2.3 函数调用提示/Call Tips
当键入一种类型时(在可访问函数的名称之后。名称表达式可以包括点和下标。调用提示将一直保留,直到单击它,光标移出参数区域),将显示一个调用提示。当光标位于定义的参数部分时,菜单或快捷方式将显示一个调用提示。
调用提示由函数签名和文件字符串的第一行组成。对于没有可访问签名的内置代码,调用提示由第五行或第一个空行上的所有行组成。这些细节可能会改变。
可访问的函数集取决于自上次重新启动以来导入到用户进程中的模块(包括由Idle本身导入的模块)和运行的自定义函数。
例如,重新启动Shell并输入itertools.count
(出现调用提示是因为Idle将itertools导入到用户进程中供自己使用。(这可能会改变。)输入turtle.writer
(但没有显示任何内容)。IDLE并没有导入turtle模块。菜单或快捷方式也不起作用。输入import turtle
,然后输入turtle.write
(将工作)。
在编辑器中,import语句只有运行这个文件时才生效.您可能希望在顶部写导入语句后运行文件,或者在编辑之前立即运行现有文件。
2.4 Python Shell Window
- C+c中断运行命令.
- C+d发送文件结尾;如果在
>>>
提示下键入,则关闭窗口 - Alt+/(展开word)也有助于减少键入
命令历史记录
- Alt+p检索与您键入的内容匹配的上一个命令。在OS X上使用C+p。
- Alt+n检索下一个。在OS X上使用C+n。
- 在任何前一个命令上返回时检索该命令
2.5 文本颜色
IDLE默认为黑白文本,但会给文本添加特殊含义的颜色。对于shell,这些(添加特殊颜色的文本)是Shell输出、Shell错误、用户输出和用户错误。对于Python代码,在Shell提示下或在编辑器中,这些是关键字、内置类和函数名、class
和def
之后的名称、字符串和注释。对于任何文本窗口,它们是光标(如果存在)、找到的文本(如果可能)和选定的文本。
文本着色是在背景中完成的,因此未着色的文本偶尔可见。要更改颜色方案,请使用“配置IDLE”对话框的“高亮”选项卡。在编辑器中标记调试器断点行,在弹出窗口和对话框中标记文本是用户不可配置的。
3、启动和代码运行
使用-s
选项启动时,IDLE将执行环境变量IDLESTARTUP
或PYTHONSTARTUP
引用的文件。IDLE首先检查IDLESTARTUP
;如果IDLESTARTUP
存在,则运行引用的文件。如果IDLESTARTUP
不存在,则IDLE检查PYTHONSTARTUP
。这些环境变量引用的文件是存储IDLE shell中经常使用的函数或执行import语句以导入公共模块的方便位置。
此外,Tk
还加载启动文件(如果存在)。注意,Tk
文件是无条件加载的。这个附加文件是.Idle.py
,在用户的主目录中查找。此文件中的语句将在Tk名称空间中执行,因此此文件对于从IDLE的Python shell导入要使用的函数没有用处。
3.1 命令行用法
idle.py | [-c command] [-d] [-e] [-h] [-i] [-r file] [ -s ] [-t title] [-] [arg]… |
-c command | 在Shell窗口运行命令 |
-d | 启动调试器并且打开Shell窗口 |
-e | 打开编辑器窗口 |
-h | 打印具有合法组合和退出的帮助信息 |
-i | 打开Shell窗口 |
-r file | 在Shell窗口运行文件 |
-s | 在shell窗口中,首先运行$ IDLESTARTUP或$PYTHONSTARTUP |
-t title | 给Shell窗口设置标题 |
- | 在shell中运行stdin(-必须是args之前的最后一个选项) |
如果有参数:
- 如果使用
-
、-c
或r
,则所有参数都放在sys.argv[1:…]
中,并且sys.argv[0]
设置为''
、'-c'
或'-r'
。即使是选项对话框中的默认设置,也不会打开编辑器窗口。 - *否则,参数是打开进行编辑的文件,
sys.argv
反映传递给IDLE本身的参数。
3.2 启动失败
IDLE使用Socket在IDLE GUI进程和用户代码执行进程之间进行通信。无论Shell何时启动或重新启动,都必须建立连接。(后者由表示“重新启动”的分隔线表示)。如果用户进程未能连接到GUI进程,它将显示一个Tk
错误框,其中包含一条“cannot connect”消息,指示用户此处。然后它就退出了。
Socket:套接字,使应用程序能够读写与收发通信协定/protocol/与资料的程序。
失败的一个常见原因是用户编写了与标准库模块同名的文件,例如random.py和tkinter.py。当此类文件与即将运行的文件位于同一目录中时,IDLE无法导入stdlib文件。当前的修复方法是重命名用户文件。
尽管不像过去那样常见,但防病毒程序或防火墙程序可能会终止连接。如果无法设定程序允许连接,则必须关闭该程序才能使IDLE工作。允许此内部连接是安全的,因为外部端口上看不到任何数据。一个类似的问题是,网络配置错误会阻塞连接。
Python安装问题有时会停止ILDE:多个版本可能会发生冲突,或者单个安装可能需要管理员访问。如果撤消冲突,或者不能或不想以管理员身份运行,那么彻底删除Python并重新开始是最简单的。
僵尸pythonw.exe进程可能有问题。在Windows上,使用任务管理器检测并停止一个。有时,由程序崩溃或键盘中断(control+C)启动的重新启动可能无法连接。解除错误框或在Shell菜单上重启Shell可能会解决这个问题。
当IDLE首次启动时,它会尝试读取~ /.idlerc/(~是用户的主目录)中的用户配置文件。如果有问题,会显示错误消息。撇开随机磁盘故障不谈,这可以通过从不手动编辑配置文件来防止,方法是使用“配置”对话框,在“选项”下,取消“选项”。一旦发生这种情况,解决方案可能是删除一个或多个配置文件。
如果IDLE退出时没有消息,并且它不是从控制台启动的,那么尝试从控制台(python-m idlelib
)启动并查看是否出现消息。
3.3 IDLE控制台差异
除了极少数例外,使用IDLE执行Python代码的结果与在控制台窗口中执行相同的代码的结果相同。但是,不同的接口和操作偶尔会影响可见的结果。例如,sys.modules
以更多条目开头。
IDLE还将sys.stdin
、sys.stdout
和sys.stderr
替换为从Shell窗口获取输入并将输出发送到Shell窗口的对象。当Shell有焦点时,它控制键盘和屏幕。这通常是显而易见的,但直接访问键盘和屏幕的功能将不起作用。如果使用importlib.reload(sys)
重置sys
,则IDLE的更改将丢失,并且input
、raw_input
和print
等操作将无法正常工作。
使用IDLE的Shell,可以输入、编辑和调用完整的语句。有些控制台一次只能使用一条物理线路。IDLE使用exec
运行每个语句。因此,总是为每个语句定义'__builtins__'
。
3.4 开发tkinter应用程序
IDLE有意与标准Python不同,以便促进tkinter程序的开发。在标准Python中输入import tkinter as tk;root=tk.tk()
,则不显示任何内容。在IDLE中输入相同的命令,就会出现一个tk窗口。在标准Python中,还必须输入root.update()
才能看到窗口。IDLE在后台的速度相当,大约是每秒20次,大约每50毫秒一次。接下来输入b=tk.Button(root,text='Button');b.pack()
。同样,在键入root.update()
之前,标准Python中没有明显的变化。
大多数tkinter程序运行root.mainloop()
,它通常在tk应用程序被破坏之前不会返回。如果程序使用python -i
或从IDLE编辑器运行,则在mainloop()
返回之前不会出现一个>>>
shell提示,此时没有任何内容可供交互。
从IDLE编辑器运行tkinter程序时,可以注释掉主循环调用。然后立即得到一个shell提示,可以与实时应用程序交互。在标准Python中运行时,只需记住重新启用mainloop调用。
3.5 不使用子进程运行
默认情况下,IDLE通过使用内部环回接口的套接字Socket在单独的子进程中执行用户代码。此连接在外部不可见,并且没有向Internet发送或从Internet接收数据。如果防火墙软件仍然报警,你可以忽略它。
如果尝试建立套接字连接失败,Idle将通知您。这种故障有时是暂时的,但如果是持续的,问题可能是防火墙阻塞了连接或某个特定系统的配置错误。在问题解决之前,可以使用-n
命令行开关运行Idle。
如果使用-n命令行开关启动IDLE,它将在一个单独的进程中运行,并且不会创建运行RPC Python执行服务器的子进程。如果Python不能在您的平台上创建子进程或RPC套接字接口,这将非常有用。但是,在这种模式下,用户代码并不是与IDLE本身隔离的。此外,当选择运行 / 运行模块(F5)时,不会重新启动环境。如果代码已被修改,则必须重新加载受影响的模块并重新导入所有被更改的项才能使更改生效。出于这些原因,如果可能的话,最好使用默认子流程运行IDLE。
自3.4版起已弃用。
4、帮助与偏好
4.1 附加帮助资源
IDLE包含一个名为“Python Docs”的帮助菜单项,它将打开Docs.Python.org上提供的大量帮助源,包括教程。使用“配置IDLE”对话框,可以随时从“帮助”菜单中添加或删除选定的URL。有关详细信息,请参见IDLE帮助菜单中的IDLE帮助选项。
4.2 设置用户偏好
字体偏好、突出显示、键和常规偏好可以通过“选项”菜单上的“配置IDLE”进行更改。密钥可以由用户定义;IDLE附带四个内置密钥集。此外,用户可以在“密钥”选项卡下的“配置IDLE”对话框中创建自定义密钥集。
4.3 扩展
IDLE包含一个扩展设施。可以使用“Preferences”对话框的“扩展”选项卡更改扩展的偏好。有关详细信息,请参阅idlelib目录中config-extensions.def的开头。当前唯一的默认扩展名是zzdummy,该示例也用于测试。