python初识生成器 迭代器

生成器

带有 yield 的函数在 Python 中被称之为 generator(生成器)

def xragns():     #定义函数生成器
    print('小伙')
    yield ('')    #加上yield就会生成一个生成器

    print('python')
    yield('hao')

    print('编程')
    yield('hao')

x = xragns()       #执行函数生代器仅仅是获得内部不会执行
ret = x.__next__()  #生成器的next方法才会向下执行 执行函数寻找下一个yield
print(ret)
ret = x.__next__()  #第二次执行会回到上次跳出的位置想下执行
print(ret)
ret = x.__next__()
print(ret)

迭代器

迭代器是访问集合元素的一种方式。迭代器对象从集合的第一个元素开始访问,知道所有的元素被访问完结束。迭代器只能往前不能后退

ef xrange(n):    #定义一个函数
    start = 0
    while True:   #while循环
        if start > n:  #判断如果值小于n
            return
        yield start    #生成器退出
        start += 1    #每循环到这都加一

for i in xrange(10):    #迭代器
    print(i)

obj = xrange(5)     #执行函数,这个时候内部不会执行生成器
n1 = obj.__next__()  #生成器从上向下执行知道遇到的第一个yield
n2 = obj.__next__()  #生成器会回到上次跳出的位置继续回去循环
n3 = obj.__next__()  # 依次想下执行
n4 = obj.__next__()
n5 = obj.__next__()
n6 = obj.__next__()
n7 = obj.__next__()
print(n1,n2,n3,n4,n5,n6)  #输出所有的结果
#
原文地址:https://www.cnblogs.com/guokaixin/p/5538817.html