文章目录

  • 一、Black自动格式化工具
  • 二、格式化行为的核心内容
    • 1. 统一缩进和空格规则
    • 2. 括号换行:一致的多行结构展开
    • 3. 字符串风格统一
    • 4. 函数/类定义中的空行规则
    • 5. import 排序(建议搭配 isort)
    • 6. 注释不动、换行优雅
    • 7. 可配置项极少,强调“零配置”理念
  • 三、安装
  • 四、使用方式
    • (1)单文件 - 格式化:black example.py(修改原文件)
    • (2)多文件 - 格式化:black .(修改原文件)
    • (3)查看修改内容(支持单/多文件):black --diff(不修改原文件)
    • (4)在VS Code中安装插件实时使用(推荐)

在线文本对比

✅ 一、自动执行Python代码规范的常用工具

工具名称功能类别说明
Black代码格式化工具自动格式化Python代码,主张“无配置就是最好的配置”,风格一致性极强
isortimport排序自动将import语句分组排序(标准库、第三方库、本地模块),保持整洁
flake8代码风格检查基于PEP8规范,检查命名、空格、缩进、未使用变量、重复定义、复杂度等
pylint代码质量评估提供评分机制并报告冗余/危险代码,适合用于静态代码分析和质量评估
mypy静态类型检查对标PEP 484,检查类型注解的正确性,适合大型项目构建类型安全
autopep8自动PEP8修复根据flake8风格检查自动修复,但不如Black统一、现代

✅ 二、IDE集成建议(VSCode等)
若使用 VSCode、PyCharm 等IDE,可集成以下工具:

功能推荐插件设置位置
自动格式化Black Formattersettings.json配置black为默认格式化器
风格检查flake8可通过插件提示下划线标出错误
import排序isort可结合保存时自动执行

一、Black自动格式化工具

Black 是 Python 社区广泛使用的自动格式化工具,可以一键帮你格式化代码,风格统一、无争议,开发者只需专注业务逻辑,不再纠结代码缩进、空格、换行风格等细节。

口号:The Uncompromising Code Formatter —— 不可协商的代码风格(所以不用做风格选择题)

二、格式化行为的核心内容

1. 统一缩进和空格规则

  • 使用4个空格缩进
  • 删除不必要的空格(如 if(x == 1) → if (x == 1)
  • , 号后自动添加空格(除非在函数参数中省略)
  • 去除尾部空格
  • 保证每个文件结尾 只有一个空行

2. 括号换行:一致的多行结构展开

在函数调用或定义参数较多、过长时,自动使用“垂直风格”展开括号内容:

# 原始写法
def foo(a, b, c, d): pass# 格式化后
def foo(a,b,c,d,
):pass

这提升了 diff 稳定性,减少多人协作时“只改一行却整组变了”的问题。

3. 字符串风格统一

  • 默认使用 双引号" "
  • 除非包含嵌套双引号,才会用单引号
# 原始
s = 'Hello'# 格式化后
s = "Hello"

4. 函数/类定义中的空行规则

  • 顶级函数或类定义之间留 2行
  • 类中方法之间留 1行

5. import 排序(建议搭配 isort)

Black 本身只对 import 保持分组,但不负责排序顺序:

# Black会这样组织:
import os
import sysimport numpy as np
import torch

⚠ 推荐 配合 isort 使用,处理完整排序逻辑。

6. 注释不动、换行优雅

  • Black 不会修改注释内容
  • 但会适当调整注释的位置以匹配格式化后的结构

7. 可配置项极少,强调“零配置”理念

Black 有意只保留极少的选项,例如:

三、安装

用pip直接安装:pip install black,需要 Python 3.9 及以上版本。

四、使用方式

(1)单文件 - 格式化:black example.py(修改原文件)

假设你有一个叫 example.py 的 Python 脚本,只需一行命令:black example.py
👉 它会直接修改原文件(不会备份)。

import cv2tif_path =     r"D:\py\other\stig_x_0.007.tif"  # 不可以有中文
img =      cv2.imread(tif_path, cv2.IMREAD_UNCHANGED)
if img is None:raise SystemExit(f"无法读取图像 '{tif_path}'")# 显示图片
cv2.    imshow("imgs", img)
cv2.    waitKey(0)
cv2.    destroyAllWindows()

执行black D:\py\other\test.py后的运行结果如下:

import cv2tif_path = r"D:\py\other\stig_x_0.007.tif"  # 不可以有中文
img = cv2.imread(tif_path, cv2.IMREAD_UNCHANGED)
if img is None:raise SystemExit(f"无法读取图像 '{tif_path}'")# 显示图片
cv2.imshow("imgs", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

(2)多文件 - 格式化:black .(修改原文件)

你也可以一次性格式化整个项目文件夹:black .
其中 . 表示当前目录,它会递归查找所有 .py 文件进行格式化。

(3)查看修改内容(支持单/多文件):black --diff(不修改原文件)

若希望一次检查多个文件,避免误改生产代码,推荐结合 Git 使用:black . --check

import cv2tif_path = r"D:\py\other\stig_x_0.007.tif"  # 不可以有中文
img = cv2.imread(tif_path, cv2.IMREAD_UNCHANGED)
if img is None:raise SystemExit(f"无法读取图像 '{tif_path}'")# 显示图片
cv2. imshow("imgs", img)
cv2.waitKey(0)
cv2.destroyAllWindows()

执行black --diff D:\py\other\test.py后的运行结果如下:

(py39) PS D:\py> black --diff D:\py\other\test.py
--- D:\py\other\test.py 2025-06-17 09:20:21.661186+00:00
+++ D:\py\other\test.py 2025-06-17 09:20:25.159215+00:00
@@ -1,11 +1,11 @@import cv2-tif_path =     r"D:\py\other\stig_x_0.007.tif"  # 不可以有中文
-img =      cv2.imread(tif_path, cv2.IMREAD_UNCHANGED)
+tif_path = r"D:\py\other\stig_x_0.007.tif"  # 不可以有中文
+img = cv2.imread(tif_path, cv2.IMREAD_UNCHANGED)if img is None:raise SystemExit(f"无法读取图像 '{tif_path}'")# 显示图片
-cv2.    imshow("imgs", img)
-cv2.    waitKey(0)
-cv2.    destroyAllWindows()
\ No newline at end of file
+cv2.imshow("imgs", img)
+cv2.waitKey(0)
+cv2.destroyAllWindows()
would reformat D:\py\other\test.pyAll done! ✨ 🍰 ✨
1 file would be reformatted.

(4)在VS Code中安装插件实时使用(推荐)

打开VS Code设置中搜索Python Formatting Provider,设为black
允许保存时自动格式化:

// settings.json 配置
"editor.formatOnSave": true,
"python.formatting.provider": "black"

这样每次按Ctrl+S保存时,Black就会自动帮你格式化代码。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/83929.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/83929.shtml
英文地址,请注明出处:http://en.pswp.cn/web/83929.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

项目拓展-简易SQL监控,P6SPY拦截所有jdbc连接并打印执行SQL

介绍一下P6spy驱动 p6spy 是一款开源的数据库监控框架,主要用于 拦截和记录应用程序与数据库之间的所有交互(如 SQL 语句、参数、执行时间等) 它通过包装现有的 JDBC 驱动(如 MySQL JDBC 驱动),在不修改业…

洛谷B3951 [GESP样题 五级] 小杨的队列

题目描述 小杨的班级里共有 N N N 名同学,学号从 0 0 0 至 N − 1 N-1 N−1。某节课上,老师要求同学们进行列队。具体来说,老师会依次点名 M M M 名同学,让他们加入队伍。每名新入队的同学需要先站到队伍末尾(刚开…

Java编程之外观模式

前言 想象你要去一家很复杂的餐厅吃饭,但不想自己点菜、排队、找位置,也不想管厨房、洗碗、送餐这些后端流程。你只需要告诉餐厅服务员“我要一份牛排套餐”,然后坐等就好。这个服务员,就是外观模式(Facade Pattern&a…

告别 Java 开发困境!飞算 JavaAI 开发助手开启智能编程新时代

在 Java 开发的世界里,需求不明确、加班写重复代码、被 BUG 搞得焦头烂额,是许多开发者难以摆脱的 “三座大山”。需求文档模糊不清,让开发者在项目起始阶段就陷入迷茫;大量重复性的代码编写工作,不仅消耗时间和精力&a…

Node.js 中两种模块导出方式区别

两种模块到处方式 exports.xxx ... module.exports ... 1. exports.xxx ... exports 是 module.exports 的一个引用(快捷方式)。 当你写 exports.foo function() {},实际上就是给 module.exports 对象添加了一个 foo 属性。 这种方式…

电脑出问题了,无网络环境下一键快速重装系统

在电脑使用过程中,系统故障、卡顿、崩溃等问题屡见不鲜。面对这些情况,重装系统往往是解决问题的最有效手段之一。然而对于刚接触计算机操作的新用户来说,如何安全、稳定地完成系统重装,仍是一个颇具挑战的任务。 这一款专为新手…

基于区块链的去中心化身份验证系统:原理、实现与应用

前言 在数字化时代,身份验证是网络安全和隐私保护的核心环节。传统的身份验证系统依赖于中心化的机构,如政府、银行或互联网服务提供商,这些机构存储和管理用户的个人信息。然而,中心化系统存在诸多问题,如数据泄露风险…

React forwardRef 与 useImperativeHandle 深度解析

在React开发中,组件间的通信是一个核心话题。虽然props和state能够处理大部分场景,但有时我们需要更直接的方式来操作子组件。今天我们来深入探讨两个强大的React Hook:forwardRef和useImperativeHandle。 forwardRef:传递引用的…

KingbaseES在线体验平台深度测评:基于MCP接口管理的Oracle风格SQL实战

文章目录 一、平台环境与准备二、引导体验1.检查数据库版本及服务状态 三、建库与建表1. 建库(KingbaseES中通常无需显式建库,此处以创建schema模拟)2. 建表 四、查库与数据操作测试1. 查库(确认表结构)2. 新增数据3. …

echarts开发 | 数据可视化 -- 第三篇 echart进阶配置项 数据集

文章目录 一、概念二、回顾在系列(series)中设置数据三、在数据集中设置数据3.1 数据集(dataset) 基础3.2 二维数组数据(默认) 四、把数据集(dataset) 的行或列 映射为 序列 (series)五、维度(dimension)六、数据到图形的映射 (series.encode) 一、概念 …

如何科学测算AI业务场景所需算力服务器?——以Qwen3 32B模型与海光K100为例

在人工智能(AI)技术飞速发展的今天,越来越多企业开始部署大模型应用,如智能问答、文本生成、知识图谱构建等。但如何合理配置硬件资源,既满足业务需求又避免资源浪费,是每个项目实施前必须解决的问题。 本…

渗透实战:利用XSS获取cookie和密码

操作均来自靶场,切勿用于未授权渗透测试! Lab 21:将反射型 XSS 注入带有尖括号、单引号、双引号、反斜杠和反引号的 Unicode 转义模板文字中 输入的任何单引号双引号尖括号都会被 unicode 编码 直接换另一种代码执行方式${alert(1)}&#…

Eureka、Nacos、Zookeeper 优雅上下线机制

✅ 三大注册中心优雅上下线机制对比 维度EurekaNacosZookeeper注册方式客户端注册 心跳维持客户端注册 心跳维持客户端创建临时节点服务可用状态控制STARTING、UP、DOWN、OUT_OF_SERVICEUP、DOWN、STARTING 等无显式状态标识,靠节点存在与否判定上线控制方式通过…

Flink与Kubernetes集成

引言 在当今大数据与云计算蓬勃发展的时代,容器编排与流处理技术成为企业数据处理架构的关键支柱。Kubernetes作为容器编排系统的行业标准,能够高效自动化地部署、扩展和管理计算机应用程序;Apache Flink则是流处理和批处理领域的佼佼者&…

第五节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 角色管理模块(上)

Vben5 系列文章目录 💻 基础篇 ✅ 第一节:Vben Admin 最新 v5.0 (vben5) 快速入门 ✅ 第二节:Vben Admin 最新 v5.0 (vben5) 快速入门 - Python Flask 后端开发详解(附源码) ✅ 第三节:Vben Admin 最新 v5.0 (vben5) 快速入门 - 对接后端登录接口(上) ✅ 第四节:Vben Ad…

实施企业预算管理的企微CRM系统技巧:从成本控制到价值创造

一、企微CRM管理系统为何成为预算管理新引擎? 官方数据显示,接入企微CRM系统的企业平均降低客户管理成本28%,预算执行效率提升40%。这源于企微CRM管理软件的三大独特优势: 原生集成能力:与企业微信通讯录、会话存档无缝对接&…

WebFuture:手机版页面部分区域报错:未将对象引用设置到对象的实例

问题描述: 手机版页面部分区域报错:未将对象引用设置到对象的实例,PC板访问正常。 问题分析: 对比PC和手机页面模板,调用代码有以下差异,手机版模板没兼容null值,简介为空导致报错。 解决方法…

【Cursor点击登录后一直转圈,无反应】

Cursor点击登录后一直转圈,无反应 一、问题描述二、解决方案 一、问题描述 1、进入Cursor官网(国际版): Cursor国际版地址 2、填入账号密码,点击登录 3、一直转圈,无法登录 二、解决方案 使用梯子&…

【无标题】世界模型

为什么大语言模型,没有真正推动经济大幅增长,但世界模型有可能 5月份谷歌IO大会,DeepMind老板(谷歌AI业务负责人,2024Nobel化学奖得主,黛密斯哈萨比斯)提到,谷歌接下来目标是做世界…

Doc2X:⾼精度、⾼性价⽐⽂档解析 API,助力Arxiv论文智能解读Agent构建

前言 在AI大模型时代,RAG(Retrieval-Augmented Generation)检索增强生成技术已经成为构建智能知识库和问答系统的核心架构。然而,在实际项目实施过程中,开发者们往往会遇到一个关键痛点:如何高质量地将各种…