<p>我一定忽略了显而易见的,但我一辈子都搞不懂为什么这个收益率语句没有不断地给我一个比上一个晚15分钟的新的datetime值。gettime函数的行为更像是一个“returns”而不是“yields”的函数。在</p>
<pre><code>import datetime
#function that continually adds 15 minutes to a datetime object
def gettime(caldate):
while True:
yield caldate
caldate += datetime.timedelta(minutes=15)
#initialize a datetime object
nextdate = datetime.datetime(2011, 8, 22, 11,0,0,0)
#call gettime function 25 times.
for i in range(0,25):
print gettime(nextdate).next()
#output feels like it should be a series of incrementing datetime values 15 minutes apart.
#in actuality, the same result namely:
#2011-08-22 11:00:00
#happens 25 times.
</code></pre>