def add(s,x): return s+x def gen(): for i in range(4): yield i base = gen() for n in [1,10]: base=(add(i,n) for i in base) print(list(base))
n等於1時:
執行完base = (add(i, n) for i in base)
後base是:
i+n for i in [0,1,2,3]
接下來n=10:
base變爲i+n for i in (i+n for i in [0,1,2,3])
此時n等於10,再去計算base, base一直是個生成器。
其中print list(base) 是對生成器進行迭代,此時n是按照10來計算。