defone():
print('
one start')
res = yield
from
two()
print('
function get res:
', res)
return
'one
' +res
deftwo():
print('
two start')
res = yield
from
three()
print("
>>> two1")
return
resdef
three():
print("
>>> three1")
yield 1
print("
>>> three2")
return
'three'if
__name__ == '
__main__':
gen =one()
print("
>>> 1")
send_1 =gen.send(none)
print("
>>> 2")
(send_1)
print("
>>> 3")
send_2 =gen.send(none)
print("
>>> 4")
(send_2)
print("
>>> 5
")
執行結果:
>>> 1one starttwo start
>>>three1
>>> 2
1>>> 3
>>>three2
>>>two1
function get res: three
traceback (most recent call last):
file
"c:/users/administrator/desktop/1.py
", line 29, in
send_2 =gen.send(none)
stopiteration: onethree
>>>
不要把yield from 想的太複雜,就把yield from呼叫看作是普通函式呼叫來看**。一旦遇到yield會返回。再次send,特點和生成器一樣。
1、當send裡面的函式先遇到的是yield from語句,那麼會繼續往下呼叫,直到遇到yield會暫停並返回給呼叫方。
main->one()->two()->three->遇到yield- >main
2、遇到yield語句,會直接返回到send語句所在函式, 也就是send_1 = gen.send(none),send_1 賦值為 three()中的 yield 1
3、再次呼叫send語句,就會變成1的反向呼叫,從yield暫停的地方 three() 函式的 yield 1下面開始執行
three()->two()->one->main
4、yield from後面的函式返回值會得到,賦值給左值
three()的返回值會給two()的res,two()的返回值會給one()
**至
插入排序(簡單明瞭)
class test public static void insertsort int a int m 1 從陣列的第二個位置開始遍歷值 for j 1 j 0 a i key 跳出迴圈 找到要插入的中間位置或已遍歷到0下標 system.out.println system.out.print ...
初識 Inject 註解 簡單明瞭
inject 註解可以出現在三種類成員之前,表示該成員需要注入依賴項。按執行時的處理順序這三種成員型別是 1 構造方法 2 方法 3 屬性 在構造方法上使用 inject 時,其引數在執行時由配置好的ioc容器提供。比如,在下面的 中,執行時呼叫murmurmessage類的構造方法時,ioc 容器...
簡單明瞭的SQL建立語句
1.建立資料庫sql語句 use master goif exists select from sysdatabases where name commonpermission begin select 該資料庫已存在 drop database commonpermission 如果該資料庫已經存...