【发布时间】:2016-05-12 16:56:22
【问题描述】:
是否有一种简单的方法来测试生成器是否没有项目,例如peek、hasNext、isEmpty,类似这些内容?
【问题讨论】:
-
如果我错了,请纠正我,但如果您可以为 any 生成器提供真正通用的解决方案,则相当于在 yield 语句上设置断点并具有“后退”的能力。这是否意味着在产量上克隆堆栈帧并在 StopIteration 上恢复它们?
-
好吧,我猜想是否恢复它们 StopIteration ,但至少 StopIteration 会告诉你它是空的。是的,我需要睡觉......
-
我想我知道他为什么想要这个。如果您正在使用模板进行 Web 开发,并将返回值传递给像 Cheetah 之类的模板,那么空列表
[]很方便 Falsey,因此您可以对其进行 if 检查并为某事或什么都不做特殊行为。生成器是真的,即使它们不产生任何元素。 -
这是我的用例...我在用户提供的通配符模式上使用
glob.iglob("filepattern"),如果该模式与任何文件都不匹配,我想警告用户。当然我可以通过各种方式解决这个问题,但是能够干净地测试迭代器是否为空是很有用的。 -
可以使用这个解决方案:stackoverflow.com/a/11467686/463758