擅长:python、mysql、java
<p>当我不得不做这样的事情时,我的解决方案是在发电机的顶部创建一个发电机!这实际上是一个装饰电话的想法。所以你知道</p>
<pre><code>def funca():
while True:
print "in funca"
yield True
def dec(func):
while True:
print "in funcb"
func.next()
yield True
decfa = dec(funca())
decfa.next()
>>
"in funcb"
"in funca"
</code></pre>
<p>至于你的问题(只给出最后一个值),我会做如下事情:</p>
<pre><code>def funca():
for i in range(1,5):
yield i
def dec2(ff):
try:
while True:
val=ff.next()
except:
yield val
>>>dec2(funca()).next()
4
</code></pre>