Python中的生成器(generator)

  生成器:

 在函数内部包含yield关键字,那么该函数执行的结果就是生成器(生成器即是迭代器)

 

yield的功能:1.把函数的执行结果做成迭代器(帮函数封装好__iter__(),__next__()方法)

                      2.函数暂停与再继续进行的状态是由yield保存的

yield与return的比较?

   相同点:都有返回值的功能

   不同点:return只能返回一次值,而yield可以返回多次值

def f():

    yield 5
    print("ooo")
    return
    yield 6
    print("ppp")
        # if str(tem)=='None':
        #     print("ok")

f=f()
# print(f.__next__())
# print(f.__next__())
for i in f:
    print(i)

'''
return即迭代结束
for不报错的原因是内部处理了迭代结束的这种情况
'''


python的三元表达式+列表解析+生成器表达式
三元表达式:
# def max2(x,y):
# if x>y:
# return x
# else:
# return y
# x=10
# y=20
# res=x if x>y else y
# print(res)
列表解析:
l = ['egg%s'%i for i in range(10)]
print(l

l = ['egg%s'%i for i in range(10) if i > 5]
print(l)
names = ['alex_sb','egon','wupeiqi_sb','yuanhao_sb']
names_new = [name for name in names if name.endswith('sb')]
print(names_new)
生成器表达式
g = ('egg%s'%i for i in range(10))##将中括号变成小括号即为生成器表达式
#迭代器同一时间在内存中只有一个值
print(g)
print(next(g))
print(next(g))
with open('db.txt',encoding = 'utf-8') as f:
g = (len(line) for line in f)
print(max(g))
 

猜你喜欢

转载自www.cnblogs.com/huyingsakai/p/9177809.html