return精髓理解:返回后函数实行结束
yield精髓理解:返回后函数实行停息
return和yield相同之处:

return和yield不同之处:
return:返回结果后,函数不再连续实行,彻底结束;只实行一次,函数结束
调用办法:函数() 直接实行函数
yield:返回结果后,函数不绝止,yield返回值后停息,再次调用时,在停息的地方连续实行;可实行多次,直到函数结束
表达式2种:
yield 1:返回1x = yield 1 :返回1,x可以吸收函数外部发送过来的数据。x = yield 1 的实行机制:先yield 1 返回1,停息。天生器表面碰着send(5),回到天生器实行x=5赋值,连续实行到yield 1返回1后,再停息调用办法3种:首先 w = 函数() 变成一个天生器工具,并把天生器赋值给 w。
调用办法1:利用 ret1 = next(w),获取返回值调用办法2:利用 ret2 = w.send(value)。获取返回值,还能发送值到 yield 吸收位置调用办法3:利用for循环,获取返回值。for循环自动调用next(w),并且自动处理了函数实行完成后的报错return形式
yield 调用办法1:next(w) 获取返回值
yield 调用办法1
yield 调用办法2:w.send(value) 获取返回值
w.send(value) 和 next(w)功能比拟
相同的是都实行到yield,返回之后停息不同的是w.send(value)可以发送内容到yield吸收位置,但第一次必须w.send(None)yield 调用办法2
现在详细讲解一下【yield调用办法2】模板的详细实行过程
1、定义一个带有参数的函数woman,放到内存定义一个while循环,当参数大于1时,实行循环,参数实行减1yield返回参数,v 接管外部发送过来的数据打印v2、w = woman(3) 天生一个天生器工具,并赋值w3、w.send(None),n=3,知足3>1的条件,3-1即是2 yield返回2,ret1=24、w.send(10),函数内部v=10赋值,实行print(v)打印10,连续while循环,目前n=2,知足2>1的条件,2-1即是1 yield返回1,ret2=15、w.send(11),函数内部v=11赋值,实行print(v)打印11,连续while循环,目前n=1,不知足条件,函数结束报错
yield 调用办法3:for循环 获取返回值
yield 调用办法3
现在详细讲解一下【yield调用办法3】模板的详细实行过程
1、定义一个带有参数的函数woman,放到内存定义一个while循环,当参数大于1时,实行循环,参数实行减1yield返回参数2、w = boy(3) 天生一个天生器工具,并赋值w3、for循环第一次,n=3,知足3>1的条件,3-1即是2 yield返回2,i=24、for循环第二次,n=2,知足2>1的条件,2-1即是1 yield返回1,i=15、for循环会自动处理不报错功能,以是运行结束