我是Python新手,但不是编程语言。出于这个原因,我很烦恼为什么我在解读我在工作中遇到的以下代码行时遇到了麻烦:
include_ = next((True for re_ in self.include_patterns if re_.match(name)), None)
我已经熟悉了发电机,所以我不需要对此进行详尽的解释。我不明白next
做什么以及True
实际做了什么。其他例子也受到欢迎。
答案 0 :(得分:3)
如果找到了某个东西,它只会产生True
,否则它会返回None
,当发生器到达它的末尾时它是next
默认值(这是恕我直言不太好,它应该返回False
)。
next
避免完全迭代。一旦找到其中一个模式,它就会停止。
但这是一个臃肿的方法(next(<gencomp>,None)
构造在你需要生成器的结果时仍然有用,但不是在这里)
在这里,您可以使用any
(or
如果any
返回False
,那么您可以获得None
,因为您只需True
1}}或......别的东西。
include_ = any(re_.match(name) for re_ in self.include_patterns) or None