Marimo 是一个颠覆传统笔记本的全新编程环境,它以其反应式 、交互式 、可执行 和可共享等特性,为开发者们带来前所未有的编程体验。Marimo 确保您的笔记本代码、输出和程序状态始终保持一致。它解决了传统笔记本(如 Jupyter)的许多问题。

反应式编程环境
Marimo的核心在于反应式编程,这意味着当你修改代码或与UI元素交互时,Marimo 会自动识别依赖关系,并只执行必要的代码块。这种智能机制可以有效避免传统笔记本中手动执行代码的繁琐,并确保代码、输出和程序状态始终保持一致。

以下列举了Marimo反应式编程带来的优势:
-
• 自动运行依赖代码: 更改一个代码块,Marimo 会自动执行依赖它的所有代码块,无需手动执行,节省时间,减少错误。而Jupyter需要手动执行所有依赖代码块。
-
• 消除隐藏状态: 删除代码块时,Marimo 会自动清除该代码块所关联的变量,确保程序状态清晰,避免潜在的错误。
-
• 惰性执行配置: Marimo 支持将 runtime 配置为惰性模式,只标记需要重新执行的代码块,不会自动执行昂贵的代码块,从而保证程序状态的同时避免不必要的计算。

交互式用户界面
Marimo 允许你将 UI 元素(如滑块、下拉菜单、数据帧转换器等)绑定到 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:

创建笔记本:

运行应用:

作为脚本执行:

从 Jupyter Notebook 转换:

探索教程:

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