Python:切换布尔值 "once" 的简洁方式(即,在一个方向上)

Python: Concise way to toggle boolean "once" (i.e., in one direction)

我发现自己需要在某些事情第一次发生时(并且只有在那时)更新布尔变量。使用 var = not var 是不可能的,因为它每次都会继续翻转。

(抱歉这个愚蠢的例子;我正在努力寻找一个更明智的例子……)

inner_has_been_two = False
for outer in range(5):
    for inner in range(3):
        if inner == 2:

            if not inner_has_been_two:
                inner_has_been_two = True

        print(inner_has_been_two)

假设我想 "touch" 变量尽可能少——否则我可以通过简单地省略最里面的 if 语句来一次又一次地覆盖它。

基本上我正在寻找一种更简洁的 pythonic 方式来模拟(三元条件运算符的二进制版本,例如)Elvis 运算符(?:)或空合并运算符(例如 ??;因语言而异)。

关于如何使其简短(呃)和清晰的任何想法?

每次都设置为 True 肯定很快:一个机器周期,可能很容易并行处理。如果您想要在逻辑上像您尝试做的那样:

inner_has_been_true |= True

这也是一个单周期指令,一个"bit set"操作。这是 shorthand for

inner_has_been_true = inner_has_been_true | True