2.2. 相关技术术语与概念¶
这一部分将介绍如何运行和保存 notebooks,熟悉 Jupyter notebook 的结构和交互界面。 在深入探讨了重启内核的重要性和方法后, 让我们继续探索Jupyter Notebook中其他一些能够提升工作效率和体验的技巧。
2.2.1. ipynb 文件¶
每个 ipynb 文件都是通过 JSON 格式来描述 notebook 的内容,包括每个单元及其内容, 都是通过 metadata 的格式展示。打开 ipynb 文件后, 菜单中选择 Edit->Edit Notebook Metadata ,进行编辑。
2.2.2. Notebook 界面¶
现在开始介绍 notebook 的界面信息, notebook的编辑界面可选择2种打开方式:“Open in notebook“ 和“Open in NbClassic“。 例如以“Open in NbClassic“的方式打开,如 图 2.13 所示。
这里有两个术语需要知道--cells 和 kernels ,两个都是非常重要的术语:
kernel :表示计算引擎,用于执行 notebook 中的代码块
cell :单元块,用于展示文本或者是代码。
2.2.3. 单元(Cells)¶
首先介绍的是 Cells ,它是 notebook 的主要部分, 通常有两种主要的 cell 形式:
Code cell :包括需要执行的代码,以及其运行结果
Markdown cell :包含的是 Markdown 格式的文本并且其执行结果
下图展示了一个简单的例子,第一行是 Jupyter 入门教程 这是一个 Markdown cell , 这里展示的是执行 cell 的结果,如果需要执行一个 cell ,可以点击 Run 按钮, 或者快捷键 Ctrl + Enter 即可。下方两个都是 Code cell ,第一个是导入第三方库, 第二个则是打印一段话以及其运行结果。 如 图 2.14 所示。
可以注意到 Code cell 的左侧会有一个标签 In [1]
,这里的数字表示该代码块运行的次序,
即在该 Notebook 中,如果没有执行,显示的是 In [ ]
,如果是该 Notebook 第一个运行的代码块,
则是 In [1]
,如果再次运行,则显示 In [2]
,依次类推,同个代码块多次执行,这个数字也是会改变的。
而 In
是 Input
的缩写。如果代码块运行时间有点久,它会显示 In [*]
,表示当前代码块正在运行中。
对于 Notebook,还可以直接展示变量的数值,或者是函数的返回值,不需要调用 print
函数,
当然它只会打印当前单元的最后一行的内容。
如 图 2.15 所示。
还需要注意的是,对于一个单元,如果正在编辑,其边界框显示的是绿色,而运行时候则显示蓝色。 这里展示的就是两种模式,即绿色表示编辑模式,蓝色表示命令模式。
2.2.4. 快捷键¶
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.5. 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.16 所示。
如果想添加图片,有三种做法:
使用网络上的图片,添加其网络链接 URL,比如上述例子就是这种做法, URL 是 https://www.example.com/image.jpg
采用一个本地 URL,那么图片就只能使用在该 notebook 中,比如在同一个 git 仓库中
菜单栏选择 “Edit->Insert Image",这种做法会将图片转换为字符串形式并存储在
.ipynb
文件中, 这种做法会增加 ipynb 文件的大小
2.2.6. 魔法命令与魔法函数¶
为了方便使用, JupyterLab内置了一些非通用的,特殊的指令, 分为魔法命令与魔法函数。
魔法命令¶
Jupyter Notebook支持一种特殊的命令,称为“魔法命令”(Magic Commands),
它们以 %
(行魔法命令)或 %%
(单元魔法命令)开头。这些命令提供了许多有用的功能,
比如性能分析、时间测量、环境变量管理等。
%timeit
:用于测量单个语句的执行时间。%%writefile
:将单元格的内容写入到文件中。%matplotlib inline
:在Jupyter Notebook中直接显示Matplotlib生成的图表。
魔法函数¶
单纯python要很麻烦才能实现的功能,魔法函数则可以简单的实现。
%
:行魔法函数,只对本行代码生效。%%
:Cell魔法函数,在整个Cell中生效,必须放于Cell首行。%lsmagic
:列出所有的魔法函数%magic
:查看各个魔法函数的说明?
:后面加上魔法函数名称,可以查看该函数的说明
一些常用魔法函数的示例:
魔法函数 |
作用 |
---|---|
|
调用外部python脚本 |
|
调用外部python脚本 |
|
测试单行语句的执行时间 |
|
测试整个单元中代码的执行时间 |
|
显示 matplotlib 包生成的图形 |
|
写入文件 |
|
调试程序 |
|
查看当前工作目录 |
|
查看目录文件列表 |
|
清除全部变量 |
|
查看所有全局变量的名称,若给定类型参数,只返回该类型的变量列表 |
|
显示所有的全局变量名称、类型、值/信息 |
|
设置为当异常发生时只展示简单的异常信息 |
|
设置为当异常发生时展示详细的异常信息 |
|
bug调试,输入quit退出调试 |
|
列出全部环境变量 |
注意这些命令是在Python kernel中适用的,其他 kernel 不一定适用。