。我猜当时开发人员使用的Python版本是2.3或2.4。基本上源代码是相同的,但我发现如下:

fsa = (fsa and union(fsa, fsa2)) or fsa2

其中fsafsa2union(fsa, fsa2)都是对象。我不知道它们是如何返回新对象的。有人能给我点提示吗?另外,Python2.7中是否仍然允许使用这些运算符?如果没有,如何更改它以使其在Python2.7中正常工作?
谢谢,

最佳答案

Your one line is equivalent of this two ifs:

if fsa:
    fsa = union(fsa, fsa2):

if not fsa:
    fsa = fsa2

这种使用布尔运算符的方式称为短路。
There is some info in python docs and relevant questions, for example: Does Python support short-circuiting?

08-24 23:36