这期内容当中小编将会给大家带来有关如何在python3.6项目中使用收益率生成器,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。
定义一个函数测试(),看看返回的效果
def 测试(n): for 才能小姐:拷贝范围(n): ,,return 我 ,,,print(& # 39;马克# 39;)
测试结果
for 小姐:拷贝范围(5): 打印才能(测试(3))
输出
0
引用>
0
0
0
0每次调用函数时碰到返回就自动结束了,返回当前我值
再来看看产生的效果:
def test2 (n): for 才能小姐:拷贝范围(n): ,,,油品收率 ,,,print(& # 39;马克# 39;)测试
for 小姐:拷贝范围(5): 打印才能(test2 (3))输出
& lt;发电机对象test2 (0 x12d245200>
引用>
& lt;发电机对象test2 (0 x12d245200>
& lt;发电机对象test2 (0 x12d245200>只要函数中含有收益,python就会默认这个函数是一个生成器,这个测试相当于重复打开了三次生成器
生成器需要用<代码> next() 代码>调用
测试
t =, test2 (3) for 小姐:拷贝范围(3): 打印才能(& # 39;i=& # 39;,我) 打印才能(next (t))下(t)等同于t.__next__ ()
结果
=0
引用>
0
i=1
标记
1
=2
标记
2可以看的到,第一次返回<代码> i=0 代码>之后,第二次再调用函数时,从<代码>产量我> 代码的下一步继续,即<代码>打印(& # 39;马克# 39;)代码>。
生成器还支持用<代码>发送()代码>将值传递进函数:
def test3 (): value 才能=,(油品收率1) 打印才能(值) 打印才能(& # 39;mark1& # 39;) value 才能=,(油品收率值) 打印才能(值) 打印才能(& # 39;mark2& # 39;)测试
t2 =, test3 () print (t2.__next__ ()) 打印(& # 39;- - - - - - - - - - - - - - - - - # 39;) 打印(t2.send (2)) 打印(& # 39;- - - - - - - - - - - - - - - - - # 39;) 打印(t2.send (3)输出
1
- - - - - - - - - - - -
2
mark1
2
- - - - - - - - - - - -
3
mark2
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
StopIteration ,,,,,,,,,,,,,,,,,,,,,,,,,,,回溯(去年)最近调用
& lt; ipython -输入- 102 - 56 - e62df29d71>在& lt; module> ()
,,,,,4打印(t2.send (2)
,,,,,5打印(& # 39;- - - - - - - - - - - - - - - - - # 39;)
- - - - -在6打印(t2.send (3)抛出StopIteration:
引用>第一次next()返回1,并在当前停止,发送(2)会将2传输给当前停止的那一步处,即相当于<代码> value=https://www.yisu.com/zixun/(收益率1)代码>变为<代码> value=https://www.yisu.com/zixun/(2) 代码>
然后继续运行
打印(值) 打印(& # 39;mark1& # 39;) value =,(油品收率值)碰到收益率再次停止,返回此时的vlue值2,之后<代码>发送(3)代码>将3传输给当前停止那一步处,即第二个<代码>屈服值> 代码处,继续运行
打印(值) 印刷(& # 39;mark2& # 39;)上述就是小编为大家分享的如何在python3.6项目中使用收益率生成器了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注行业资讯频道。
如何在python3.6项目中使用收益率生成器