【发布时间】:2013-07-16 18:59:47
【问题描述】:
我有一个像这样的生成器:
def iterate_my_objects_if_something(self):
for x in self.my_objects:
if x.something:
yield x
我这样称呼:
for x in self.iterate_my_objects_if_something():
pass
在没有返回的情况下,这会尝试遍历 NoneType 并抛出异常。
我如何返回一个空的生成器?
【问题讨论】:
-
当你没有任何对象时,为什么
my_objectsNone?为什么它不是一个没有对象的列表? -
我认为您可能误诊了问题。只有当
self.my_objects是None时才会出现此错误,而不是在没有产生任何对象的情况下。 -
你可能应该发布堆栈跟踪,我敢打赌,异常是在生成器内引发的。如果您无法遍历
self.my_objects,您需要做的就是跳过循环,或者在生成器中捕获异常。 -
原来我将这个生成器链接到另一个生成器中,它在那里抛出了一个错误,因为这个生成器没有返回。堆栈跟踪令人困惑。