Python面试题

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

 

 

 

posted @ 2018-07-12 16:39  三师弟悟净  阅读(114)  评论(0编辑  收藏  举报