理解“的用法”;“虽然是真的”;在控制流Python生成器函数中

理解“的用法”;“虽然是真的”;在控制流Python生成器函数中,python,Python,我试图理解while True语句在下面的Python代码中的用法。它使用生成器,并显示在本节的“可视化流程”部分中 该代码是一个试图解决的示例。这里,我们使用起始值为3的get_primes。solve_number_10函数调用get_primes,直到到达最后一个高达2000000的质数 def solve_number_10(): # She *is* working on Project Euler #10, I knew it! total = 2 for next_

我试图理解
while True
语句在下面的Python代码中的用法。它使用生成器,并显示在本节的“可视化流程”部分中

该代码是一个试图解决的示例。这里,我们使用起始值为3的
get_primes
solve_number_10
函数调用
get_primes
,直到到达最后一个高达2000000的质数

def solve_number_10():
# She *is* working on Project Euler #10, I knew it!
    total = 2
    for next_prime in get_primes(3):
        if next_prime < 2000000:
            total += next_prime
        else:
            print(total)
            return

def get_primes(number):
    while True:
        if is_prime(number):
            yield number
        number += 1
为什么我们在没有
而true
语句的情况下到达生成器函数的末尾?我们到底需要声明什么为
?是不是
数字
少于2000000?我认为情况并非如此,因为
solve\u number\u 10
解决了这个问题。我不明白为什么生成器函数会在第二次迭代中结束,因为没有
while True
语句,如果距离
number
达到2000000还有很长的路要走

def solve_number_10():
# She *is* working on Project Euler #10, I knew it!
    total = 2
    for next_prime in get_primes(3):
        if next_prime < 2000000:
            total += next_prime
        else:
            print(total)
            return

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

如果有人能解释黄色引号中的粗体文字,我将不胜感激。谢谢大家!

它是一个应该返回许多值的生成器。如果没有循环或递归,则只能一次性返回。所以,虽然真的是无限的。你想叫多少次都可以。增量只是操作顺序的一种效果。当生成器隐式返回时,值的生成就结束了。当body用
包装,而True用
包装时,它永远不会隐式返回。