对于我的一个站点,我需要检查多个类属性是否已定义且不为空。到目前为止,我很高兴地使用if self.attr:了 ,在我看来它是 的简写if self.attr is not None and self.attr is not '':,或者属性的未定义值是什么。
这很好用,但在检查多个字符串属性时会产生令人惊讶的行为。'' and ''不是False(如我所料),而是''.
这就引出了一个问题:是否存在其他类型的and运算符不强制类型转换的类型bool?我想不出一个例子,这种行为差异会导致 - 子句的实际结果不同if(毕竟,''仍然评估为False),但我直觉认为存在可能是陷阱的边缘情况。
最后,我很想知道是否有人知道为什么要这样实施?我认为 Python 的 Zen 鼓励一种方式,而且只鼓励一种方式,而+运算符似乎已经是字符串连接的直观方式。