学习中遇到了Python的函数 yield , 经过百度和跑代码试验后得出了一点自己浅薄的见解,比较简单,方便理解,若有不足请指出
见解
yield 负责返回函数的返回值
调用后不结束函数,返回并记录了值,继续执行函数,直到下一次调用,在上一次返回值的基础上继续执行并返回,
直到不再调用.
试验代码
# 试验代码
def fab(ma):
n, b = 0, 1
while n < ma:
b += 1
yield b, n
b += 1
yield b
n += 1
for i in fab(5):
print(i)
# 结果值:
(2, 0) # 第一次调用, 返回 b+1的值 和 n 的值
3 # 第二次调用, 返回 b(1)+1 后再次 + 1 的值
(4, 1) # 第三次调用, 返回 b(3)+1的值 和 n(0)+1 的值
5 # 第四次调用, 返回 b (4)+1
(6, 2) # 第五次调用, 返回 b(5)+1的值 和 n(2)
7
(8, 3)
9
(10, 4)
11
从上面运行的结果可以看出,在调用yield 后函数有返回值, 并且函数并没有结束执行,而是继续执行下去
,b 的值也没有被抛弃,继续累加,直到函数运行结束为止.
函数只打印了一次 i 的值就把所有函数返回过的值打印了出来了.