前言
为了更加方便快捷的使用Jupyter Notebook
,本文将会介绍一些相关的使用技巧。
相关技巧
使用问号查看对象的相关信息
对于代码中的所有对象,包括:变量、函数、方法、模块、等等,可以在某个对象的前面或后面添加一个?
,以查看该对象的相关信息。
def aaa():
print('Hello World')
代码语言:javascript复制?aaa
效果如下图:
对于我们自定义
的函数,可以在函数名的前面或后面添加两个?
,这样,在显示出来的相关信息中会包含函数的源代码
。
def aaa():
print('Hello World')
代码语言:javascript复制aaa??
效果如下图:
使用叹号执行Shell命令
在使用Jupyter Notebook编写代码时,只需要在Shell命令前添加一个!
,就可以在notebook中执行Shell命令
,完全不用来回切换。
举例:查看当前本机网络状态:
代码语言:javascript复制!ipconfig
效果如下图:
除了执行Shell命令之外,还可以将执行结果赋值给Python变量:
代码语言:javascript复制a = !ipconfig
print(a)
print(type(a))
关于输出
在notebook中运行单元格中的代码时,在默认情况下,单元格中最后一行的值会被自动输出:
代码语言:javascript复制def aaa():
print('Hello World')
18
输出效果如下图:
如果不想自动输出单元格中最后一行的值,可以在最后一行的行尾添加一个分号;
def aaa():
print('Hello World')
18;
输出效果如下图:
在当前notebook中,如果希望单元格中每一行的值都被自动输出,可添加以下代码:
代码语言:javascript复制from IPython.core.interactiveshell import InteractiveShell
InteractiveShell.ast_node_interactivity = 'all'
输出效果如下图:
如果希望在所有的notebook中都自动输出单元格中每一行的值,可以修改或创建ipython_config.py
配置文件。
文件路径:
- Windows:C:Users用户名.ipython/profile_default/ipython_config.py
- MacOS:/Users/用户名/.ipython/profile_default/ipython_config.py
- Linux:/home/用户名/.ipython/profile_default/ipython_config.py
打开配置文件添加以下代码:
代码语言:javascript复制c = get_config()
c.InteractiveShell.ast_node_interactivity = "all"
跨单元格编码
需要注意的是,在notebook中:
- 前面运行的单元格会将相关变量保存到内存中,从而后面运行的单元格可以继续使用这些变量
- 关闭notebook的页面后,内存中保存的变量不会丢失
- 如果当前notebook
Shutdown
或Restart
了,那么内存中保存的所有变量都会丢失
建议:按照单元格从上到下的顺序编写代码并依次运行代码,否则,不仅可读性不好,而且容易出错。
支持Markdown语法
Jupyter Notebook支持Markdown语法,在工具栏的下拉选项中将单元格调整为Markdown
即可。
关于Markdown的相关介绍可以查看文章《Markdown语法》
这里提醒一点,在插入图片时,可以直接点击菜单栏中的Edit
,在打开的选项中点击Insert Image
,这种操作方式优点是:将图片和notebook绑定在一起,在对notebook进行移动或其他操作时不用单独对图片进行处理;缺点是:notebook文件会变大,不能控制图片尺寸。
快捷键
在notebook中有两种单元格,分别为:
- Code单元格:用来编写代码
- Markdown单元格:用来将纯文本格式化为富文本
每种单元格都有两种模式,分别为:
- 编辑模式:按
Esc
键或者点击单元格的外部
,都可以切换到命令模式 - 命令模式:按
Enter
键或者点击单元格的内部
,都可以切换到编辑模式(对于运行之后的Markdown单元格,要双击单元格的内部
,才能切换到编辑模式)
编辑模式下的快捷键:
快捷键 | 功能 |
---|---|
Tab | 增加缩进(4个空格)、代码自动补全 |
Shift Tab | 减少缩进(4个空格)、查看对象的相关信息 |
Ctrl A(Command A) | 全选 |
Ctrl Z(Command Z) | 撤销 |
Ctrl Y(Shift Command Z) | 恢复 |
Ctrl /(Command /) | 注释、取消注释 |
Ctrl D(Command D) | 删除行 |
Ctrl Home(Command Home) | 跳转到单元格的开始处 |
Ctrl End(Command End) | 跳转到单元格的结尾处 |
Esc | 退出编辑模式并进入命令模式 |
Ctrl S(Command S) | 保存并更新记录点文件 |
↑ | 向上移动光标 |
↓ | 向下移动光标 |
Ctrl Enter | 运行当前单元格 |
Shift Enter | 运行当前单元格,并选中下方的单元格(如果下方没有单元格,则在下方自动插入一个单元格并选中) |
Alt Enter(Option Enter) | 运行当前单元格,在下方自动插入一个单元格并选中 |
命令模式下的快捷键:
快捷键 | 功能 |
---|---|
↑ | 选中上方的单元格 |
↓ | 选中下方的单元格 |
Shift ↑ | 扩展选中上方的单元格 |
Shift ↓ | 扩展选中下方的单元格 |
A | 在上方插入一个单元格 |
B | 在下方插入一个单元格 |
M | 将Code单元格转换为Markdown单元格 |
Y | 将Markdown单元格转换为Code单元格 |
S | 保存并更新记录点文件 |
连按两次D | 删除选中的单元格 |
Z | 撤销对单元格的删除 |
F | 查找并替换 |
X | 剪切选中的单元格 |
C | 拷贝选中的单元格 |
V | 在下方粘贴单元格 |
Shift V | 在上方粘贴单元格 |
Enter | 退出命令模式并进入编辑模式 |
Ctrl Enter | 运行选中的单元格 |
Shift Enter | 运行选中的单元格,并选中下方的单元格(如果下方没有单元格,则在下方自动插入一个单元格并选中) |
Alt Enter(Option Enter) | 运行选中的单元格,在下方自动插入一个单元格并选中 |
扩展插件集nbextensions
扩展插件集nbextensions
包含了一系列非常好用的插件,从而可以大大地扩展Jupyter Notebook的功能,并且增强Jupyter Notebook的交互式体验。
安装过程:
1.安装第三方库jupyter_nbextensions_configurator
它是jupyter notebook扩展插件集的配置器。
pip安装命令:
代码语言:javascript复制pip install jupyter_nbextensions_configurator
conda安装命令:
代码语言:javascript复制conda install jupyter_nbextensions_configurator
2.启动配置器
启动命令:
代码语言:javascript复制jupyter nbextensions_configurator enable --user
此时启动jupyter notebook,会发现菜单多出来一个名为Nbextensions
的选项卡。
3.安装第三方库jupyter_contrib_nbextensions
它就是jupyter notebook的扩展插件集。
pip安装命令:
代码语言:javascript复制pip install jupyter_contrib_nbextensions
conda安装命令:
代码语言:javascript复制conda install jupyter_contrib_nbextensions
3.安装相关的文件
以便可以通过第2步启用的配置器,对第3步安装的扩展插件集进行访问。
安装命令:
代码语言:javascript复制jupyter contrib nbextension install --user
此时就会看到,在Nbextensions
这个选项卡的配置器中就显示出了很多插件,点一下页面左上方这个小方框,把对勾勾掉,所有的插件都变为可用的了,可以按需使用。
nbextensions中的常用插件:
插件名 | 功能 | 备注 |
---|---|---|
Hinterland(代码提示) | 每输入一个字母,都会弹出代码自动补全的菜单 | |
Codefolding(代码折叠) | 对Code单元格中的代码添加折叠的功能 | |
Collapsible Headings(可折叠的标题) | 根据标题对单元格进行折叠 | |
Table of Contents(目录表) | 将所有的标题显示在一个浮动窗口和一个导航菜单中 | |
Autopep8(自动pep8) | 按照pep8的规范对Code单元格中的Python代码进行格式化 | 需要安装autopep8这个第三方库。 pip安装命令:pip install autopep8 conda安装命令:conda install autopep8 |
Code prettify(代码美化) | 格式化Jupyter Notebook支持的所有编程语言的代码 | 在格式化某种编程语言的代码之前,首先需要安装相应的第三方库或包,要想格式化Python代码,就需要安装yapf这个Google开源的第三方库。 pip安装命令:pip install yapf conda安装命令:conda install yapf |
Code Font Size(代码字体大小) | 在工具栏,提供增大以及减小代码字体的按钮 | |
ExecuteTime(执行时间) | 在执行的过程中,会显示在什么时刻开始执行;执行结束后,会显示执行时长和在什么时刻结束执行 | |
AutoSaveTime(自动保存时间) | 设置notebook自动保存的时间间隔 | notebook被自动保存时,相应的记录点文件不会发生任何变化 |
highlighter(高亮显示工具) | 对Markdown单元格中的文本进行高亮显示 | |
Live Markdown Preview(实时Markdown预览) | 在Markdown单元格的下方实时预览运行结果 | |
Tree Filter(文件树过滤器) | 在Files选项卡中,只需要输入关键字,就可以对下面的文件和文件夹进行过滤 |
导出为pdf文件
这里介绍两种导出为pdf文件
的方法:
**方法一:**使用菜单导出。
点击File
选项卡,选择Download as
,选择Markdown(.md)
,将文件首先导出为.md
格式,再使用Typora
打开,并导出为pdf文件
。
**方法二:**使用命令导出(需要Pandoc
和XeLatex
支持)。
首先安装Pandoc
:
pip install pandoc
安装MikTex
:
这里抛出官网链接:https://miktex.org/download
安装过程很简单,一路Next,这里不再赘述。(安装之后在cmd测试一下xelatex
能否使用)
点击File
选项卡,选择Download as
,选择LaTeX(.tex),将文件首先导出为.tex
格式,为了使导出文件正常显示中文,打开该文件(本人用的是Sublime Text 3
),找到代码documentclass[11pt]{article}
,在其后添加如下代码:
usepackage{fontspec, xunicode, xltxtra}
setmainfont{Microsoft YaHei}
usepackage{ctex}
进入.tex文件
所在目录,打开命令提示符窗口,输入:
xelatex yourNotebookName.tex
如果是首次运行,则会安装大量的依赖文件,选择Install
即可(过程比较漫长)。
(可以取消勾选弹框,使其自动安装所有需要的依赖)
运行结束后,就会发现在该目录下已经生成了pdf文件
。
第二种方法生成的pdf文件,要比方法一展示效果更加好。
结语
还有很多实用性技巧,暂且现在用不上,就没有总结,以后有时间继续补充。