從解釋器看with語句執(zhí)行流程
whit expression [as variable]:
with-block
-
as variable
可以省略 - 有一個(gè)句塊需要執(zhí)行
執(zhí)行with語句時(shí)候,解釋器先求出表達(dá)式的值秋麸,這個(gè)值是上下文管理器,擁有兩個(gè)類魔術(shù)方法:
def __enter___():
# 描述進(jìn)入上下文
pass
def __exit__():
# 描述退出上下文
pass
with 語句其實(shí)會(huì)先執(zhí)行init 方法創(chuàng)建這個(gè)對象炬太,創(chuàng)建完成后自動(dòng)執(zhí)行進(jìn)入方法灸蟆, 并將此對象賦值于as之后的變量,執(zhí)行語句塊亲族,然后退出上下文之前自動(dòng)執(zhí)行退出方法炒考。
參照文章
https://blog.csdn.net/lanhuazui10/article/details/120938353