如何防止或警告Python函数参数被重新赋值?
防止Python函数参数被重赋值的代码检查方案
要在Python中实现类似Java final、C const 或ESLint no-param-reassign的参数重赋值限制,可通过以下静态代码检查工具实现:
Pylint
Pylint内置了redefined-argument-from-local规则,专门检测函数内对参数的重赋值行为。针对你提供的代码示例,Pylint会触发警告,提示参数foo被局部变量重新定义。该规则默认启用,直接运行pylint your_script.py即可检测。
flake8 + flake8-bugbear
flake8本身无相关规则,但第三方插件flake8-bugbear提供了B023规则,明确禁止在函数内重赋值参数。使用步骤:
- 安装插件:
pip install flake8-bugbear - 运行flake8:
flake8 your_script.py
此时示例中的for foo in foos:代码会被标记为错误。
Pyright
Pyright(微软推出的静态类型检查工具)支持reportParameterRedefinition配置项,开启后会将参数重赋值视为错误。在项目的pyrightconfig.json中添加如下配置:
{ "reportParameterRedefinition": "error" }
运行pyright your_script.py即可检测到示例中的参数重赋值问题。
这些工具均为静态检查,能在编码阶段及时发现参数重赋值问题,满足你无需运行时限制、仅需代码检查的需求。
内容的提问来源于stack exchange,提问作者Patryk Koryzna
相关产品推荐
相关产品推荐

