我知道我必須缺少一些簡單的東西,但我沒有看到它。生成器表達式與產量:爲什麼不是'next()'工作?
如果我有一個發生器表達這樣的:
>>> serializer=(sn for sn in xrange(0,sys.maxint))
我可以生成,容易,單獨整數像這樣:
>>> serializer.next()
0
>>> serializer.next()
1
>>> serializer.next()
2
如果我寫這樣的發生器:
>>> def ser():
... for sn in xrange(0,100000):
... yield sn
這是沒有bueno:
>>> ser().next()
0
>>> ser().next()
0
>>> ser().next()
0
???我錯過了什麼?
Thx!我知道它必須簡單... – dawg
沒問題。它絕對不是顯而易見的,因爲執行此操作的其他主要類型的函數(裝飾器)在它們中都有一個明確的'return wrapper',我猜是通過'yield'語句隱式/神奇地創建的:P –