在线Python - IDE、编辑器、编译器、解释器

无需安装,在线编写并运行Python 3.12。标准库、input()以及NumPy、pandas等包会自动加载。代码在你的浏览器中运行。

Python 3.12 (Pyodide 0.26) · 在浏览器中运行,代码绝不会发送到我们的服务器。
main.pyPython
输出

            
输入(stdin),每次 input() 调用读取一行
Ctrl/⌘ + Enter 运行

在线 Python 编译器的功能(IDE、编辑器 & 解释器)

免费在线编写、运行和测试 Python 代码。本页面集在线 Python IDE、代码编辑器、编译器和解释器于一体:输入代码,点击“运行”,立即查看输出。一切都在浏览器中运行,无需安装,也无需注册账号。

  • 即时运行代码: Python 3.12 (Pyodide 0.26),首次加载后一秒内即可输出结果。
  • 代码编辑器: 语法高亮、行号、括号匹配和自动补全括号。
  • 程序输入(stdin): 在运行前输入程序要读取的内容。
  • 清晰的错误提示: 错误信息和警告会显示在输出面板中,与在您自己的电脑上一样。
  • 全屏: Ctrl/⌘ + Shift + F,可调节字号,支持并排或堆叠布局,面板大小可调。
  • 自动保存: 代码保存在您的浏览器中;可一键下载为 main.py 或复制。
  • 放心尝试: 时间限制和“停止”按钮可终止无限循环。
  • 私密: Python 运行时在您的设备上运行,代码绝不会被上传。
  • 深色模式 以及键盘快捷键:Ctrl/⌘ + Enter 运行代码。
  • 免费: 无需注册,不限使用次数。

学习其他编程语言

如何使用 Python 在线编译器

  1. 在编辑器中编写或粘贴代码。页面开始时会提供一个简短示例,随时点击重置示例即可恢复。
  2. 如果程序调用了 input(),请把答案填入输出下方的输入(stdin)框,每次 input() 调用对应一行。
  3. 点击运行或按 Ctrl + Enter(Mac 上为 ⌘ + Enter)。
  4. 在输出面板中查看结果。所有输出到 stderr 的内容(包括回溯信息)都会以错误样式突出显示。
  5. 选择 5、15 或 60 秒的时间限制。如果脚本运行超时(例如不小心写了 while True:),会被自动终止。您也可以随时点击停止。

首次运行时会下载 Python 运行环境,大约 10 MB。浏览器会将其缓存,因此之后的运行启动快得多。用复制或 main.py 保存您的脚本。

您的代码绝不会离开您的设备。Python 在 Web Worker 中于您的浏览器内运行,不会向我们的服务器上传或存储任何内容。编辑器只会把您最后的代码保存在浏览器的本地存储中,不会存放在其他任何地方。

支持哪些功能

编译器通过 Pyodide 0.26 使用 Python 3.12,Pyodide 是编译成 WebAssembly 的 CPython 解释器。它是真正的 CPython,而不是模仿 Python 的替代品,所以语言的表现与在您电脑上完全一致。

  • 标准库:math、collections、itertools、datetime、json、re、dataclasses、statistics 等。
  • 自动加载包:当代码导入 Pyodide 提供的包(例如 NumPy 或 pandas)时,会即时下载。可用的纯 Python 包和科学计算包有很多。
  • 标准输入:通过 input() 和 sys.stdin 读取,数据来自 stdin 框。
  • async/await:代码通过 runPythonAsync 运行,因此可以在顶层使用 await。

需要注意的限制:

  • 不支持网络套接字。socket、urllib.request 和 requests 等模块在这里无法建立连接。
  • 没有持久化文件。可以用 open() 创建和读取文件,但文件只存在于内存中,重新加载页面或点击“停止”后就会丢失。
  • 不显示图表。可以导入 matplotlib,但不会显示任何图形,请改为打印数字或表格。
  • Pyodide 未提供的、含原生代码的包无法安装。

Python 速查

from dataclasses import dataclass

@dataclass
class Item:
    name: str
    price: float

cart = [Item("pen", 1.5), Item("book", 12.0)]
total = sum(i.price for i in cart)
print(f"{len(cart)} items, total {total:.2f}")

if total > 10 and cart:
    print("Free shipping!")
任务语法
打印格式化文本print(f"{x:.2f}")
读取一行输入name = input("Name? ")
把输入转换为数字n = int(input())
列表推导式[x * 2 for x in data if x > 0]
遍历字典for k, v in d.items():
处理异常try: ... except ValueError as e: ...

小技巧

  • 如果程序请求输入的次数多于 stdin 框中的行数,Python 会抛出 EOFError。请为每次 input() 调用都准备一行。
  • 像 pandas 这样的大型导入,首次需要几秒钟。下载时间计入时间限制,所以运行繁重的脚本时请选择 60 s。
  • 每次运行都从全新的变量开始,但已导入的模块会保持加载状态,因此重复运行会很快。
  • 输出的是 JSON?把它粘贴到 JSON格式化与校验工具中,进行美化和校验。
提示:点击停止会关闭 Python 运行环境。下次运行时会从浏览器缓存中重新启动,需要稍等片刻。

常见问题

这是真正的 Python 解释器吗?

是的。Pyodide 是编译成 WebAssembly 的 CPython 3.12。语法、内置函数和标准库都与桌面版 Python 一致。主要差异来自在浏览器中运行:没有网络访问,也没有永久的文件系统。

可以使用 NumPy 和 pandas 吗?

可以。像平常一样导入即可,首次运行代码时会自动下载。Pyodide 提供的许多其他科学计算包和纯 Python 包也以同样的方式加载。

如何给程序提供输入?

按程序请求的顺序,把值填入 stdin 框,每次 input() 调用一行。然后点击“运行”。

为什么脚本在 15 秒后停止?

默认的时间限制可防止死循环导致标签页卡死。如需进行更长时间的计算,请在时间限制菜单中选择 60 s。

还能运行其他语言吗?

可以。试试 JavaScript 在线编译器,或浏览全部免费的开发者工具。

更新于

已复制到剪贴板