python基础——生成器与迭代器

生成器

def func():
    print("111")
    yield 1
    print("222")
    yield 3
    print("333")
    yield 3

ret=func()
print(ret)  #具有生成指定条件的数据能力的对象,进行循环的时候才会逐个生成数据
r1=ret.__next__()    #进入函数找到yield,获取yield后面的数据
print(r1)
r2=ret.__next__()
print(r2)
r3=ret.__next__()
print(r3)

迭代器

def myrange(arg):   #与内置函数xrange功能一致
    start=0
    while True:
        if start>arg:
            return
        yield start
        start +=1
ret=myrange(3)
for item in ret:    #迭代器
    print(item,end=" ")
print("")

例子

def fibonacci(n):   #生成器函数 - 斐波那契
    a, b, counter = 0, 1, 0
    while True:
        if (counter > n):
            return
        yield b
        a, b = b, a + b
        counter += 1

f = fibonacci(10)
# 自己写迭代器
# import sys
# while True:
#     try:
#         print (next(f), end=" ")
#     except StopIteration:
#         sys.exit()

# 内置迭代器
for i in f:
    print(i,end=" ")
原文地址:https://www.cnblogs.com/maxgongzuo/p/5833381.html