Marimo:下一代Python编程环境,颠覆传统Jupyter笔记本,自动化执行所有依赖代码块,告别繁琐手动操作

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 都可以帮助你更高效、更便捷地进行代码创作、数据分析和应用开发。

项目地址:https://github.com/marimo-team/marimo

相关推荐
fsnine6 分钟前
Python图形化界面——pyqt5教程
开发语言·python·qt
扶尔魔ocy1 小时前
python程序打包成win的exe应用(以OCR应用为例)
python·ocr·中文识别
Psycho_MrZhang1 小时前
自定义层和读写文件
pytorch·python·深度学习
似水流年 光阴已逝1 小时前
从Excel姓名匹配案例学Python:由点及面的系统化学习指南
开发语言·python·excel
这里有鱼汤2 小时前
量化的困局:当所有人都在跑同一个因子时,我们还能赚谁的钱?
后端·python
新子y2 小时前
【小白笔记】strip的含义
笔记·python
Q_Q19632884752 小时前
python+vue的在线租房 房屋租赁系统
开发语言·vue.js·spring boot·python·django·flask·node.js
空影星2 小时前
GridPlayer,一个好用的多视频同步播放器
python·flask·电脑·音视频
草莓熊Lotso2 小时前
《C++ Web 自动化测试实战:常用函数全解析与场景化应用指南》
前端·c++·python·dubbo
叼菠萝2 小时前
AI 应用开发三剑客系列:LangChain 如何撑起 LLM 应用开发基石?
python·langchain