Python知识记录
yield的使用
今天观看了大神对yield的理解,帮助大,以此记录。
若在函数中出现了yield ,刚开始可以理解为一个return,但注意的是:
- 创建好调用函数对象后,函数不会立即执行,而是在使用next()函数后才开始执行;
- 在第一次遇到yield时,看作return返回,函数到此结束,方便理解我们在此打一个断点;
3.后续的过程中若再次执行next(),返回断点不执行,顺移至下一步执行,此时要注意上次被看做return的值此时变为None,除非调用了send()函数赋值; - 执行函数直到又碰到yield ,循环往复;
// An highlighted block
def foo():
print("starting...")
while True:
res = yield 4
print("res:",res)
g = foo()
print(next(g))
print("*"*5)
print(next(g)) #print(g.send()5)
*******************
starting...
4
*****
res: None #res:5
4