Python學習17--生成器1
阿新 • • 發佈:2018-12-18
#Author:Du Yang #Data:2018/7/30 #列表生成 def f(n): return n**3 a = [f(x) for x in range(5)]#f(x)中的x必須與for後面的x相一致 print(a) #生成器的兩種形式 #1.只能是()形式的才是生成器 c = (x*x for x in range(5)) print(c)#<generator object <genexpr> at 0x000001CEDF1720F8> 生成器物件 b = next(c)#執行生成器,並且生成器只能逐個變數顯示,雖然有此缺點, # 但也成就其優點,即隨用隨生成,並且使用完自動釋放 print(b) d = next(c) print(d) for i in c: print(i)#觀察其結果即可直觀反映上述情況 #2.含有yiel的一定是生成器 def generate(): #21-30行內部讀取過程 1 4 print('diyici') # 5 yield 1 # 6 8 print("dierci") # 9 yield 2 # 10 s = generate() # 2 h = next(s) # 3 f = next(s) # 7 print(h) # 11 print(f) # 12 #總結: # 1.生成器的讀取方式有兩種:通過next(生成器),和 生成器.__next__(),但是後者很少或不許使用 # 2.yield表示生成器的返回值,類似於函式中的return # 3.生成器中是含有return的,只不過其返回值為NONE