本节将以两种模式使用IPython解释器
:
除了IPython解释器之外,本节还会介绍如何使用基于浏览器的编程环境Jupyter Notebook编写和执行Python代码
。
我们使用IPython交互模式来评估简单的算术表达式。
以交互模式进入IPython
首先,打开命令行窗口:
在命令行窗口中,键入 ipython ,然后按Enter键(或Return键),你会看到如下文字(内容取决于使用的平台和IPython的版本):
In [1]: 是一个 提示符 ,表示IPython正在等待输入。可以在此处输入 ? 获得帮助或开始输入代码段。
评估表达式
在交互模式下,可以评估表达式:
键入
45+72
并按Enter键后,IPython
读取
该代码段,对其进行
评估
并在
Out[1]
位置输出结果
。然后,IPython显示提示符
In[2]
,表明它正在等待输入第二个代码段。对于每个新代码段,IPython会令方括号中的数字加1。本书通常会在一章中的每一节将提示符设置为
In[1]
,表明开始一个新的交互式会话。
下面评估一个更复杂的表达式:
Python使用星号(*)做乘法,使用正斜杠(/)做除法。与数学中的定义一样,括号可以强制改变运算顺序,因此先评估括号表达式 (12.7-4) ,得到 8.7 。然后评估 5*8.7 ,结果为 43.5 。接着评估 43.5/2 ,得到结果 21.75 。最后,IPython将结果显示在 Out[2] 中。形如 5 、 4 和 2 的整数称为 整型数 ;带小数点的数字,如 12.7 、 43.5 和 21.75 ,称为 浮点数 。
退出交互模式
可以通过下面的操作退出交互模式:
在本节中,我们执行一个名为 RollDieDynamic.py 的脚本,该脚本的编写将在第6章介绍。 .py 扩展名 表明该文件包含Python源代码。脚本 RollDieDynamic.py 模拟投掷一个六面骰子。它提供了一个彩色的动态可视化效果,可动态绘制骰子每个面出现的次数。
更改路径为本章的示例文件夹
脚本 RollDieDynamic.py 在本书的 ch01 源代码文件夹中。在“开始阅读本书之前”部分中提到,先将 examples 文件夹解压缩到用户账户的 Documents 文件夹中。本书的每一章都有一个名为 ch## 的文件夹,该文件夹中包含该章源代码,其中 ## 是从 01 到 16 的两位数章节编号。首先,打开系统的命令行窗口。接下来,使用 cd (change directory)命令切换到 ch01 文件夹:
执行脚本
要执行脚本,在命令行中键入以下命令,然后按Enter键:
ipython RollDieDynamic.py 6000 1
运行脚本会打开一个窗口显示可视化结果。数字6,000和1是掷骰子的次数和每次掷骰子的个数。在这个实例中,脚本会依次为每一个骰子更新图表6,000次。
对于一个六面骰子,点数1到6应“等概率”出现,即每个面朝上的概率都为1/6(或约等于16.667%)。如果投掷6,000次骰子,每个面朝上的数学期望大约为1,000次。与掷硬币一样,投掷骰子的结果也是随机的,因此可能会有某些点数出现的次数小于1,000,某些点数正好出现1,000次,还有某些点数出现超过1,000次。脚本随机生成骰子的点数,因此每次运行的结果会有所不同。依次将值1更改为100、1,000和10,000,观察脚本运行的结果可以发现,随着骰子个数的增加,每个点数出现的次数的百分比将无限趋近于16.667%,这就是“大数定律”的体现。下图是脚本执行期间的屏幕截图。
创建脚本
通常,可以在任何能够编辑文本的编辑器中创建Python源代码。在编辑器中可以键入程序、进行必要的更正并将其保存到计算机中。 集成开发环境 (IDE)提供支持整个软件开发过程的工具,例如编辑器、用于定位程序错误的调试器等。一些流行的Python IDE包括Spyder(随Anaconda一起提供)、PyCharm和Visual Studio Code。
执行时可能出现的问题
程序通常在第一次执行时无法正确运行。例如,程序可能会执行除以零(Python中的非法操作)的操作,这将导致程序提示错误消息。如果在脚本中出现这种情况,则需要返回编辑器进行必要的更正并重新执行脚本,以确定是否改正了错误。
类似除以零的错误发生在程序运行时,所以这些错误被称为 运行时错误 或 执行时错误 。 致命的运行时错误 会导致程序在没有成功完成其工作的情况下立即终止。 非致命的运行时错误 允许程序运行完成,但通常会产生不正确的结果。
在“开始阅读本书之前”部分中安装的Anaconda Python发行版附带了Jupyter Notebook,这是一个基于浏览器的交互式编程环境,可以在其中编写和执行代码,也可以将代码与文本、图像和视频混合在一起。Jupyter Notebook是进行基于Python的数据分析研究和分享结果的首选编程环境,在科学界,特别是数据科学界得到了广泛的应用。此外,Jupyter Notebook正在支持越来越多的编程语言。
为方便起见,本书的所有源代码也在Jupyter Notebook中提供,使用时只需加载和执行即可。在本节中,我们将使用 JupyterLab 界面管理Notebook文件和Notebook使用的其他文件(如图像和视频等)。JupyterLab也可以方便地编写代码、执行代码、查看结果和调试代码等。
在Jupyter Notebook中编写代码与在IPython中编写代码没有太大差别,因为Jupyter Notebook默认使用IPython。在本节中,我们将创建一个Notebook,并将1.5.1节中的代码添加到其中执行。
在浏览器中打开JupyterLab
要打开JupyterLab,可在Terminal、shell或Anaconda命令提示符状态下进入 ch01 示例文件夹(如1.5.2节所述),键入以下命令,然后按Enter键(或Return键):
jupyter lab
该命令将会在计算机上运行Jupyter Notebook服务器,然后在默认的Web浏览器中打开JupyterLab,将
ch01
文件夹中的内容显示在JupyterLab界面左侧的File Browser(
)选项卡中,如下所示。
Jupyter Notebook服务器使我们可以在Web浏览器中加载和运行Jupyter Notebook。在JupyterLab Files选项卡中,通过双击相应的文件可以在窗口的右侧(当前显示Launcher选项卡)显示文件内容。每个打开的文件都会在窗口的这一部分作为单独的选项卡显示。如果不小心关闭了浏览器,可以在Web浏览器中输入地址http://localhost:8888/lab重新打开JupyterLab。
新建一个Jupyter Notebook
在Jupyter Notebook的Launcher选项卡中,单击Python 3按钮创建名为 Untitled.ipynb 的新Jupyter Notebook,然后就可以在其中输入和执行Python 3代码。文件扩展名 .ipynb 是IPython Notebook的缩写(Jupyter Notebook的原始名称)。
更改Notebook文件名
将文件名 Untitled.ipynb 改为 TestDrive.ipynb :
1. 右键单击 Untitled.ipynb 选项卡,然后选择Rename Notebook...。
2. 将名称改为 TestDrive.ipynb ,然后单击RENAME。
现在,JupyterLab的顶部如下图所示。
评估一个表达式
单元格 是Notebook的工作单元,可以在其中输入代码段。默认情况下,新Notebook只包含一个单元格,就是在 TestDrive.ipynb 的Notebook中看到的矩形框,不过也可以添加更多的单元格。在单元格的左侧,符号 []: 是Jupyter Notebook在执行单元格 后 显示单元格代码段编号的位置。单击单元格,然后键入表达式
45 + 27
按组合键Ctrl + Enter(或Control + Enter)执行当前单元格的代码。JupyterLab在IPython中执行代码,然后在单元格下方显示结果。
添加并执行另一个单元格
下面,我们来评估一个更复杂的表达式。首先,单击Notebook左上角工具栏中的+按钮,在当前单元格下方添加一个新单元格。
单击新单元格,然后键入表达式
5 * (12.7 - 4) / 2
按组合键Ctrl + Enter(或Control + Enter)执行单元格中的代码。
保存Notebook
如果对Notebook做了修改但尚未保存,Notebook选项卡中的
将变为
。要保存Notebook,选择JupyterLab的File菜单(不在浏览器窗口的顶部),然后选择Save Notebook。
各章示例提供的Notebook
为了方便起见,每章的示例都提供了可以立即执行的Notebook,但都没有显示输出。可以按照代码段逐个处理这些Notebook,并在执行每个代码段时查看输出的结果。
现在来看一下如何加载现有的Notebook并执行其单元格。首先,重置 TestDrive.ipynb Notebook,删除它的输出和代码段编号,这将使Notebook返回到初始状态。然后,从Kernel菜单中选择Restart Kernel and Clear All Outputs...,单击RESTART按钮。当需要重新执行Notebook的代码段时,也可以使用上面的命令。Notebook如下图所示。
选择File菜单中的Save Notebook,然后单击
TestDrive.ipynb
选项卡的
按钮关闭Notebook。
打开并执行一个已有的Notebook
当需要从给定章节的示例文件夹中启动JupyterLab时,可以从该文件夹或它的任何子文件夹中打开Notebook。一旦定位到了需要的Notebook后,可以双击将其打开。现在再次打开 TestDrive.ipynb Notebook。打开后,可以使用本节前面所述的方法单独执行每个单元格,也可以从Run菜单中选择Run All Cells立即执行Notebook中所有的单元格。Notebook将按顺序执行每一个单元格,并在每个单元格下方显示该单元格的输出。
关闭JupyterLab
使用完JupyterLab后,可以关闭其浏览器选项卡,然后在运行JupyterLab的终端、shell或Anaconda命令提示符中,按组合键Ctrl + C(或Control + C)两次。
JupyterLab提示
以下是使用JupyterLab进行工作的几个技巧:
关于JupyterLab的更多信息
JupyterLab还有许多实用的功能。要了解这些功能,可以阅读Jupyter团队对JupyterLab的介绍,链接为https://jupyterlab.readthedocs.io/en/stable/index.html。
单击GETTING STARTED下的Overview可以看到概述。此外,如需了解更多其他的功能,可以阅读USER GUIDE,其中有对JupyterLab界面、文件操作、文本编辑器和Notebook的介绍。