这段代码中`或None'的目的是什么?

时间:2017-07-25 15:57:18

标签: python pyparsing

我一直在浏览pyparsing库的代码。在那里,我找到了以下片段:

    result = instring[loc] == self.firstQuoteChar and self.re.match(instring,loc) or None
    if not result:
        raise ParseException(instring, loc, self.errmsg, self)

    loc = result.end()
    ret = result.group()

为了更加深思熟虑,我对result的理解是:

result = firstCharacterIsCorrect(...) and self.re.match(...) or None

以下是我不明白的原因:为什么or None在那里?

如果第一个字符不正确,如果没有or None,我们会获得False。如果它是正确的,但正则表达式失败,我们无论如何都会从失败的匹配中获得None

在任何一种情况下(使用False或使用None)if not result都会做正确的事。

那为什么要添加or None?我错过了什么?为什么None优于False

1 个答案:

答案 0 :(得分:3)

作者希望resultNone或匹配对象。如果没有or None,如果第一次测试失败,result将由于短路规则而成为False