大家好,我是金魚座,一個走在測試領(lǐng)域這片藍(lán)海中, 蹉跎前行的技術(shù)渣渣,唯有一直走下去,也許能改變點什么,加油!
yield是作為一個生成器的重要標(biāo)志,在后面的很多地方都或多或少都會用到,特別是如果要學(xué)習(xí)一些框架代碼的時候,由于個人能力問題,對這類的東西一直一知半解,所以今天就把自己的了解做總結(jié)下
yield常見的使用法
# 第一種普通用法
def yield_1():
print("yield_1 start")
yield
print("yield_1:{}".format(c))
# 帶有返回值的用法
def yield_2(value):
print("yield_2 start")
yield value
print("yield_2:{}".format(c))
# 可以接收值的用法
def yield_3(value):
print("yield_3 start")
c = yield value
print("yield_3:{}".format(c))
- 在函數(shù)中增加yield,即可完成生成器的定義,這是絕對的,如上述代碼,
- yield中即可和普通的return一樣進(jìn)行值返回,也可以像方法參數(shù)一樣接收值的傳遞
如何執(zhí)行?
對于一個生成器必須使用next和send對其進(jìn)行喚醒操作,否則是不會自動進(jìn)入到方法中執(zhí)行
y = func()
y.send(None) or next(y)
如何傳值?
y.send(value) 該方法會將value值傳給yield_3中的 c, c會自動接收
如何返回值
g = next(y) or y.send(value2) 該方式可以讓g獲取y中的yield value中的value的值
目前來看最基本的三個方式就是上述三種,至于是否有其他的,暫時也沒有研究,先弄明白這些吧