Python 中的变量可以使用 'or' 获得 2 个值吗

can a variable in Python get 2 values using 'or'

我使用 ser.read_until('condition1') 从串行端口读取响应 想要在收到两个回复之一时中断阅读。一个问题是 变量 'response' 可以用 'or' 获得 2 个条件吗?含义如下:

response = ser.read_until(b'Successful').decode() or ser.read_until(b'Failed').decode()

or 在 Python 中的工作方式是评估左侧,如果这是一个错误的值,它会评估右侧并 returns 它。 (这称为短路,如果不需要其他值,则执行会提前停止)。

在布尔代数中,如果 A 为真,则 A 或 B 为真,而不管 B,如果我们看到 A 已经为真,则无需评估 B。如果 A 为假,则 A 或 B 等于 B。

因此,Python(以及许多其他具有非严格类型的语言)决定 a or b 将评估 a,然后如果这是真的,return 它, 如果为假, return b.

在这种情况下,第二个值只会在第一个值给出 FalseNone 等时计算。在这种情况下,您可能想要手动读取数据流并检查其中一个SuccessfulFailed 出现你自己,因为这将读取直到找到 Successful,评估它,然后当你尝试读取 Failed 时,它可能无法工作,因为数据流将已经移过 Failed,因为它试图寻找 Successful.