Pas*_* T. 8 python static-analysis
我在不知情的情况下不小心使用了可变的默认参数。
有没有可以发现这一点并警告我的 linter 或工具?
flake8-bugbear、Pylint、PyCharm 和 Pyright 可以检测到这一点:
Bugbear 有B006(不要使用可变数据结构作为参数默认值)。
不要使用可变数据结构作为参数默认值。它们是在函数定义期间创建的。对该函数的所有调用都重用该数据结构的这一实例,从而保留它们之间的更改。
Pylint 有W0102(危险的默认值)。
当在参数的默认值中检测到列表或字典等可变值时使用。
皮赖特有reportCallInDefaultInitializer.
生成或抑制默认值初始化表达式中的函数调用、列表表达式、集合表达式或字典表达式的诊断。此类调用可以屏蔽在模块初始化时执行的昂贵操作。
这可以满足您的要求,但请注意,它还会检查默认参数中的函数调用。
PyCharm 的Default 参数的值是 mutable。
此检查检测何时在参数的默认值中检测到列表或字典等可变值。
默认参数值仅在函数定义时计算一次,这意味着修改参数的默认值将影响该函数的所有后续调用。
不幸的是,我找不到这方面的在线文档。如果您有 PyCharm,则可以访问所有检查并导航至此检查以查找文档。
| 归档时间: |
|
| 查看次数: |
1159 次 |
| 最近记录: |