Python生成器是一种特殊的迭代器,它允许你在函数中使用yield
关键字返回一个序列的值,而不是像普通的函数那样使用return
。生成器的主要功能包括:
- 惰性计算:生成器在每次迭代时只计算一个值,而不是一次性计算整个序列。这可以节省大量的内存和计算资源,特别是在处理大型数据集时。
def fibonacci(n): a, b = 0, 1 for _ in range(n): yield a a, b = b, a + b
- 无限序列:生成器可以创建无限序列,例如斐波那契数列、平方数序列等。
def infinite_sequence(): i = 0 while True: yield i i += 1
- 简化代码:生成器可以使代码更简洁,更容易理解。例如,你可以使用生成器表达式代替列表推导式。
squares = (x * x for x in range(10))
- 暂停和恢复执行:生成器在执行过程中可以随时暂停和恢复,这使得它们在处理I/O密集型任务时非常有用。
def read_file(file_path, block_size=1024): with open(file_path, 'r') as file: while True: data = file.read(block_size) if not data: break yield data
- 自定义迭代逻辑:生成器可以让你在迭代过程中自定义逻辑,例如过滤、转换等。
def filter_even_numbers(numbers): for number in numbers: if number % 2 == 0: yield number
总之,Python生成器提供了一种高效、简洁的方法来处理大量数据和复杂迭代逻辑。