零基础学python-19.9 生成器函数与生成器表达式

这一章节主要讨论生成器函数与生成器表达式的联系与区别。

1.联系

* 两者之间都是返回生成器。下面是示例代码

>>> g=(x for x in range(5))
>>> g
<generator object <genexpr> at 0x01E673F0>
>>> 


 

>>> def test():
	for x in range(5):
		yield x

		
>>> test()
<generator object test at 0x01E67440>
>>> 


* 两者都支持手动迭代或者自动迭代。下面是示例代码

>>> g=(x for x in range(5))
>>> next(g)
0
>>> for item in g:
	print(item)

	
1
2
3
4
>>> 


 

>>> def test():
	for x in range(5):
		yield x

		
>>> g=test()
>>> next(g)
0
>>> for item in g:
	print(item)

	
1
2
3
4
>>> 


2.不同

生成器函数它里面可以放置更多的,而且对于send的支持,个人认为函数比表达式来的容易,例如:

如果我想传一个参数到表达式或者函数里面进行运行,然后打印,这个时候表达式很难完成(暂时笔者没有想到表达式的实现,如果有读者能够实现,请告知,谢谢)。

下面只是给出函数的实现:

>>> def test():
	for x in range(5):
		y=(yield x)+2
		print(y)

		
>>> g=test()
>>> next(g)
0
>>> g.send (3)
5
1
>>> 


总结,这一章节主要说明了生成器函数与生成器表达式的联系与区别。

 

这一章节就说到这里,谢谢大家

------------------------------------------------------------------

点击跳转零基础学python-目录

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值