跳到内容

bit-count (FURB161)

派生自 refurb 代码检查工具。

修复总是可用的。

作用

检查使用 bin(...).count("1") 来执行 population count (人口计数) 的情况。

为什么这不好?

在 Python 3.10 中,int 类添加了一个 bit_count() 方法,它比通过 bin(...) 转换为二进制表示形式更简洁高效。

示例

x = bin(123).count("1")
y = bin(0b1111011).count("1")

建议改为

x = (123).bit_count()
y = 0b1111011.bit_count()

修复安全性

此规则的修复被标记为不安全,除非可以推断出 bin 的参数是实现 __index__bit_count 方法的类型的实例,因为这可能会改变运行时针对无效参数引发的异常。

Options (选项)

参考