本文主要内容
- 安装Python
- 使用IDLE和基础交互模式
- 编写一个简单的程序
- 使用IDLE的Python shell窗口
本章将介绍Python和IDLE的下载、安装和启动过程,IDLE是Python的一种集成开发环境。在撰写本书时,Python的最新版本是3.6,3.7版尚在开发中。经过多年的改进,Python 3是第一个无法与低版本完全兼容的版本,所以请确认手头一定是Python 3。如此重大的调整,下一次出现应该要再过很多年了,而且以后的任何改进都会再三考虑,避免对已有重要代码库产生影响。因此,本章给出的内容不太可能会很快过时。
2.1 Python的安装
无论用的是哪个平台,安装Python都是一件简单的事情。第一步是根据机器环境获取最新的发行版本,在Python官方网站上一定可以找到。本书基于Python 3.6。如果已经安装了Python 3.5甚至Python 3.7,那就万事大吉了。其实只要是Python 3的任何版本都可以,本书的大部分内容应该都没有什么问题。
多个版本共存
机器上有可能已经安装了低版本的Python。很多Linux发行版和macOS都自带了Python 2.x,Python已成为了这些版本操作系统的一部分。因为Python 3无法完全兼容Python 2,所以有必要弄清楚在同一台计算机上安装两个版本是否会引起冲突。
不必担心,可以在同一台计算机上安装多个版本的Python。在基于UNIX的系统中(如OS X和Linux),Python 3会与低版本并列安装,不会替换掉低版本的文件。系统在查找python命令时,仍会准确找到低版本。如果要访问Python 3,可以运行python3或者idle命令。在Windows系统中,不同的版本安装在不同的位置,并拥有相互独立的菜单项。
下面列出了一些安装Python时的特定平台说明。平台不同,情况可能会稍有差别,因此请务必阅读下载页面中有关各版本的说明。读者可能已经十分熟悉在自己机器上安装软件的过程,那就长话短说。
- Microsoft Windows——利用Python安装程序(当前名为python-3.6.1.exe),Python可以在大多数版本的Windows中安装。下载并执行该安装程序,然后按照提示进行操作即可。可能需要以管理员身份登录,才能运行安装程序。如果是网络终端且没有管理员密码,请让系统管理员来进行安装。
- Macintosh——Python 3的版本需要与OS X版本和处理器相匹配。确定了正确的版本后,下载磁盘映像文件,双击进行挂载(mount),然后运行其中的安装程序。OS X安装程序会自动完成所有设置,Python 3将被安装在Applications目录的子目录之下,子目录名称会带有版本号。macOS自带了多个版本的Python,但不必操心,Python 3将会独立于系统自带版本安装。如果已经安装了brew,也可以执行命令brew install python3安装Python。在Python主页上有相关链接,可以找到关于在OS X上使用Python的更多信息。
- Linux/UNIX——大多数Linux发行版都预装了Python。只是预装的Python版本不尽相同,可能不一定会是Python 3,请确保已经安装了Python 3的包。还有可能默认未安装IDLE,于是还需要单独安装该软件包。虽然根据Python官方网站提供的源代码,也可以自行编译生成Python 3,但需要用到很多其他的库,而且编译过程也不是为初学者准备的。推荐使用合适的Linux预编译版Python。请用软件管理工具查找并安装合适版本的Python 3和IDLE包。Python还有很多版本,可在很多其他操作系统上运行。如果要获取最新的平台支持清单和安装说明,请查看Python官方网站。
Anaconda是Python的另一个发行版本
除可以直接从Python.org获得Python的发行版本之外,名为Anaconda的发行版也越来越受欢迎,特别是在科学计算和数据科学用户当中。Anaconda是一个以Python为内核的开放式数据科学平台。安装Anaconda之后,不仅Python已就绪,还拥有了R语言和大量预装的数据科学软件包,还可以用附带的conda软件包管理器添加很多其他内容。当然也可以安装miniconda,它只包含Python和conda,然后按需添加软件包。
Anaconda或miniconda都可以从Anaconda官网获取。下载与当前操作系统匹配的Python 3安装程序,并按照操作说明运行。安装完成后,机器上就拥有了完整的Python版本。
如果读者主要对数据科学领域感兴趣,可能就会发现,Anaconda能以一种更快、更简单的方式启动并运行Python。
2.2 基础交互模式和IDLE
Python内置两种与解释器的交互模式:原始的基础(命令行)模式和IDLE。IDLE在很多平台(包括Windows、Mac和Linux)上都有提供,但在其他平台上可能就没有了。为了能让IDLE运行起来,可能需要多做几步操作并安装额外的软件包。但这些多做的工作是值得的,因为IDLE提供了比基础的交互模式更流畅的用户体验。不过,即便平常是用IDLE的,可能还是需要时常启用一下基础模式。对这两种模式的启动和使用,都应该足够熟悉才行。
2.2.1 基础交互模式
基础交互模式是一个相当原生的环境,但本书中的交互式例程一般都比较小。在本书的后续部分,会介绍如何方便地将文件中的代码加入会话(通过模块机制)。下面是在Windows、macOS和UNIX中启动基础会话的步骤。
- 在Windows中启动基础会话——对于Python 3.x版本,可以导航到“开始”菜单中的“Python 3.6”子菜单,找到“Python 3.6(32-bit)”并单击。或者可以直接找到Python.exe可执行文件(例如,在C:甥敳獲myuserAppDataLocaIProgramsPythonPython35-32中)并双击它。然后会出现图2-1所示的窗口。
- 在macOS中启动基础会话——打开一个终端窗口并键入python3。如果出现“Command not found”错误,请运行Applications目录下Python3子目录中的Update Shell Profile脚本。
- 在UNIX中启动基础会话——在命令提示符下键入python3。在当前窗口中会出现版本消息,类似于图2-1所示,后面跟着Python提示符>>>。
图2-1 Windows 10中的基础交互模式
退出交互式shell
按下Ctrl+Z(Windows中)或Ctrl+D(Linux或UNIX中),或者在命令提示符下键入exit(),即可退出基础会话。
大部分系统都带有命令行编辑和命令历史记录机制。用上下箭头键和Home、End、Page Up、Page Down键可以翻看之前输入的命令,按下Enter键即可再次执行。在用本书学习Python时,这种方式足够用了。另一种方案是使用优秀的Python模式下的Emacs编辑器,通过集成的shell缓冲区来访问Python的交互模式。
2.2.2 IDLE集成开发环境
IDLE是Python内置的开发环境,其名称为“Integrated DeveLopment Environment”的缩写(当然,也可能受了某个英国电视节目演员姓氏的影响)。IDLE集成了交互式解释器、代码编辑和调试工具,与创建Python代码有关的工作可以在此一站式完成。IDLE提供的多种工具,足以吸引大家从它这里开始学习Python。以下是在Windows、macOS和Linux中运行IDLE的方法。
- 在Windows中启动IDLE——对于Python 3.6版本,可以打开Windows“开始”菜单,找到“IDLE(Python 3.6 32-bit)”并单击。然后将会出现图2-2所示的窗口。
- 在macOS中启动IDLE——进入Applications目录下的Python 3.x子目录,在此运行IDLE。
- 在Linux或UNIX中启动IDLE——在命令提示符下键入idle3,将会出现一个类似图2-2的窗口。如果使用操作系统的包管理器来安装IDLE,那么在Programming之类的子菜单中应该会有一个IDLE的菜单项。
图2-2 WIndows中的IDLE
2.2.3 基础交互模式和IDLE的适用场景
用IDLE还是用基础shell窗口呢?请先从IDLE或Python shell窗口开始。在第10章以前,这两种界面都能胜任本书的代码示例。第10章将会介绍如何编写自己的模块,用IDLE创建和编辑代码文件会比较便捷一些。但如果有特别偏爱的文本编辑器,也许再加上基础shell窗口就能满足需要了。如果没有特别偏爱的编辑器,建议就从IDLE开始吧。
2.3 使用IDLE的Python shell窗口
启动IDLE后会打开Python shell窗口(如图2-3所示)。当键入代码时,它会基于Python语法提供自动缩进和代码着色功能。
图2-3 使用IDLE中的Python shell。
代码在输入时会自动着色(基于Python语法)。将光标放在任一已键入的命令上并按下Enter键,就会把命令和光标一起移动到最后一行,在这里可以编辑命令,按Enter键就会将这条命令发送给解释器。将光标放在最后一行,按下Alt+P或Alt+N键,就可以在历史记录中前后切换命令。找到要执行的命令后,根据需要进行编辑并按下Enter键,就会将其发送给解释器
利用鼠标、箭头键、Page Up和Page Down键,以及某些符合Emacs标准的键,可以在命令缓冲区中来回移动。详情参见Help菜单。
会话中的所有内容都会被记入缓冲区中。可以前后滚动或搜索,将光标放在任意行上按下Enter键(生成一个硬回车),该行就会被复制到屏幕的最后一行,在这里可以编辑命令,再次按下Enter键就会将其发送给解释器。也可以让光标停在最后一行,然后通过按Alt+P或Alt+N键在之前输入的命令之间前后切换,Alt+P和Alt+N会不停地将命令复制到最后一行。如果找到了需要执行的命令,可以再次进行编辑,按下Enter键就可发送给解释器。按下Tab键则可以查看当前键入内容的自动补全列表,列表是基于Python关键字和用户自定义值生成的。
如果觉得可能处于挂起状态,无法显示新的提示符了,那么可能是解释器在等待用户输入。按下Ctrl+C发送中断命令,就能回到提示符状态,这也可以用于中断任何正在运行的命令。如果要退出IDLE,请在File菜单中选择Exit。
一开始用得最多的可能就是Edit菜单。与其他菜单一样,可以通过双击顶部的虚线将其解绑,让其位于窗口上端。
2.4 第一个程序“Hello, world”
无论通过哪种方式使用Python的交互模式,都应该看到由3个三角括号“>>>”组成的提示符。这就是Python的命令行提示符,表示可以键入要执行的命令,或要计算的表达式。下面按惯例从“Hello, World”程序开始吧,用Python来实现只需要一行代码(每一行代码结束都要键入一个硬回车):
>>> print("Hello, World")Hello, World
这里在命令行提示符后键入了print函数,结果显示在了屏幕上。执行print函数会将其参数打印到标准输出上(通常是屏幕)。如果是在运行Python代码文件时执行该命令,也会发生完全相同的事情,“Hello, World”将被打印到屏幕上。
恭喜!第一个Python程序就此完工了,而Python甚至还没开讲呢。
2.5 利用交互式提示符探索Python
无论是在IDLE中,还是在标准的交互式命令提示符下,都有一些便利的学习工具来探索Python。第一个工具是help()函数,它有两种模式。在命令提示符后输入help(),即可进入在线帮助系统,从中可以获得有关模块、关键字或主题的帮助。帮助系统内的提示符是help>,这时输入模块名称(如math或其他主题),就能查看相关的Python文档。
通常可以用更有针对性的方式来使用help(),这样会更为便捷。只要将类型或变量名称作为help()的参数,就可以马上显示其帮助文档:
>>> x=2>>> help(x)Help on int object:class int(object) | int(x=0) -> integer | int(x, base=10) -> integer | | Convert a number or string to an integer, or return 0 if no arguments | are given. If x is a number, return x.__int__(). For floating point | numbers, this truncates towards zero. | | If x is not a number or if base is given, then x must be a string, | bytes, or bytearray instance representing an integer literal in the... (continues with the documentation for an int)
以这种方式使用help(),可以很方便地查看某个方法的确切语法和对象的行为。
help()函数是pydoc库的一部分,它在访问Python库内文档时有若干个参数可供选用。 因为所有Python安装完成后都会自带完整的文档,即使不能上网,全部官方文档也都唾手可得。有关访问Python文档的更多信息,参见附录A。
另一个有用的函数是dir(),它列出了特定名称空间中的对象。在没有给出参数时,它会列出当前的全局变量,但它也可以列出某个模块中的全部对象,甚至某个类型的全部对象:
>>> dir()['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__', 'x']>>> dir(int)['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__gt__', '__hash__', '__index__', '__init__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'numerator', 'real', 'to_bytes']>>>
dir()函数在查找方法和数据的定义时十分有用,可以一眼就看到属于某个对象或模块的全部成员。在调试代码的时候也很有用,因为在什么地方定义了什么都一目了然。
与dir()``函数不同,globals()和locals()函数会显示与对象关联的值。在目前情况下,这两个函数会返回相同的结果,所以这里只给出globals()的输出结果:
>>> globals(){'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': , '__spec__': None, '__annotations__': {}, '__builtins__': , 'x': 2}
与dir()函数不同,globals()和locals()显示的都是与对象相关的值。在第10章中这两个函数将会更频繁地出现。好了,这足以说明,有多种方法可以查看Python会话内的当前状态。
2.6 小结
- 在Windows系统中安装Python 3是十分简单的,只要从Python官方网站下载最新版的安装程序运行一下即可。在Linux、UNIX和Mac系统中的安装过程稍有区别。
- 请参考Python网站上的安装说明,尽可能通过系统自带的软件包安装程序进行安装。
- 还可以通过Anaconda(或miniconda)来安装,其发行版可以在其官方网站上找到。
- Python安装完成之后,可以选用基础交互式shell(以后再加入个人偏爱的编辑器),也可以选用IDLE集成开发环境。