0
我寫了一個代碼片斷,它使用生成器返回自上次調用以來的經過時間。返回python生成器進行時序分析
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()
您爲什麼說第二個代碼段已損壞? – user2357112
哦,你是對的。它確實有效。我的代表有一個問題。當我將它粘貼到ipython時,它抱怨返回。我認爲這是因爲我不瞭解生成器,但實際上它只是一個空白錯誤。對於任何有相同問題的人,請在ipython中使用%paste宏。 – user514156