主要难理解的是这一句
g = ((n+i) for i in g)
它在循环的时候并没有实际生成列表,而只是记下了计算方式(类型为generator),该类型是在调用的时候再生成列表。
所以当循环结束时,g 实际上等于 (n+n+i for i in range(4))
而 n 最后的值是11,所以当后面使用list()将其转成列表时,也就是调用这个generator类的时候,再使用 (n+n+i for i in range(4)) 这个公式来生成列表,也就是 [22, 23, 24, 25]
你可以试试在最后一句print之前插入一句赋值n的语句,将n的值变成其他数字,最后打印的结果也会相应发生改变,都是 (n+n+i for i in range(4))这个公式来生成新的列表内容。
比如改成:
for n in [3, 11]:
g = ((n+i) for i in g)
n = 6
print(list(g))
最后打印出来的就变成 [12, 13, 14, 15]
不知道你这个问题是否已经解决, 如果还没有解决的话: def x (s,y):
语句块
return s,y
x(10,100) #这里是实参