Python小白学习之路(二十二)—【生成器】

 

一.什么是生成器?

生成器可以理解成是一种数据类型,特殊地是生成器可以自动实现迭代器协议
其他的数据类型需要调用自己内置的__iter__方法
所以换种说法,生成器就是可迭代对象

!回忆:很重要的迭代器协议

对象必须提供一个 next 方法,执行该方法要么返回迭代中的下一项,
要么就引起一个Stoplteration异常,以终止迭代(只能往后走不能往前退)


二.生成器的分类(两类)

python中生成器的表现形式
python中提供生成器的方式


一类是生成器函数;另一类是生成器表达式

 

第一类:关于生成器函数

  • 与常规函数定义相同。但是返回值时使用yield而不是return。
  • yield语句一次返回一个结果,可以进行多次返回(而return只能返回一次)
  • yield每次返回一个结果,在每个结果中间,挂起函数的状态(其实就是记住我函数执行到哪一行了)
复制代码
#举例:def test ():     yield 1 g = test()      #并不会执行test()函数,需要通过 g.__next__()方法来触发生成器函数执行print(g)  print(g.__next__())  #执行结果<generator object test at 0x0051AA70>1
复制代码

 

在说生成器表达式之前,补充三元表达式和列表解析

三元表达式:(顾名思义,就是有三个元素呗)

以前我们是这么写程序的:

复制代码
name = 'alex'if name == 'alex':     print('Ok') else:     print('Not ok')
复制代码


利用三元表达式我们是这么写程序的:

复制代码
name = 'alex' res = 'Ok' if name == 'alex' else 'Not ok'  #
                        
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信