最具python风格的一种表示变量的方式,该变量只通过两个“命名”值进行切换

最具python风格的一种表示变量的方式,该变量只通过两个“命名”值进行切换,python,coding-style,readability,Python,Coding Style,Readability,我有一个非常复杂的迭代,每次通过循环,我都需要一个“参数”,它会影响循环中完成的工作。基本上,我一直在做以下工作: CLOSE_SIDE = 0 FAR_SIDE = 1 .... while (...): if (side == CLOSE_SIDE): .... else if (side == FAR_SIDE): .... .... side = FAR_SIDE if (side == CLOSE_SIDE) el

我有一个非常复杂的迭代,每次通过循环,我都需要一个“参数”,它会影响循环中完成的工作。基本上,我一直在做以下工作:

CLOSE_SIDE = 0
FAR_SIDE = 1

....

while (...):
    if (side == CLOSE_SIDE):
        ....
    else if (side == FAR_SIDE):
        ....

    ....

    side = FAR_SIDE if (side == CLOSE_SIDE) else CLOSE_SIDE
我意识到我可以只使用布尔值,但我觉得这降低了我所做工作的可读性和明显性。我希望这两个州被命名。此外,任务虽然紧凑,但感觉很笨重。做一个完整的if语句:

if side == CLOSE_SIDE:
    side = FAR_SIDE
else if side == FAR_SIDE:
    side = CLOSE_SIDE
感觉同样笨重


最好的方法是什么?这更像是一个文体问题。我想听听社区的一些意见

不是说它变化很大,而是要在两个整数之间切换,有一个常见的习惯用法:

side = CLOSE_SIDE + FAR_SIDE - side

并不是说它变化很大,而是要在两个整数之间切换,有一个常见的习惯用法:

side = CLOSE_SIDE + FAR_SIDE - side

您可以为bool变量选择合适的名称,并在True和False之间切换,而不是命名这两个值:


您可以为bool变量选择合适的名称,并在True和False之间切换,而不是命名这两个值:


如果问题主要与样式有关,则CleanestSolutiontm将隔离函数中的翻转逻辑:

 side = switch_side(side)

如果问题主要与样式有关,则CleanestSolutiontm将隔离函数中的翻转逻辑:

 side = switch_side(side)

在布尔名称前面加上IS_u或ON_u,使其含义变得明显:

ON_FAR_SIDE = True

while (...):
    if ON_FAR_SIDE:
        ....
    else:
        # Must be on near side
        ....

    # Switch sides
    ON_FAR_SIDE = not ON_FAR_SIDE

重要的一点是选择一个好的变量名。

在布尔名称前面加上is_uu或ON_uu,这样它的含义就变得显而易见了:

ON_FAR_SIDE = True

while (...):
    if ON_FAR_SIDE:
        ....
    else:
        # Must be on near side
        ....

    # Switch sides
    ON_FAR_SIDE = not ON_FAR_SIDE
重要的部分是选择一个好的变量名