当前位置: 首页 > news >正文

pyupgrade:自动升级 Python 代码语法的工具

文章目录

  • pyupgrade:自动升级 Python 代码语法的工具
    • 支持的重写规则
    • 使用方式
    • 适用场景

pyupgrade:自动升级 Python 代码语法的工具

Python 版本迭代很快,3.8 有了海象运算符,3.9 有了内置泛型,3.10 有了联合类型|。但老代码库里的写法往往还停留在几年前,手动逐行升级费时费力。

pyupgrade 就是专门解决这个问题的。这个项目目前有 4,094 Star,作者是 asottile。它的核心能力很直接:扫描 Python 代码,自动把旧语法替换成新语法,不改变代码的运行逻辑。

支持的重写规则

pyupgrade 覆盖的语法升级范围很广,从 Python 2 兼容代码到 Python 3.13 的新特性都有。

集合与字典set([1, 2])会改成{1, 2}dict((a, b) for a, b in y)会改成{a: b for a, b in y}。这类改动直接减少代码量,可读性也更好。

字符串格式化。可以把'%s %s' % (a, b)'{}'.format(a, b)自动转成 f-string。工具比较保守,如果转换会让表达式变长或更复杂,就不会强行替换。

类型注解重写。PEP 585 的List[str]改成list[str],PEP 604 的Optional[str]改成str | None,PEP 696 的Generator[int, None, None]改成Generator[int],都能自动处理。

super() 简化。Python 3 里super(C, self).f()可以直接写成super().f(),pyupgrade 会统一做这种替换。

去除兼容层。如果项目确定只支持 Python 3,pyupgrade 可以删除six库的兼容代码、__future__import、冗余的io.open调用,以及__metaclass__ = type这类在新版本里不需要的声明。

标准库 API 更新。比如stdout=subprocess.PIPE, stderr=subprocess.PIPE改成capture_output=True@functools.lru_cache(maxsize=None)改成@functools.cachedatetime.timezone.utc改成datetime.UTC。这些细微的 API 变化,单独改很琐碎,交给工具批量处理更合适。

使用方式

安装和运行都很简单:

pip install pyupgrade pyupgrade --py38-plus myfile.py

--py38-plus表示目标 Python 版本是 3.8 以上,工具会据此决定哪些重写规则可以应用。支持对单个文件或整个目录批量处理。

更推荐的做法是配置成 pre-commit hook。在.pre-commit-config.yaml里加上几行配置,每次提交代码时自动运行,代码库的语法标准会始终保持在设定版本上。

适用场景

维护老旧 Python 项目的团队,如果想逐步迁移到新语法,pyupgrade 能省掉大量重复劳动。它只改语法形式,不动业务逻辑,风险很低。

新项目也可以把它集成到 CI 里,防止旧写法进入代码库。配合 black、isort 这类格式化工具一起用,代码风格和质量都能统一管起来。

总之,语法升级这种机械劳动,交给自动化工具更合适。

用,代码风格和质量都能统一管起来。

总之,语法升级这种机械劳动,交给自动化工具更合适。

http://www.jsqmd.com/news/975342/

相关文章:

  • 泸州白酒代工厂怎么选?2026年OEM/ODM服务商对标评测与采购决策指南 - 精选优质企业推荐官
  • 常州市明扬物资回收:常州净化车间整厂打包回收公司 - LYL仔仔
  • 保姆级教程:用Docker Compose一键部署qBittorrent+Transmission快校版+IYUU Plus辅种全家桶
  • 阿里黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • 第【4】期--基于凸优化的无人机辅助的通信感知一体化系统波束成形方案研究-maltab完整代码+报告
  • 教育专研护眼灯:从教室到家庭的专业护眼新标准 - 资讯焦点
  • 终极iOS越狱指南:使用palera1n工具从入门到精通
  • 终极指南:如何用AutoHotkey实现Chrome浏览器自动化控制
  • 百色市黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • 降AI率黑科技!AI率92%暴降至5%!实测10款降AI率网站!10款工具深度解析!
  • 高效突破网盘限速:LinkSwift网盘直链下载助手深度配置指南
  • 海同科技/职坐标靠谱吗?深度拆解16年IT教育品牌真实实力 - 品牌测评鉴赏家
  • ARM TrustZone-M实战:在i.MX RT600上构建硬件级安全嵌入式系统
  • 5分钟彻底掌控电脑风扇:Windows平台终极风扇控制软件FanControl完全指南
  • 郑州本地人私藏的变美宝地!久匠纹眉,做完不用天天早起画眉啦 - 企业博客发布
  • 054、NPU的激活函数单元:硬件实现ReLU、Sigmoid查找表
  • 2026卷王:5大创意灯箱源头厂家横评实测 避坑指南 - 资讯焦点
  • 2026年广州学烤乳猪多少钱?最新收费及避坑指南全解析 - 品牌优选官
  • 海口黄金回收内幕,2026本地变现不被坑 - 奢侈品回收评测
  • 乌鲁木齐市水磨沟区农家菜哪家卫生干净 乡根农庄(叁棵树老味餐厅) 联系电话:13999188281 - 资讯快报
  • 2026宁波黄金回收门店推荐:禹竞名奢汇领跑,五大正规商家实力盘点 - 奢侈品交易观察员
  • 写论文的神助攻!智能一键生成论文工具,逻辑清晰质量高
  • 义乌市北野装饰设计有限公司 - 资讯焦点
  • 嵌入式BLE开发内存池优化实战:NXP KW36内存碎片解决方案
  • 可修改图片尺寸的工具汇总 热门软件及实用小程序推荐 - 软件工具教程方法
  • 微信聊天记录永久保存指南:3步轻松备份你的珍贵回忆 [特殊字符]
  • 雷达中国官方售后服务中心实地考察报告2026年6月最新 - 亨得利官方服务中心
  • 事情多到记不住?这款11平台同步的效率神器,让你告别丢三落四!
  • 5分钟掌握AI自瞄:YOLOv8智能瞄准终极实战教程
  • 杭州手表回收认准收的顶,本土行业领跑者实力出众 - 奢侈品回收评测