所以,我在代码中遇到了这样一个片段,当我挖掘一些代码来检查状态变化背后的一些逻辑时:
def doSomething(cls, state):
state &= ~CLOSED_STATE
if (state & OPEN_STATE) == 0:
state |= ANOTHER_STATE
return state
(其中,关闭状态=1,打开状态=4,另一个状态=2)
因此,作为一个初级的Python开发人员,我花了几分钟的时间来理解每一行所做的事情,更不用说理解整个逻辑了。你知道吗
我有使用其他语言的经验,如果我的想法只是检查一些状态逻辑并返回一些东西,我永远不会使用像那样的位操作使它过于复杂,但也许这是Python中的一种常见做法,我对此一无所知。你知道吗
谢谢。你知道吗
在许多语言中,将布尔值存储为压缩为整数的位是很常见的,尽管在较低级别的语言中,这种存储尤其普遍,因为在较低级别的语言中,像集合交集这样的操作在其他方面比较麻烦。它确实有一些概念上的优势,比如隐式地限制标志集(尽管标志集的数量并不明显);它还有一些实际的优势(除了使用理论上的最小内存量之外),比如使序列化变得微不足道。你知道吗
无论如何,这是一个如此常见的习惯用法,以至于现在的标准库supports it;虽然对于一些程序员来说,这肯定是不熟悉的,但我认为它总体上是一个合理的样式选择(并且不会称之为“过度复杂”)。你知道吗
相关问题 更多 >
编程相关推荐