当前位置: 首页 > 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.zskr.cn/news/1487066.html

相关文章:

  • 泸州白酒代工厂怎么选?2026年OEM/ODM服务商对标评测与采购决策指南 - 精选优质企业推荐官
  • 阿里黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • 常州市明扬物资回收:常州净化车间整厂打包回收公司 - LYL仔仔
  • 终极指南:如何用AutoHotkey实现Chrome浏览器自动化控制
  • 保姆级教程:用Docker Compose一键部署qBittorrent+Transmission快校版+IYUU Plus辅种全家桶
  • 百色市黄金回收白银回收铂金回收攻略,实地甄选五家优质实体店 - 诚金汇钻回收公司
  • ARM TrustZone-M实战:在i.MX RT600上构建硬件级安全嵌入式系统
  • 乌鲁木齐市水磨沟区农家菜哪家卫生干净 乡根农庄(叁棵树老味餐厅) 联系电话:13999188281 - 资讯快报
  • 海同科技/职坐标靠谱吗?深度拆解16年IT教育品牌真实实力 - 品牌测评鉴赏家
  • 2026宁波黄金回收门店推荐:禹竞名奢汇领跑,五大正规商家实力盘点 - 奢侈品交易观察员
  • 微信聊天记录永久保存指南:3步轻松备份你的珍贵回忆 [特殊字符]
  • 2026年6月行业内知名的调节阀生产厂家推荐,电站阀/球阀/止回阀/闸阀/截止阀/蝶阀/调节阀/铜阀门,调节阀厂商推荐 - 品牌推荐师
  • Final2x终极指南:免费开源的4倍图像超分辨率神器
  • 缺氧存档编辑终极指南:5步打造完美殖民地
  • 2026年无锡SMT不良品销毁回收厂家口碑榜:绿色发展与安全保障并重 - 资讯快报
  • 华爵的锁芯是什么级别?——超C级专利圆柱体锁芯,安全标准远超国标 - 资讯焦点
  • 期货策略 tick 与 K 线一起用:订阅顺序与触发规则怎么定
  • 易货交易平台功能解析:规范化易货基础设施的作用与价值 - 资讯焦点
  • 2026 海口卖黄金攻略,避开回收各种套路 - 奢侈品回收评测
  • 武汉市一豪卷帘门:武汉车库门安装公司 - LYL仔仔
  • CPU16指令集架构解析:寻址模式、条件码与嵌入式优化实战
  • 单片机普通IO口实现LED频谱呼吸+节奏闪烁效果(免硬件PWM)
  • 全球产业规则或将迎来“中国时刻”,中国企业喜临门站上国际讲台 - 资讯焦点
  • 2026 山西本地线上获客服务团队实力全面梳理汇总 - 深度智识库
  • 小批量PCB选材指南:板材与铜厚如何平衡
  • 2026年10款降AI率软件对比:最高AI率100%直降至0.12% - 降AI小能手
  • 2026 昆明化妆培训学校精选推荐!零基础学化妆避坑指南 - 品牌测评鉴赏家
  • 3分钟掌握Real-ESRGAN-GUI:免费AI图像修复终极指南
  • 2026年6月|劳力士中国区官方售后服务体系优化公告 - 资讯速览
  • Pearcleaner:macOS系统清理的终极解决方案,轻松释放磁盘空间