Python Yield语句似乎没有从其中断处继续。
|
我必须忽略明显的东西,但是我无法终生弄清楚为什么这个yield语句不能连续给我一个比上一个晚15分钟的新datetime值。 gettime函数的行为更像是“返回”而不是“ yields”的函数。
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.
没有找到相关结果
已邀请:
3 个回复
峨躬坎抬焚
这给了我:
要记住的重要一点是,当我们看待我的
对象时,
s的函数实际上会返回一个生成器:
您可以反复调用
获得下一个值。每次执行循环时,您都在创建一个全新的生成器,并从中获取下一个(在本例中为第一个)值。
痰降锭骂奸
如果愿意,还可以将其简化为生成器表达式
届甸衬丝蚕
但是您可能只想列出。