详解python之yield和Generator实例代码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了详解python之yield和Generator实例代码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1617字,纯文字阅读大概需要3分钟。
内容图文
![详解python之yield和Generator实例代码](/upload/InfoBanner/zyjiaocheng/431/d0b4ce9df2034233b0376b118553adb5.jpg)
import math def is_Prims(number): if number == 2: return True //除2以外的所有偶数都不是素数 elif number % 2 == 0: return False //如果一个数能被除1和本身之外的数整除,则为合数。其实我们的判定范围到根号n就可以 for cur in range(2,int(math.sqrt(number))+1,2): if number % cur == 0: return False else: return True def get_Prims(input_list): result_list = list() for element in input_list: if is_Prims(element): result_list.append(element) return result_list aa = get_Prims([1,2,3,4,5,6,7,8,9]) print (aa)
但如果我们想给定一个数,然后列出比这个数大的所有素数呢?我们可能这样写:
def get_Prims(number): if is_Prims(number): return number
但是一旦return函数将控制权交给调用者后彻底结束,任何局部变量和函数工作都被丢弃,下一次调用又会从头开始。因此我们就可以用一下写法:
def get_Prims(number): while(True): if is_Prims(number): yield number number += 1 def get_numbers(): total = list() for next_prim in get_Prims(2): if next_prim < 100: total.append(next_prim) else: print(total) return get_numbers()
下面解释一下generator函数,一个函数的def代码里包含了yield,函数就自动成为了一个generator函数(及时仍包含有return),generator函数创建generator(一种特殊形式的迭代器,这个迭代器有一个内置next()方法),当需要一个值的时候通过yield来产生而不是直接return,因此与一般函数不同的是,此时控制权并未交出。
for循环会隐式的调用next()函数,next()函数负责调用generator中的next()方法,此时generator负责返回一个值给任何调用next()的方法,利用yield将此值传回去,相当于return语句。
以上就是详解python之yield和Generator实例代码的详细内容,更多请关注Gxl网其它相关文章!
内容总结
以上是互联网集市为您收集整理的详解python之yield和Generator实例代码全部内容,希望文章能够帮你解决详解python之yield和Generator实例代码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。