我試圖演示如何使用Python中的yield
。我想通過一個例子來證明這一點。在這個例子中使用「yield」的正確方法
該示例將要求用戶輸入yes
或no
,並在每次輸入yes
時將計數器n
加1。
我想要展示yield
工作方式的部分是用戶再次調用函數並獲取更新次數的值。例如,如果使用了回車,並且用戶再次運行該腳本,它將從頭開始,並且次數將是1
。相反,我希望用戶得到1,2,3,...等等,這是輸入的次數。
這裏的問題是如何使用yield
來演示這樣的例子。在我下面寫的代碼中,我總是得到返回的generator object
而不是n
的值。我怎樣才能得到返回的整數值n
?
def yes_times(answer):
n = 0
if answer == 'yes':
n = n + 1
yield n
answer = raw_input('"yes" or "no": ')
times = yes_times(answer)
print 'You answered yes ' + str(times) + ' times'
謝謝。
這不是在所有的如何(或者)使用發電機的功能。你只需要輸入一次! – jonrsharpe
生成器主要用於當您希望在大型數據集上操作,因爲它們被懶惰地評估並且不會在單個輸入上保存內存@jonrsharpe聲明 – danidee