Python:生成器函数,yield from

本文详细介绍了Python中的生成器,包括生成器函数与普通函数的区别、yield与return的不同行为,以及如何使用生成器进行无限循环、处理递归问题。此外,还探讨了协程的概念,指出其比进程、线程更轻量级,并介绍了Python3的asyncio库对协程的支持。最后,重点讲解了Python3.3新增的`yield from`语法,它是简化迭代器元素传递的高效方式。
摘要由CSDN通过智能技术生成

引入

生成器generator:生成器指的是生成器对象,可以由生成器表达式得到,也可以使用yield关键字得到一个生成器函数,调用这个函数得到一个生成器对象

生成器函数:

  • 函数体中包含yeild语句的函数,返回生成器对象
  • 生成器对象,是一个可迭代对象,是一个迭代器
  • 生成器对象,是延迟求值,惰性求值的

yield与return的比较

  • 遇到yield,函数就会让出此次操作,去执行函数体别的语句
  • return,直接打断函数的执行,返回结果

普通函数,生成器函数的比较

例子一: 单个yield,使用

def inc():
    for i in range(2):
        yield i
print(type(inc))
print(type(inc()))
x = inc()
print(type(x))
print(next(x))                #数值通过next()来调用
print(next(x))
print(next(x,"END"))          #取到最后没有元素,给个缺省值

结果:
<class 'function'>
<class 'generator'>
<class 'generator'>
0
1
END   
  • 普通函数调用使用fn(),
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值