introduction_jupyter_ipython
Jupyter 和 IPython 简介
Section titled “Jupyter 和 IPython 简介”Project Jupyter 提供了一个强大的生态系统,支持跨多种编程语言的交互式计算。其核心功能是让用户创建和共享被称为“笔记本”(notebooks)的文档,这些文档结合了实时代码、公式、可视化内容和叙述性文本。
什么是 Project Jupyter?
Section titled “什么是 Project Jupyter?”Project Jupyter 于 2014 年左右从 IPython (Interactive Python) 发展而来。IPython 最初是一个增强的交互式 Python shell,但该项目后来发展壮大,包含了与语言无关的组件,例如笔记本格式和 Web 应用程序。Jupyter 现在通过一套“内核”(kernels)系统,支持数十种语言(例如 Python, R, Julia, Scala)的交互式计算。
Jupyter 伞形项目下的关键组件包括:
- Jupyter Notebook: 最初基于 Web 的交互式计算环境,你可以在其中将代码执行、文本、数学公式、图表和富媒体组合到一个文档中。
- JupyterLab: Project Jupyter 的下一代可扩展的基于 Web 的用户界面。它提供了一个更加集成和灵活的环境,在一个模块化的界面中结合了笔记本、代码编辑器、终端和自定义组件。
- Jupyter Kernels: 由 Jupyter 服务器启动的独立进程,用于运行特定语言的代码并将结果返回给前端(例如 JupyterLab 或 Notebook)。IPython 是 Python 的默认内核。
- Jupyter 笔记本格式 (.ipynb): 一种基于 JSON 的文档格式,用于存储笔记本内容,包括代码单元格(code cells)、Markdown 单元格(markdown cells)、输出和元数据(metadata)。
- QtConsole: 一个桌面 GUI 控制台应用程序,提供了类似于 IPython 终端的功能,但以图形窗口形式呈现。
- nbviewer: 一个用于渲染在线托管的 Jupyter 笔记本(例如在 GitHub 上)的静态 HTML 版本的服务。
什么是 IPython?
Section titled “什么是 IPython?”IPython (Interactive Python) 是提供强大交互式 Python shell 的组件,更重要的是,它提供了 Jupyter 的 Python 内核。当你在 JupyterLab 或 Jupyter Notebook 中运行 Python 代码时,你通常是在与一个在后台运行的 IPython 内核进行交互。
即使没有 Jupyter,IPython 也可以作为独立的增强型 REPL(Read-Evaluate-Print Loop,读取-求值-打印循环)在你的终端中使用。
IPython(以及 Jupyter 的 Python 内核)的关键特性
Section titled “IPython(以及 Jupyter 的 Python 内核)的关键特性”IPython 在标准 Python 解释器之上提供了显著的改进:
- 全面的交互式 shell: 强大的功能,例如 Tab 键补全、命令历史记录和语法高亮。
- 对象自省 (Object Introspection): 使用
?和??可以轻松获取有关对象的信息。 - 魔术命令 (Magic Commands): 以
%或%%为前缀的特殊命令,用于执行计时代码、运行 shell 命令、控制绘图等任务。 - 富文本输出 (Rich Output): 能够在 JupyterLab 等前端直接显示图表、图像、HTML、LaTeX 和其他富媒体。
- 调试工具 (Debugging Tools): 与 Python 调试器 (
pdb/ipdb) 集成。 - 自定义: 可通过启动文件和配置文件进行配置。
为何使用 Jupyter/IPython?
Section titled “为何使用 Jupyter/IPython?”Jupyter/IPython 生态系统在数据科学、科学计算、机器学习和教育领域特别受欢迎,因为它支持:
- 可复现研究 (Reproducible Research): 笔记本捕获了完整的分析工作流程,包括代码、叙述和结果。
- 探索性数据分析 (Exploratory Data Analysis): 在一个地方快速迭代代码、可视化数据并记录发现。
- 共享与协作 (Sharing and Collaboration): 笔记本相对易于共享,可以在 GitHub 或 nbviewer 等平台上静态渲染。
- 教学与学习 (Teaching and Learning): 非常适合创建交互式教程和逐步演示概念。
现代 IPython 版本通常需要 Python 3.6 或更高版本。虽然旧版本支持 Python 2.7,但它已不再维护。本教程重点介绍在 JupyterLab/Notebook 环境中使用现代 Python 版本来利用 IPython 的功能。