嵌套 min-max (PLW3301)
源自 Pylint 代码检查工具。
有时提供修复。
作用
检查嵌套的 min
和 max
调用。
为什么这不好?
嵌套的 min
和 max
调用可以被扁平化为单个调用以提高可读性。
示例
建议改为
已知问题
结果代码可能会更慢并使用更多内存,尤其是对于嵌套的可迭代对象。例如,此代码
将被修复为
至少在当前版本的 CPython 上,这会在调用 min
之前为整个可迭代对象分配一个集合,并可能导致性能下降,至少对于大型可迭代对象。
修复安全性
此修复始终是不安全的,并且可能会更改程序的行为,对于没有完全等价关系的类型,例如涉及 NaN
的浮点数比较。
print(min(2.0, min(float("nan"), 1.0))) # before fix: 2.0
print(min(2.0, float("nan"), 1.0)) # after fix: 1.0
print(max(1.0, max(float("nan"), 2.0))) # before fix: 1.0
print(max(1.0, float("nan"), 2.0)) # after fix: 2.0
此修复还将删除外部调用中的任何注释。