Discuvr Python Formatter

办公与数据

CSV 转 Excel 粘贴 CSV,立即以电子表格形式查看,数字、日期和编号都按 Excel 应保存的类型处理。只在需要时才下载整洁的 .xlsx。 PDF 签名 在浏览器中为 PDF 签名:手写、输入或上传签名,放到任意页面,添加日期,然后下载已签名的副本。文件绝不会离开你的设备。 涂黑 永久涂黑 PDF、Word、Excel、PowerPoint、文本和图片文件。匹配项和方框会从文件本身删除,而不是盖住,下载前还会再次检查结果。 我的 IP 是什么 查看您连接时网站看到的公网 IP 地址、它是共享(CGNAT)还是私有地址,以及您的浏览器还透露了什么。 大小写转换与行工具 将文本转换为大写、小写、标题或句子格式,把名称转为 camelCase 或 snake_case,并删除重复行或排序列表。 文本比较 粘贴两个版本的文本,查看每一行新增、删除和修改的内容,并突出显示改动的词语。

写作与提案

语气润色 以您自己的语气,重新格式化您编写的内容,优化语法、结构和表达。一次粘贴,一次回复,无需聊天会话。 自由职业提案生成器 描述客户的问题,即可在几秒钟内获得一份明确范围、明确定价且随时可发送的自由职业提案。

法律与合规

知识产权法问答聊天机器人 提问印度知识产权法 - 商标、专利、版权、外观设计等,每个回答上方列出所用的网络搜索结果。 专利 FER 答复生成器 粘贴第一次审查意见通知书(FER)中的异议,起草结构化答复;或上传草稿,进行知识产权风险审查。 政府计划资格查询工具 只需一次回答一组简短的问题。登录后,我们会保存您的答案,以便您无需重新输入即可查看可能符合哪些中央政府计划的资格。

隐私与安全

网站安全扫描 扫描域名以查找真实、可复现的安全弱点。每项发现都附带背后的观察结果和自行验证的命令。 图片元数据清理 准确查看您的照片透露了关于您的哪些信息 - GPS、相机序列号、您的名字 - 然后将其擦除。裁剪、调整尺寸、模糊人脸和格式转换,全程无需在任何地方存储图片。

开发者工具

JSON 格式化工具 一次粘贴即可美化、压缩和校验 JSON - 解析失败时显示精确的行与列,并统计文档中的实际内容量。 Python Formatter 按照 Black 的方式重新格式化 Python,可自主选择行长度和引号处理方式 - 并准确统计修改的行数。 HTML 查看器 粘贴 HTML 即可在沙盒中实时预览手机、平板或桌面宽度下的渲染效果 - 支持美化、压缩、脚本控制台以及标记问题诊断报告。 IP 子网计算器 输入 CIDR 表示法或带子网掩码的 IP,即刻获得网络地址、广播地址、可用主机范围和地址总数。 编码 / 解码 边输入边编码或解码 Base64、Base64URL、URL 百分号编码、HTML 实体和十六进制,完整支持 UTF-8。 Unix 时间戳转换器 将以秒、毫秒、微秒或纳秒为单位的 Unix 时间戳转换为 UTC 或全球主要时区的日期,或将日期转换回时间戳。 系统架构图生成器 输入 User -> API -> Database 这样的箭头,即可得到排好版的架构图或流程图。折叠分组看全局,给步骤编号看细节流程。

AI 工作台

AI Playground 实时并排比较多个 LLM 提供商的响应。支持使用您自己的 API 密钥。 Agent 演练场 体验跨多个提供商使用工具(网络搜索、计算器、URL 获取)的 AI 智能体。

学习

Study Buddy 顶尖科技岗位的面试备考教练,从第一天学习到获得 Offer:涵盖 DSA、LLD、系统设计、行为面试和 AI 辅助编程的计划、模拟面试、简历评估、申请追踪和 Offer 对比。

日常助手

二维码生成器 用文本、网址、WiFi 信息或联系方式生成二维码 - 输出 PNG 图片或 SVG 矢量图,纠错等级由你选择。 单位换算器 即时在长度、重量、温度、体积、速度、面积和能量单位之间进行转换 - 40+ 种单位类型,即时出结果。 密码生成器 使用密码学安全的随机性生成随机密码,调整其长度和字符类型,并以比特熵查看其强度。 字数统计与可读性分析工具 统计单词、字符、句子和段落数,估算阅读时间,并评估可读性 - 对中文、日文、韩文和泰文文本采用真正按字符计数的方式。 年龄/日期差计算器 计算某人的确切年龄,或任意两个日期之间的确切差值(年、月、日),以及总天数和总周数。 日期差计算器 计算两个日期之间的天数、周数、月数和工作日,或对某个日期加减天数。 百分比计算器 计算Y的X%、一个数是另一个数的百分之几、两数之间的百分比增减,或反向百分比 - 一个工具内的四种常见计算。 SIP 定投计算器 查看每月投资在逐年递增、初始一次性投入和通胀下能增长到多少,或倒推实现目标所需的每月金额。 BMI计算器 通过身高体重计算您的身体质量指数(BMI),支持公制或英制单位,并按世卫组织成人分类标准分级:体重过轻、正常、超重、肥胖。
登录 开始使用
所有工具开发者工具

Python Formatter

像 Black 一样重新格式化 Python 代码 - 并精确定量更改的行数。

您的代码

0 个字符

已格式化

 

关于 Python Formatter

这个工具对你粘贴的内容运行 Black - 大多数 Python 项目早已认可的格式化工具 - 按你选择的行宽和引号处理方式进行格式化。如果文件无法解析,它会说明是哪一行;如果文件已经格式化过,它也会如实告知,而不是假装做了什么。

功能说明

  • 以 79、88、100 或 120 列进行 Black 格式化。
  • "仅检查"模式:在不修改文件的情况下,了解文件是否会发生变化。
  • 保留你自己的引号风格,或让 Black 统一规范它。
  • 遵守或忽略那个让集合保持展开状态的神奇尾随逗号。
  • 当语法与版本相关时,指定目标 Python 版本。
  • 语法错误会报告行号、列号以及周围的代码。
  • 报告增删了多少行,以及文件的整体结构。

工作原理

  1. 1 粘贴代码,或者整个文件的内容。
  2. 2 选择一个行宽以及你关心的任何选项。
  3. 3 点击格式化,然后复制或下载结果。

你的代码永远不会被执行

格式化 Python 代码并不需要运行它。代码会被解析成语法树,再完全在内存中根据这棵树重新生成 - 它从不会被写入文件,从不会被导入,也从不会被执行。一个会运行你粘贴内容的格式化工具,实际上就是带文本框的远程命令行。

为什么是 Black,而不是我们自己的看法

Black 是一种保持 AST 不变的转换:输出的代码与输入的代码是同一个程序。正是这个特性,才让一个格式化工具值得信任,也正因如此,这个工具的任何环节都没有语言模型参与。被要求整理代码的模型,偶尔会在整理过程中顺手改写某一行,而对可正常运行的代码进行无声的改动,正是格式化工具绝不能犯的失误。

仅检查

这和 CI 问的是同一个问题:这个文件会发生变化吗?检查模式会原样返回你的原始代码,并报告 Black 本来是否会重新格式化它,以及会改动多少行。这是快速弄清楚某个流水线为什么在一个你无法在本地复现的文件上失败的办法。

魔术尾随逗号与 fmt: off 实例

最后一项后面的逗号会让 Black 把调用或集合保持为每行一项:result = compute(alpha, beta,) 会变成四行,alpha, 和 beta, 各占一行。勾选忽略魔术尾随逗号后,同样的输入只要放得下行宽就会变成 result = compute(alpha, beta)。要保护手工对齐的代码块(例如矩阵),在它上方一行写 # fmt: off,下方写 # fmt: on,Black 会原样保留两者之间的内容;行尾的 # fmt: skip 只保护这一行。这些是 Black 自己的注释,所以在你项目的 CI 运行 Black 时同样有效。

问题

我的代码会被上传或存储吗?

代码会被发送到服务器,在内存中格式化后在同一个响应里返回。没有任何内容会被写入磁盘、缓存或记录日志,使用记录只保留计数 - 大小、选项、改动了多少行 - 从不保留代码本身。

格式化会改变我代码的行为吗?

不会。Black 改变的是排版,而不是行为,但它做的不只是挪动空格。它会删除多余的括号(x = (1) 变成 x = 1),把数字的前缀和指数改成小写(0XABCDEF 变成 0xABCDEF,1E5 变成 1e5),把调用拆成多行时补上末尾逗号,压缩连续的空行,并去掉 docstring 内部的空格(""" Doc. """ 变成 """Doc.""")。最后这一项会改变 __doc__ 的文本,只有当你的代码读取自己的 docstring 时才有影响。

为什么它完全没有重新格式化我的文件?

因为它在你选择的行宽下已经是格式化过的了。工具会直接说"已经格式化过",而不是悄悄返回一份原样副本。

它会排序我的 import 吗?

不会。排序 import 是 isort 的工作,不是 Black 的,两者分歧足够常见,如果在这里这么做会让你感到意外。

它能格式化有语法错误的文件吗?

任何格式化工具都做不到 - 一个无法解析的文件没有可供重写的结构。你会得到行号、列号以及周围的代码,方便你修正后再试一次。

它遵循 PEP 8 吗?

Black 与 PEP 8 兼容,只有一处广为人知的偏差:它的默认行宽是 88 而不是 79。如果你需要更严格的数值,请在行宽选择器中选 79。

最大能格式化多大的文件?

每次最多 400,000 个字符。格式化超过 10 秒会被中止,只有非常大或高度重复的文件才会碰到,每个 IP 地址每 10 分钟可格式化 30 次。

如何在编辑器、pre-commit 或 CI 中得到同样的格式?

本页运行的是 Black,宽屏时页面顶部栏会显示其版本。Black 从 pyproject.toml 的 [tool.black] 部分读取项目设置,键名与长命令行选项相同:你选的"行长"对应 line-length = 88,勾选了"保留我的引号"就写 skip-string-normalization = true,"忽略魔术尾随逗号"对应 skip-magic-trailing-comma = true,在"目标"中固定的版本对应 target-version = ["py311"]。编辑器插件和 pre-commit 钩子读取的也是这个文件。用 black . 格式化,在 CI 中运行 black --check --diff . :它不改动任何文件,若有文件会被重新格式化则以退出码 1 结束。请固定与本页相同的 Black 版本,因为每个日历年的第一个版本可能会改变稳定风格。

输出结果与 Ruff 的格式化器(ruff format)相同吗?

几乎总是相同,但并非逐字节一致。Ruff 的格式化器被设计为 Black 的直接替代品,Ruff 文档称,在 Django、Zulip 等已用 Black 格式化的大型项目上,超过 99.9% 的行结果完全相同。对从未经过 Black 处理的代码,差异会更多,尤其是行尾注释,其文档列出了有意为之的差异。它的默认行长同样是 88,在 [tool.ruff] 中用 line-length 设置;[tool.ruff.format] 中的 quote-style = "preserve" 对应"保留我的引号",skip-magic-trailing-comma = true 对应"忽略魔术尾随逗号"。如果你的 CI 运行 ruff format --check,请用 Ruff 而不是本页来检查文件。