这是什么?
Pythonline 是一个原生运行于浏览器中的 Python 解释器,所有代码都在本地运行,而不是任何服务器上。这是基于 一个编译成 WASM 的 CPython 实现的。
通过本平台你可以与他人分享你的 Python 代码片段,而他们无需在本地机器上安装 Python。你甚至也可以在手机或平板上运行 Python 代码,而无需安装任何应用程序。以 math 模块为例:
>>> import math >>> math.pi
如果你将鼠标悬停在上面的代码块上,会看到一个按钮可以运行代码。点击之后,试试看将鼠标悬浮在下面的行内代码上 👇
| 类型 | 示例 | 
|---|---|
| 全局变量 | _ __name__ int Exception  |  
| 字面量 | [{}] 1,2 1+2j .0 0b10  |  
| 表达式 | math.pi / 2  |  
| 赋值语句 | one = -(math.e ** complex(0, math.pi)).real  |  
特性简介
我们支持一些类似 IPython 的特性,比如你可以直接 await 异步函数:
from asyncio import sleep
for i in range(10):
    print(i, end=" ")
    await sleep(0.1)   再比如原生的报错,但又能显示源码信息:
def reciprocal(x: int):
    return 1 / x
1 + reciprocal(0)   可用的模块
我们支持所有 Pyodide 支持的库。包括 绝大多数 Python 标准库、所有纯 Python 包、以及 其它适配了 Pyodide 的库,如常见的科学计算库 NumPy、Pandas 和机器学习库 SciPy、SciKit-Learn 等。
此外,你可以使用浏览器 JavaScript 下的全局变量,比如下面这个例子,通过 navigator 查看你剪贴板中的文本:
from js import navigator await navigator.clipboard.readText()
下面这个例子,会并发发起 10 个 HTTP 请求:
from asyncio import gather
from pyodide.http import pyfetch  # 这只是 js 中 fetch 的一个包装器
async def f(url):
    res = await pyfetch(url, method="HEAD", cache="no-store")
    print(res.status, res.status_text, res.headers.get("content-type"))
    return res.ok
await gather(*(f(".") for _ in range(10)))   标准输入输出流也是支持的:
from sys import stdout, stderr
stdout.write("Hello world from stdout!")
stderr.write("Hello world from stderr!")
"你输入了:" + input("请输入")   此项目目前仍在活跃开发中,如果你有任何反馈或建议,请随时联系我们,不胜感激!
致谢
该项目深受 StackBlitz、CodePen 和 Marimo 的启发
来自 pyodide 的开发人员给予了大量帮助