我写了一个片段,它使用生成器来返回自上次调用以来经过的时间。
def time_gen(start_time):
start = start_time
while True:
elapsed = time.time() - start
start = time.time()
yield elapsed
def test():
a = time_gen(time.time())
for i in range(4):
time.sleep(1)
print(a.next()) #prints about 1 second
似乎运作良好。但我不喜欢用户在开始时间内需要传递的方式。有没有办法编写一个函数来返回一个已经作为参数传递的开始时间的生成器?
#Broken Code
def time_closure():
def time_gen(start_time):
start = start_time
while True:
elapsed = time.time() - start
start = time.time()
yield elapsed
a = time_gen(time.time())
return a
#Usage of Broken Code
a = time_closure()
a.next()
答案 0 :(得分:-1)
您不必将开始时间传递给生成器。您可以在第一行中执行map.put(key, map.containsKey(key) ? map.get(key) + 1 : 1);
,其余部分保留原样