Python中的生成器是一種特殊的變量類型,它可以讓程序員以一種延遲計算的方式逐步生成結果。相比于普通的列表或集合等容器類型,其可以大大降低程序的空間消耗,提高代碼的性能。
# 示例如下 def my_generator(): for i in range(5): yield i*i gen = my_generator() print(next(gen)) # 輸出 0 print(next(gen)) # 輸出 1 print(next(gen)) # 輸出 4 print(next(gen)) # 輸出 9 print(next(gen)) # 輸出 16
可以看出,生成器變量會在運行時才逐步生成值,而非一次性將所有結果存入內存,從而避免了大內存的占用和浪費。
在Python中,生成器又可分為兩種類型:迭代生成器和帶有 send() 方法的生成器。在使用時,需要注意它們的區別和使用方式。
# 迭代生成器 def my_generator(n): for i in range(n): yield i # 帶有 send() 方法的生成器 def my_generator(n): i = 0 while i< n: yield i i = yield i*2 # 帶有 send() 方法 # 示例代碼 gen1 = my_generator(5) gen2 = my_generator(5) for j in gen1: print(j) for k in gen2: if k == 2: print(gen2.send(7))
在代碼中,迭代生成器使用了 for 循環進行靜態迭代,而帶有 send() 方法的生成器可以動態修改生成器內部的計算過程。但無論哪一種生成器類型,其本質都是一種可迭代對象,可以使用逐一迭代的方式逐步生成結果。
上一篇vue中使用mqtt