Python生成器28 Aug 2025 | 4 分钟阅读 Python 生成器是一种特殊的函数,它返回一个迭代器对象。它不返回一个值,而是使用 yield 来随时间推移产生一系列值,每次 yield 语句后都会暂停,并在迭代之间保持其状态。 生成器非常节省内存,这意味着它们一次只创建一个项,并且使用了 yield 关键字。 让我们来看一个 Python 中生成器的简单示例 示例立即执行输出 1 2 3 4 5 说明 在上面的代码中,定义了一个 generate_numbers 函数,它接受一个 limit 作为参数,该函数在函数范围 1 到 limit + 1 中执行 for 循环,并生成数字。该函数以 limit 值为 5 调用,并打印生成的 值。 如何在 Python 中定义生成器?创建生成器非常容易,只需定义一个函数,该函数在函数中至少有一个 yield 语句。当调用函数时,它不会返回单个值,而是返回一个生成器对象,而生成器对象是一个迭代器。下面是 Python 中定义生成器的标准语法。 语法 示例立即执行输出 1 2 3 说明 示例中的代码定义了一个名为 'number_generator' 的生成器函数,它借助 for 循环一次生成列表 [1, 2, 3] 中的值。每次调用生成器函数都会提供序列中的下一个值,并且可以更节省内存,因为它以惰性方式迭代数据。 Yield 和 Return 之间的区别yield 语句在生成器函数中使用,用于随时间推移生成一系列值。当 yield 语句执行时,它会暂停函数的运行,返回这些值,并保存函数的状态,因此当以后恢复时,它将从中断的地方继续。这对于高效处理大型或复杂的数据流特别有用。 另一方面,return 语句会立即给出结果,并返回一个最终的单个值。函数在调用 return 语句时将结束,局部状态不会被保留,这在函数只需要返回一个结果时很有用。 示例立即执行输出 6 说明 calculate_total() 函数根据 Python 内置的 sum() 函数创建一个数字列表来添加这些数字。该函数会计算总和并显示。这种方法简单易懂,并且可以快速更新以使用更多值。 Python 生成器表达式生成器表达式使生成器更加紧凑。它们类似于列表,但使用圆括号而不是方括号,并且更节省内存。Python 中生成器表达式的语法是 示例立即执行输出 1 4 9 16 25 说明 该代码使用生成器表达式生成给定数字的平方。生成器一次只生成一个平方值,该值在循环时显示。这在内存方面效率很高,因为它不会将整个列表都存储在内存中。 生成器在 Python 中的应用
结论在 Python 中,生成器是处理大型数据集和生成复杂结果序列的绝佳方法。yield 语句使函数能够生成一个结果,同时在迭代之间保持其状态。这在处理大型文件或生成无限序列(如斐波那契数)时非常有用。与仅返回结果的函数相比,生成器更具优势,因为生成器可以用更少的内存生成更多数据,在给定的时间间隔内一次生成更多值。 Python 生成器选择题1. Python 生成器的主要目的是什么?
答案:c) 使用迭代惰性地生成一系列值 2. 在 Python 中定义生成器使用哪个关键字?
答案:d) yield 3. 调用 Python 生成器函数时返回什么?
答案:c) 生成器对象 4. 下面关于 yield 关键字的陈述中,哪一个是 TRUE?
答案:a) 它会暂停函数并保存其状态 5. 下列代码的输出是什么?
答案:b) 10 20 下一主题Python 多进程 |
我们请求您订阅我们的新闻通讯以获取最新更新。