1、本题关于生成器
def add(s, x): return s + x def gen(): for i in range(4): yield i base = gen() for i in [1,10] base = (add(i, n) for i in base) print(list(base))
本题解析:
1 在执行print(list(base))之前生成器不会执行, 2 第一个坑:for循环一个列表,而不是range(1,10),所以for循环两次, 3 且循环完之后,此时n的值是10; 4 第二个坑:base的值,在第一次for循环的时候给base从新赋值,第二次for 5 循环的时候base的值与第一次for循环的值不同; 6 第三:在执行list(base)是,此时: 7 base= (add(i,n) for i in (add(i,n) for i in gen()))