python 中關於 with 語句的使用

2021-10-09 12:56:23 字數 1134 閱讀 2141

python 中關於 with 語句的使用

with..

.as var:

pass

def

__enter__

(self)

:print

('begin'

)return self

def

__exit__

(self)

:print

('end'

)

python的標準庫contextlib簡化了上述的寫法,此物件不需要實現__enter__和__exit__方法只需要通過被contextmanager這個decorator裝飾的generator yield出去,with語句就可以正常使用:

from contextlib import contextmanager

@contextmanager

defcreate_obj

(ar**)

:print

('begin'

)# 生成乙個物件並yield出去

obj = class_name(ar**)

yield obj

print

('end'

)

例如:contextlib中的 closing模組

from contextlib import closing

from urllib.request import urlopen

with closing(urlopen(

''))

as page:

for line in page:

print

(line)

其實closing()也是乙個用contextmanager裝飾的generator

@contextmanager

defclosing

(thing)

:try

:yield thing

finally

: thing.close(

)

參考

關於Python中的for迴圈控制語句

第乙個 求 50 100 之間的質數 import math for i in range 50,100 1 for j in range 2,int math.sqrt i 1 if i j 0 break else print i 第二個 把else的位置與if處於同一縮排。import mat...

python中關於import語句的認識

python中從乙個模組執行另乙個模組的最簡單的方法就是用import語句,import語句會執行被呼叫模組裡面的主 而且import之後還可以用 操作符呼叫被呼叫模組裡的函式。現在舉個例子如下 a.py for i in range 3 import b b.showlist b.py print...

關於Python中的for迴圈控制語句

關於python中的for迴圈控制語句 第乙個 求 50 100 之間的質數 import math for i in range 50,100 1 for j in range 2,int math.sqrt i 1 if i j 0 break else print i 第二個 把else的位置...