本文共 760 字,大约阅读时间需要 2 分钟。
生成器是一种特殊的函数,它使用yield语句来产生值。在编程中,生成器非常有用,因为它们能在不影响主程序执行的同时,逐次生成大量数据。
让我们来看一个例子。以下是一个生成斐波那契数列的生成器函数:
def fibonacci(n): a, b, counter = 0, 1, 0 while True: if counter > n: return yield a a, b = b, a + b counter += 1
当我们调用这个函数并传入一个参数时,它会返回一个迭代器。例如:
f = fibonacci(10)
接下来,我们可以使用next()函数来逐步获取生成器的值。每次调用next(),生成器会执行到yield语句,然后暂停并返回当前的值。下一次调用时,它会从暂停的位置继续执行。
if __name__ == '__main__': while True: try: print(next(f), end=" ") except StopIteration: break
生成器有两个主要特点:
直接调用生成器函数会返回一个迭代器。这意味着生成器在第一次使用时会执行到第一个yield语句,并将初始值返回。
使用next()函数可以控制生成器的执行。当执行到yield语句时,生成器会将当前的执行状态保存,然后返回yield的值。下次调用next()时,生成器会从保存的状态继续执行。
生成器的这种设计模式在处理大型数据或资源密集型任务时特别有用,因为它可以在需要时逐次生成数据,而不会一次性占用过多内存。
转载地址:http://ibkb.baihongyu.com/