Python 中的生成器是一种特殊的函数,它可以返回一个迭代器对象,该对象可以在循环中动态地生成值,而不是一次性地返回所有的值。
生成器的好处是可以节省内存空间,提高性能,以及实现更优雅的编程风格。
要创建一个生成器,你需要使用 def 关键字定义一个函数,并且至少需要一个 yield 语句。
yield 语句是用来在函数中返回一个生成器对象,并且暂停函数的执行,直到下一次请求值时继续执行。
也可以使用生成器表达式来创建一个生成器对象,它类似于列表推导式,但是使用圆括号而不是方括号。
下面例子演示了如何使用生成器和 yield 语句来创建一个返回奇数的函数:
# 使用 yield
def odd_numbers_yield(n):
# 从 1 开始循环到 n
for i in range(1, n + 1):
# 如果 i 是奇数
if i % 2 == 1:
# yield 在循环内部,逐个返回 i
yield i
# 使用生成器表达式
odd_numbers_gen = (i for i in range(1, n + 1) if i % 2 == 1)
# 测试代码
n = 10
# 调用 yield 函数
result_yield = odd_numbers_yield(n)
# 打印结果
for x in result_yield:
print(x, end=" ")
print()
# 调用生成器表达式
result_gen = odd_numbers_gen
# 打印结果
for x in result_gen:
print(x, end=" ")
print()
输出:
1 3 5 7 9
1 3 5 7 9