表示式版本的生成器

2022-05-25 02:27:11 字數 603 閱讀 1362

生成器的另一種形式:表示式

g=foo()

next(g)

g.send(1)

send是傳值的功能

send傳值之後才有執行的過程

如果出現了g.send(none)相當於next(g)

需要做乙個初始化的過程,也就是想send之前:

next(g)

g.send(2)

乙個擁有裝飾器的yield生成器

def zhuangshi(cent):

def neiceng():

g=cent()

next(g)

return

g

return

neiceng

@zhuangshi

def foo():

print(

'star')

while

true:

x=yield

print(x)

# foo().send(2)

g=foo()

g.send(

2)

這樣我們就可以免去了在使用生成器表示式時先進行next()的環節

生成器表示式

生成器 生成器本質是迭代器,允許自定義邏輯的迭代器 迭代器和生成器區別 迭代器本身是系統內建的.重寫不了.而生成器是使用者自定義的,可以重寫迭代邏輯 生成器可以用兩種方式建立 1 生成器表示式 裡面是推導式,外面用圓括號 2 生成器函式 用def定義,裡面含有yield 1 生成器表示式 gener...

生成器 表示式

1.什麼是生成器?生成的工具。生成器是乙個 自定義 的迭代器,本質上是乙個迭代器。2.如何實現生成器但凡在函式內部定義了的yield,呼叫函式時,函式體 不會執行,會返回乙個結果,該結果就是乙個生成器。yield 每一次yield都會往生成器物件中新增乙個值。yield只能在函式內部定義 yield...

生成器表示式

把列表推導式的換成 就是生成器表示式 示例 把生一筐雞蛋變成給你乙隻老母雞,這也是生成器的特性 chicken 雞蛋 s item for item in range 10 print chicken 生成器物件記憶體位址 print next chicken 雞蛋0 print next chic...