python基础------生成器

本文深入探讨Python的生成器,包括生成器函数和表达式的定义及用法,如yield的特性、send()方法以及生成器表达式的格式。同时,文章介绍了设计模式的重要性,如单例模式、工厂模式、策略模式和观察者模式的基本概念和应用场景,展示了它们在实际编程中的价值。
摘要由CSDN通过智能技术生成

一、生成器

1.定义:生成器本质就是迭代器

2.生成器包括两种:生成器函数和生成器表达式

3.一个包含yield关键字的函数就是一个生成器函数,并且yield不能喝return同时存在,yield只能用在函数内

4.乘生气函数执行之后会得到一个迭代器作为返回值,不会执行函数体

5.执行__next__()方法后,才会执行函数体,获得返回值,

6.yield和return都可以返回值,但是yield不能结束函数,return可以。

1>yield方法创建一个生成器:

def genderator():
    print('sss')
    yield
    print('zzz')
g=genderator()
print(g)#返回一个迭代器
print(next(g))#调用next方法之后才会执行函数体,遇到yield停止执行程序。
#print(next(g))#报错,再次调用next,程序往下执行,找不到yield,系统崩溃,报错


结果:
<generator object genderator at 0x0000000001F56888>
ssss
None

2>yield 返回值

yield 返回值
def genderator():
    print('zzzz')
    yield 1
g=genderator()
ret=next(g)#yield 将  1 返回给ret
print(ret)

结果:
zzzz
1

 3>创建生成器,生产200万桶泡面

for会自动调用g迭代器的__next__()方法,将迭代器中的内容依次取出

def ksf():
    for i in range(1,2000000):
        yield '正在生产第{}桶泡面'.format(i)
g=ksf()
for pm in g:
    print(pm)


send()方法:

1.获取下一个值,效果和next基本一样

2.第一次使用生成器是,使用__next__传递第一个值,不能使用send(),最后一个也不能用send()

1>使用send()方法给yield传递参数

def gendera():
    print('aa')
    content=yield 1
 
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值