这在Python中通常被使用/是一个好的做法吗?

2024-04-25 04:34:22 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我在代码中遇到了这样一个片段,当我挖掘一些代码来检查状态变化背后的一些逻辑时:

def doSomething(cls, state):
    state &= ~CLOSED_STATE
    if (state & OPEN_STATE) == 0:
        state |= ANOTHER_STATE

    return state

(其中,关闭状态=1,打开状态=4,另一个状态=2)

因此,作为一个初级的Python开发人员,我花了几分钟的时间来理解每一行所做的事情,更不用说理解整个逻辑了。你知道吗

我有使用其他语言的经验,如果我的想法只是检查一些状态逻辑并返回一些东西,我永远不会使用像那样的位操作使它过于复杂,但也许这是Python中的一种常见做法,我对此一无所知。你知道吗

谢谢。你知道吗


Tags: 代码returnif开发人员状态def时间another
1条回答
网友
1楼 · 发布于 2024-04-25 04:34:22

在许多语言中,将布尔值存储为压缩为整数的位是很常见的,尽管在较低级别的语言中,这种存储尤其普遍,因为在较低级别的语言中,像集合交集这样的操作在其他方面比较麻烦。它确实有一些概念上的优势,比如隐式地限制标志集(尽管标志集的数量并不明显);它还有一些实际的优势(除了使用理论上的最小内存量之外),比如使序列化变得微不足道。你知道吗

无论如何,这是一个如此常见的习惯用法,以至于现在的标准库supports it;虽然对于一些程序员来说,这肯定是不熟悉的,但我认为它总体上是一个合理的样式选择(并且不会称之为“过度复杂”)。你知道吗

相关问题 更多 >