Python3 生成器

Posted warms

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python3 生成器相关的知识,希望对你有一定的参考价值。

1、协同程序

协同程序就是指一个函数可以暂时挂起,并在需要的时候回到程序离开的地方继续执行

2、怎样将一个函数变为生成器

一般函数结束于return语句、异常或者函数语句全部执行完毕,结束时数据全部丢失,再次使用函数得从头再来

可以用yield语句 取代return语句,从而函数改造成生成器,是再次需要该函数的时候可以回到离开的地方继续执行

def get_primes(number):
    while True:
        if is_prime(number):
            yield number
        number += 1

这是一个素数的生成器 

while True:的作用是使函数不会执行到最后

例子:

用生成器实现reversed()功能

def myRev(data):
    # 这里用 range 生成 data 的倒序索引
    # 注意,range 的结束位置是不包含的
    for index in range(len(data)-1, -1, -1):
        yield data[index]
def MyRev(seq):
    index=-1
    print("到这")
    while True:
        try:
            yield seq[index]
            print("循环内")
            index-=1
        except IndexError:
            return StopIteration

就算2000000以内的素数之和

mport math
def get_prime(number):
    while True:
        if is_prime(number):
            yield number
        number+=1


def is_prime(num):
    if num>1:
        if num == 2:
            return num
        else:
            for i in range(3,int(math.sqrt(num) + 1),2):
                if num%i==0:
                    return False
            return True
    return False    
    
totle=0

for i in  get_prime(1):
    if i<2000000:
        print(i)
        totle+=i
    else:
        break
    
        
    

 

以上是关于Python3 生成器的主要内容,如果未能解决你的问题,请参考以下文章

scrapy按顺序启动多个爬虫代码片段(python3)

postman 自动生成 curl 代码片段

postman 自动生成 curl 代码片段

python常用代码片段总结

Apollo Codegen 没有找到生成代码的操作或片段

前端开发工具vscode如何快速生成代码片段