Python 利器 jupyter notebook
Jupyter Notebook 简介
一款优秀的开发环境,不仅能提高 coding 效率,还拥有强大的扩展能力,那么 Jupyter Notebook 就是不二之选。
基本介绍
Jupyter Notebook(前身是 IPython Notebook)是一个基于 Web 的交互式计算环境,用于创建 Jupyter Notebook 文档。可以用于许多编程语言,包括 Python、R、Julia 和 Haskell。Jupyter 的名字就很好地释义了这一发展过程,它是 Julia、Python 以及 R 语言的组合,字形相近于木星(Jupiter),而且现在支持的语言也远超这三种了。
Jupyter Notebook 内置在 Anaconda 软件中,只需安装 Anaconda 软件即可使用
安装 Anaconda
Anaconda是一个免费开源的 Python 和 R 语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),Anaconda 致力于简化包管理和部署。内置大部分机器学习所需要的包。anaconda 下载地址:https://www.anaconda.com/distribution/
修改 Notebook原始路径
对于为什么要修改初始路径,完全是因为习惯,作为一名合格的程序员,每份代码都需要给他们一个家,而不是随便在桌面上一放,建议你也养成习惯,最好对每份文件的路径知根知底。
打开 Anaconda Prompt
输入命令jupyter Notebook--generate-config会生成一个 py 文件,只需打开该文件修改部分代码即可设置初始文件路径
修改代码
在jupyter_notebook_config.py文件里面有几行代码,原始代码如下:
修改为:
划红颜色的那里就是你想要放置的路径,同时,建议你修改这个文件夹时使用notepad++记事本编辑软件,保存时另存为 编码 utf-8,防止出现不可描述的错误
修改完的结果如下,最开始是空的
Notebook基本使用
Notebook 的每一个单元叫做 Cell , Notebook的快捷键支持添加、删除、切换 Cell 块为代码格式(运行代码的单元) or Markdown (用作记录的单元)文本格式
快捷键
以下快捷键都是在 Cell 前面蓝色显示时操作有效,若显示绿色,可以用ESC进行切换
A在当前 Cell 上面添加新的 Cell
X剪切当前的 Cell
M将代码格式的 Cell 变成 Markdown 格式的 Cell
Y将 Markdown 格式的 Cell 切换为代码格式 Cell
shift+enter运行代码
更多快捷键可以查看 Notebook 里面的帮助文档
Notebook有许多漂亮的操作,比如代码联想、魔法关键词、支持单行代码独立运行等。
单块代码独立运行,这个对与搞计算机视觉的人来说简直是大福利,做计算机视觉的,往往需要从机器中读取大量的图片到内存中,所以运行时间会变得很慢,若在 Pycharm (一款开发软件),每次运行代码都需要进行一次图片读取操作,这就增加了调参成本,时间可贵,应该让时间花在有价值的地方
代码联想:
这是所有编辑器基本都会有的功能,快捷键是Tab键
多行编辑 ctrl+鼠标
关键参数联想: shift+tab
历史记录查询
只需输入%history即可查询历史输入的代码,这与 Matlab 的控制台很像
jupyter Notebook扩展
Notebook 另一个强大的功能就是拥有丰富的扩展,其中包含着许多高效的工具
安装扩展
在Anaconda Prompt输入代码进行安装,扩展安装代码:conda install -c conda-forge jupyter_contrib_nbextensions
autopep8
程序员都应该知道的 pep8 代码规范,写代码吗,不仅要自己看得舒服,更要让人看得舒服,毕竟代码不只是自己看的
具体规范见:https://www.python.org/dev/peps/pep-0008/
2to3 conveter
由于历史原因,Python2 和 Python3 代码存在部分差异,为了解决不同版本代码兼容问题,2to3 conveter 的出现就很友好
Variable Inspector
变量查看工具,一个非常棒的调试工具,有类似 Matlab 软件的功能,主要的优点就是需要的时候再调出来
Table of Contents
合格的程序员不仅需要会写代码,还需要会写技术文档、代码注释,Table of Contents 可以显示文档的大纲,完美支持 Markdown 格式,现在所有能用 Markdown 完成的任务我都不用 Office 软件
其他扩展
更多扩展请见Edit-> Configurable nbextensions
对于开发来说,扩展本质上还是为了开发效率,选择个人所需即可,工具千千万,效率第一条