Marimo: 颠覆传统Jupyter笔记本的下一代Python编程环境

Marimo 是一种创新的编程环境,打破了传统笔记本的界限。凭借其反应式交互式可执行可共享的特性,Marimo 为开发者提供了前所未有的编程体验。它确保您的代码、输出和程序状态始终保持一致,有效解决了传统笔记本(如 Jupyter)所面临的诸多挑战。

图片

反应式编程的优势

Marimo 的核心特性在于其反应式编程机制。这意味着当您修改代码或与用户界面元素交互时,Marimo 会智能地识别依赖关系,并只执行必要的代码块。这一机制显著减少了传统笔记本中手动执行代码的繁琐性,同时确保代码、输出与程序状态的一致性。

图片

Marimo 的反应式编程带来的主要优势包括:

  • 自动执行依赖代码: 修改一个代码块后,Marimo 会自动运行所有依赖于它的代码块,节省时间并降低错误率,而在 Jupyter 中,您需要手动执行所有相关代码。
  • 消除隐含状态: 删除代码块时,Marimo 会自动清理与该块相关的变量,确保程序状态的清晰度,避免潜在错误。
  • 惰性执行配置: Marimo 允许将运行时设置为惰性模式,仅标记需要重新执行的代码块,以避免不必要的计算,并确保程序状态的稳定性。
  • 图片

交互式用户体验

Marimo 允许您将用户界面元素(如滑块、下拉菜单、数据框转换器等)与 Python 代码直接绑定,无需编写任何回调函数。当用户与这些 UI 元素交互时,Marimo 会自动重新执行关联的代码块,并实时更新输出结果。

图片

这种交互式的编程体验为用户带来了以下好处:

  • 直观交互方式: 用户能够通过直观的 UI 元素控制代码执行,使程序逻辑更易于理解。
  • 可视化数据探索: 动态调整参数,通过 UI 元素实时观察数据变化,便于进行数据探索与分析。
  • 增强用户参与感: 用户可以更直接地参与到代码执行过程中,提升整体体验。
  • 图片

可执行和可共享的笔记本特性

Marimo 将笔记本文件存储为纯 Python 代码,使其既可以作为脚本执行,也能够被部署为交互式 Web 应用。您可以在本地进行开发和测试,然后将笔记本分享给他人,让他们随时随地体验您的交互式代码。

Marimo 的可执行性和可共享性带来的关键优势包括:

  • 脚本执行: 直接使用 Python 运行 Marimo 笔记本,便于自动化任务和批量处理。
  • Web 应用部署: 您可以将 Marimo 笔记本发布为 Web 应用,让用户在线访问和互动。
  • 代码可移植性: Marimo 笔记本易于移植到不同平台,确保代码的复用性。
  • 数据驱动: Marimo 内置 SQL 支持,轻松处理各种数据源,如数据框、数据库、CSV 文件、Google 表格等。
  • 与 Git 兼容: Marimo 笔记本以 .py 文件形式存储,便于使用 Git 进行版本控制和协作。
  • 丰富的工具与功能: Marimo 集成了多个强大工具,如 GitHub Copilot、Ruff 代码格式化、HTML 导出、代码自动补全、VS Code 扩展和交互式数据框查看器等。

快速开始指南

安装 Marimo:

pip install marimo  # 或使用 conda 安装

创建笔记本:

marimo edit

运行应用:

marimo run your_notebook.py

作为脚本执行:

python your_notebook.py

从 Jupyter Notebook 转换:

marimo convert your_notebook.ipynb > your_notebook.py

探索教程:

marimo tutorial --help

总结

Marimo 是一款功能强大且易于使用的反应式编程环境,打破了传统笔记本的局限,为开发者提供了全新的编程体验。无论您是数据科学家、机器学习工程师还是软件开发人员,Marimo 都能帮助您更高效和便捷地进行代码创作、数据分析和应用开发。

项目地址:GitHub - Marimo Team