yield:在调用生成器运行的过程中,每次遇到 yield 时函数会暂停并保存当前所有的运行信息,返回 yield 的值,并在下一次执行 next() 方法时从当前位置继续运行。
import math
def get_primes(number):
n=1
while True:
if n>number:
return
if is_prime(n):
yield n #储存素数
n+=1
def is_prime(number):
if number == 1:
return False
if number == 2:
return True
for i in range(2,int(math.sqrt(number)+1)): #有算法支持,如不了解此算法,范围取值可写(2,num//2+1),只是增大计算机的一些工作量,最后的结果是一样的
if number%i ==0:
return False
return True
if __name__ == '__main__':
f=get_primes(100)
while True:
try:
print(next(f))
except:
print('结束')
break