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()))