32 lines
613 B
Python
32 lines
613 B
Python
|
# Check that yield-from can work without heap allocation
|
||
|
|
||
|
import micropython
|
||
|
|
||
|
# Yielding from a function generator
|
||
|
def sub_gen(a):
|
||
|
for i in range(a):
|
||
|
yield i
|
||
|
def gen(g):
|
||
|
yield from g
|
||
|
g = gen(sub_gen(4))
|
||
|
micropython.heap_lock()
|
||
|
print(next(g))
|
||
|
print(next(g))
|
||
|
micropython.heap_unlock()
|
||
|
|
||
|
# Yielding from a user iterator
|
||
|
class G:
|
||
|
def __init__(self):
|
||
|
self.value = 0
|
||
|
def __iter__(self):
|
||
|
return self
|
||
|
def __next__(self):
|
||
|
v = self.value
|
||
|
self.value += 1
|
||
|
return v
|
||
|
g = gen(G())
|
||
|
micropython.heap_lock()
|
||
|
print(next(g))
|
||
|
print(next(g))
|
||
|
micropython.heap_unlock()
|