2.2. 相关技术术语与概念

这一部分将介绍如何运行和保存 notebooks,熟悉 Jupyter notebook 的结构和交互界面。 这里将通过一个例子来熟悉一些核心的用法,更好的了解 Jupyter notebook 的使用。

在深入探讨了重启内核的重要性和方法后, 让我们继续探索Jupyter Notebook中其他一些能够提升工作效率和体验的技巧。

2.2.1. 运行 Jupyter

在 Windows,可以通过添加到开始菜单的快捷方式运行 Jupyter , 当然也可以通过在命令行输入命令 jupyter notebook 开始运行, 然后会在默认浏览器中打开一个新的窗口,当然上述还不是一个 notebook, 它是 Notebook 的管理界面,用于管理当前文件夹的所有 Notebooks。

注意,这里仅仅展示 Jupyter 运行时候的所在文件夹内的文件和文件夹, 也就是在命令行运行 jupyter notebook 时所在的文件夹,当然这个也可以改变, 运行命令的时候可以指定文件夹位置,即输入:

jupyter notebook filepath

此外,这里在浏览器上的 URL 地址是类似 http://localhost:8888/tree,其中 localhost 是表示本地地址,然后 8888 是端口。

接下来就是创建一个新的 notebook,在管理界面的右上角位置, 点击 New 菜单,这里就可以选择 Python 3 (或者其他的版本), 然后就可以创建成功,并且是在新的窗口打开这个 notebook,在默认命名就是 Untitled.ipynb 。 如 图 2.13 所示。

创建新的 notebook

图 2.13 创建新的 notebook

2.2.2. ipynb 文件

每个 ipynb 文件都是通过 JSON 格式来描述 notebook 的内容,包括每个单元及其内容, 都是通过 metadata 的格式展示。这里可以在打开 ipynb 文件后, 菜单中选择 Edit->Edit Notebook Metadata ,进行编辑。

2.2.3. notebook 界面

现在开始介绍下 notebook 的界面信息, notebook的编辑界面可选择打开方式,“Open in notebook“ 形式 和“Open in NbClassic“方式。 以“Open in NbClassic“方式打开,如 图 2.14 所示。

两个术语

图 2.14 两个术语

这里有两个术语需要知道--cells 和 kernels ,两个都是非常重要的术语:

  • kernel :表示计算引擎,用于执行 notebook 中的代码块

  • cell :单元块,用于展示文本或者是代码。

2.2.4. 单元(Cells)

首先介绍的是 Cells ,一个 Cell 就是上图中绿色框部分,它是 notebook 的主要部分, 通常有两种主要的 cell 类似:

  • code cell :包括需要执行的代码,以及其运行结果

  • Markdown cell :包含的是 Markdown 格式的文本并且其执行结果

下图展示了一个简单的例子,第一行 Jupyter 入门教程 这个就是一个 Markdown cell , 这里展示的是执行这个 cell 的结果,如果需要执行一个 cell ,可以点击 Run 按钮, 或者快捷键 Ctrl + Enter 即可,然后下方两个都是 code cell ,第一个是导入第三方库, 第二个则是打印一段话以及其运行结果。 如 图 2.15 所示。

Jupyter 入门教程

图 2.15 Jupyter 入门教程

可以注意到 code cell 的左侧会有一个标签 In [1] ,这里的数字表示该代码块运行的次序, 即在该 notebook 中,如果没有执行,显示的是 In [ ] ,如果是该 notebook 第一个运行的代码块, 则是 In [1] ,如果再次运行,则显示 In [2],依次类推,同个代码块多次执行,这个数字也是会改变的。 而 In 是 Input 的缩写。如果代码块运行时间有点久,它会显示 In [*] ,表示当前代码块正在运行中。

对于 notebook,还可以直接展示变量的数值,或者是函数的返回值,不需要调用 print 函数, 当然它只会打印当前单元的最后一行的内容。 如 图 2.16 所示。

展示变量数值

图 2.16 展示变量数值

还需要注意的一件事情就是,对于一个单元,如果正在编辑,其边界框显示的是绿色, 而运行时候则显示蓝色。这里展示的就是两种模式,即绿色表示编辑模式,蓝色表示命令模式。

2.2.5. 快捷键

notebook 有很多快捷键,可以通过菜单中的 Help->Keyboard Shortcuts 查看, 也可以直接用快捷键 Ctrl+Shift+P 查看。下面简单介绍一些快捷键:

  • 编辑模式和命令模式可以通过 Esc 和 Enter 进行转换,一般是按 Esc 进入命令模式, Enter 进入编辑模式

在命令模式下:

  • 在 cell 之间上下浏览采用上下箭头,或者 Up 和 Down 键

  • A 表示在当前 cell 上方插入一个新的 cell ,而 B 则是下方插入新的cell

  • M 表示变为 Markdown cell ,而 Y 是表示变为 code cell

  • 连续按两次 D 是删除当前 cell

  • Z 是撤销操作

  • Shift 加上 Up 或者 Down 可以一次选择多个 cells ,接着采用 Shift + M 可以合并多个 cells

2.2.6. Markdown语法支持

Jupyter Notebook不仅支持代码编写,还支持Markdown和HTML格式的文本。 这使得你可以在Notebook中插入格式化的文本、图片、链接和表格等,从而制作出既美观又内容丰富的文档。

Markdown 是一个轻量级的易于学习使用的标记语言,主要用于格式化文本文字。它的语法类似 HTML 语言, 是一个非常有帮助的语言,可以用于添加注释说明或者添加图片。

  • Markdown:你可以在一个新的代码单元中,选择“Markdown”模式(或使用快捷键M), 然后输入Markdown格式的文本。 Notebook会自动将其渲染为格式化后的文本。

  • HTML:你也可以直接在Markdown单元中插入HTML代码,Notebook会将其渲染为相应的HTML元素。

可以尝试在 Jupyter notebook 中输入下面的文字,记住是在 Markdown cell中:

# This is a level 1 heading
## This is a level 2 heading
This is some plain text that forms a paragraph.
Add emphasis via **bold** and __bold__, or *italic* and _italic_.
Paragraphs must be separated by an empty line.
* Sometimes we want to include lists.
* Which can be indented.
1. Lists can also be numbered.
2. For ordered lists.
[It is possible to include hyperlinks](https://www.example.com)
Inline code uses single backticks: `foo()`, and code blocks use triple backticks:
```
bar()
```
Or can be indented by 4 spaces:
foo()
And finally, adding images is easy: ![Alt text](https://www.example.com/image.jpg)

图 2.17 所示。

得到的结果

图 2.17 得到的结果

如果想添加图片,有三种做法:

  • 使用网络上的图片,添加其网络链接 URL,比如上述例子就是这种做法, URL 是 https://www.example.com/image.jpg

  • 采用一个本地 URL,那么图片就只能使用在该 notebook 中,比如在同一个 git 仓库中

  • 菜单栏选择 “Edit->Insert Image",这种做法会将图片转换为字符串形式并存储在 .ipynb 文件中, 这种做法会增加 ipynb 文件的大小

2.2.7. 魔法命令与魔法函数

为了方便使用, JupyterLab内置了一些非通用的,特殊的指令, 分为魔法命令与魔法函数。

魔法命令

Jupyter Notebook支持一种特殊的命令,称为“魔法命令”(Magic Commands), 它们以 % (行魔法命令)或 %% (单元魔法命令)开头。这些命令提供了许多有用的功能, 比如性能分析、时间测量、环境变量管理等。

  • %timeit :用于测量单个语句的执行时间。

  • %%writefile :将单元格的内容写入到文件中。

  • %matplotlib inline :在Jupyter Notebook中直接显示Matplotlib生成的图表。

魔法函数

使用魔法函数可以简单的实现一些单纯python要很麻烦才能实现的功能。

  • % :行魔法函数,只对本行代码生效。

  • %% :Cell魔法函数,在整个Cell中生效,必须放于Cell首行。

  • %lsmagic :列出所有的魔法函数

  • %magic :查看各个魔法函数的说明

  • ? :后面加上魔法函数名称,可以查看该函数的说明

一些常用魔法函数的示例:

魔法函数

作用

%%writefile

调用外部python脚本

%run

调用外部python脚本

%timeit

测试单行语句的执行时间

%%timeit

测试整个单元中代码的执行时间

%matplotlib inline

显示 matplotlib 包生成的图形

%%writefile

写入文件

%pdb

调试程序

%pwd

查看当前工作目录

%ls

查看目录文件列表

%reset

清除全部变量

%who

查看所有全局变量的名称,若给定类型参数,只返回该类型的变量列表

%whos

显示所有的全局变量名称、类型、值/信息

%xmode Plain

设置为当异常发生时只展示简单的异常信息

%xmode Verbose

设置为当异常发生时展示详细的异常信息

%debug

bug调试,输入quit退出调试

%env

列出全部环境变量

注意这些命令是在Python kernel中适用的,其他 kernel 不一定适用。