IPython: 超越 Python

本文主要参考自 Python Data Science Handbook by Jake VanderPlas (O’Reilly).Copyright 2017 Jake VanderPlas,978-1-491-91205-8

一、IPython 简介

1、IPython

Python 有很多种开发环境,一个不错的选择是:IPython。

“IPython(interactive Python 的简称,即交互式 Python)由 Fernando Perez 作为一个增强的 Python 解释器于 2001 年启动,并由此发展为一个项目。用 Perez 的原话来说,该项目致力于提供“科学计算的全生命周期开发工具”。如果将 Python 看作数据科学任务的引擎,那么 IPython 就是一个交互式控制面板。”

除了作为 Python 的一个交互式接口,IPython 还提供了一些有用的 Python 语法附加功能,下面就将总结其中最有用的一些。

二、IPython 常用功能总结

帮助和文档:

  • 符号获取文档
  • 符号??获取源代码
  • Tab 补全探索模块
  • 反向搜索:ctrl r:对历史命令反向搜索

IPython 魔法命令:

IPython 提供了一些在普通 Python 语法基础之上的增强功能,这些功能被称作 IPython 魔法命令,都以%作为前缀。

主要分为两大类:

1️⃣ 行魔法:%前缀,作用于单行输入

2️⃣ 单元魔法:%%前缀,作用于多行输入。

常用命令如下:

  • %lsmagic 所有魔法函数
  • %run 执行外部代码
  • %timeit 计算代码执行时间
  • %%timeit 计算多行代码执行时间
  • %paste %cpaste 粘贴代码块 (解决了直接 粘贴 时格式会混乱的问题)
  • %history 一次性获取此前所有的历史输入 (解决了从ipython 复制 时总有···的烦恼)

%history 1 6-14 可以输出第1行和6到14行的命令。 后面加-f FILENAME可以直接将结果写入文件。

  • %xmode 控制异常
  • %debug 调试
  • %prun 分析整个脚本

输入输出:

使用ipython shell,你一定对左边这些in,out特别熟悉,但是,它们不是装饰品: IPython 实际上创建了叫做 In 和 Out 的 Python 变量,这些变量自动更新以反应命令历史。

  • In 是一个 list,而 Out 是一个 Dictionary
  • 可以根据数字调用:In[num] Out[num]
  • 变量 _(单下划线)获取前一个输出结果,两条下划线获得倒数第二个历史输出,三条下滑线获得倒数第三个历史输出
  • Out[num]的简写形式是 _[num]
  • 禁止一个命令输出:行尾处添加分号
  • 命令前添加!,可执行 shell 命令,还可以在 shell 中传入或传出值
  • 从Shell向ipython传值:直接写个赋值表达式就可以,等号的右边是Shell命令:contents = !dir
  • 从ipython向Shell传值:使用{变量名}的形式赋值:echo {message}

三、IPython 参考资料

四、衍生项目:Jupyter Notebook

另外,IPython 被紧密地连接在 Jupyter 项目(http://jupyter.org)中。该项目提供一个基于浏览器的 Notebook,它可以开发、协作、分享甚至发布数据科学结果。IPython Notebook 其实只是通用 Jupyter Notebook 结构的特例,而 Jupyter Notebook 不仅支持 Python,还包括用于 Julia、R 和其他编程语言的 Notebook。”

Jupyter 为 Python 提供了方便的交互式数据科学和科学计算平台。Jupyter 物品是一个非营利组织,旨在“为数十种编程语言的交互式计算开发开源软件,开放标准和服务”。

jupyter lab

JupyterLab 1.0: Jupyter’s Next-Generation Notebook Interface

JupyterLab is a web-based interactive development environment for Jupyter notebooks, code, and data. JupyterLab is flexible: configure and arrange the user interface to support a wide range of workflows in data science, scientific computing, and machine learning. JupyterLab is extensible and modular: write plugins that add new components and integrate with existing ones.

JupyterLab 是 Jupyter 物品的下一代用户界面。它在一个灵活且强大的用户界面中提供了经典的 Jupyter Notebook(笔记本、终端、文本编辑器、文件浏览器、丰富输出等)所有熟悉的构建模块。第一个稳定版本于 2018 年 2 月 20 日发布。

使用 JupyterLab 你可以方便的进行交互式的数据计算和科学计算,并且 lab 提供了笔记本、终端、文本编辑器、文件浏览器、丰富输出等,非常好用。

  1. web https://jupyter.org
  2. docu Installing the Jupyter Software
  3. en_doc 安装文档
  4. en_doc Getting started with conda
  5. en_doc Conda Cheat sheet
  6. cn_doc [译] 给初学者的 Jupyter Notebook 教程
  7. git notebook
  8. wiki Jupyter

最后更新: 2020-01-15

评论