跳到内容

冗余对数底数 (FURB163)

派生自 refurb 代码检查工具。

有时提供修复。

作用

检查是否存在具有冗余底数的 math.log 调用。

为什么这不好?

math.log 的默认底数为 e,因此显式指定它是冗余的。

与其将 2 或 10 作为底数传递,不如分别使用 math.log2math.log10,因为这些专用变体通常比 math.log 更准确。

示例

import math

math.log(4, math.e)
math.log(4, 2)
math.log(4, 10)

建议改为

import math

math.log(4)
math.log2(4)
math.log10(4)

修复安全性

当参数是星号表达式时,此修复被标记为不安全,因为这会更改调用语义并可能引发运行时错误。 如果调用中存在注释,它也是不安全的,因为它们将被删除。 此外,由于浮点舍入,math.log(x, base)math.log2(x) / math.log10(x) 可能不同,因此进行此转换时修复也是不安全的。

参考