Code: Alles auswählen
n [1]: a = lambda: (yield 1)
In [2]: a()
Out[2]: <generator object at 0xb78327ac>
In [3]: a().next()
Out[3]: 1
In [4]: a = lambda: ((yield 1), (yield 2))
In [5]: b = a()
In [6]: b.next()
Out[6]: 1
In [7]: b.next()
Out[7]: 2
In [8]: b.next()
Out[8]: (None, None)
In [9]: b.next()
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
/home/str1442/<ipython console> in <module>()
StopIteration:
Hier nochmal mit gen.send():
Code: Alles auswählen
In [10]: a = lambda: ((yield 1), (yield 2))
In [11]: b = a()
In [12]: b.next()
Out[12]: 1
In [13]: b.send(5)
Out[13]: 2
In [14]: b.next()
Out[14]: (5, None)
In [15]: b.next()
---------------------------------------------------------------------------
StopIteration Traceback (most recent call last)
/home/str1442/<ipython console> in <module>()
StopIteration:
Code: Alles auswählen
In [18]: dis.dis(a)
1 0 LOAD_CONST 0 (1)
3 YIELD_VALUE
4 LOAD_CONST 1 (2)
7 YIELD_VALUE
8 BUILD_TUPLE 2
11 RETURN_VALUE
Py 2.5. ist das in 2.6 / 3.0 immernoch so (habe es nicht kompiliert vorliegen)? Im 3.0 Changelog (http://www.python.org/download/releases/3.0/NEWS.txt, war das Einzige was ich mittels python.org Suche gefunden habe und einem Changelog nahekam) habe ich zu lambda oder yield nichts gefunden.