開始之前先明確一下with機制
1.類包函式__enter__()
和__exit__()
函式,即是可以被上下文管理的類
__enter__
用來執行with時的方法,__exit__
返回物件給with的as 物件
2.通過函式實現要用到contextmanager裝飾器與yield關鍵字
一、通過類來實現支援whith上下文管理功能
classfp(
object):
def__init__
(self, fileobj, mode)
: self.fileobj =
open
(fileobj, mode)
def__enter__
(self)
:return self.fileobj
def__exit__
(self,
type
, value, traceback)
: self.fileobj.close(
)return
true
with fp(
"abc1.txt"
,"w+"
)as fi:
fi.write(
"測試上下文管理器"
)
二、通過函式yield關鍵字實現
'''
'''from contextlib import contextmanager
@contextmanager
deffp
(fileobj, mode)
: f =
open
(fileobj, mode)
yield f
f.close(
)with fp(
"abc2.txt"
,"w+"
)as fi:
fi.write(
"context測試上下文管理器"
)
用以上兩種方法來實現相同的功能 python實現可以被with上下文管理的類或函式
開始之前先明確一下with機制 1.類包函式 enter 和 exit 函式,即是可以被上下文管理的類 enter 用來執行with時的方法,exit 返回物件給with的as 物件 2.通過函式實現要用到contextmanager裝飾器與yield關鍵字 一 通過類來實現支援whith上下文管理...
實現什麼介面的類例項可以被foreach
被乙個哥們問到了,感覺應該是ienumerator,或者是ienumerable,但是不能確定,只有鄙視自己一下先,然後做了個試驗才確定了,只要實現了ienumerable介面就可以被foreach了,ienumerator介面是不需要實現的,只要這個類能夠通過getenumerator方法返回乙個...
python 元組的元素的元素可以被修改
python的元組與列表類似,不同之處在於元組的元素不能修改。元組使用小括號,列表使用方括號。元組建立很簡單,只需要在括號中新增元素,並使用逗號隔開即可。假設元組的第3個元素是乙個字典,字典整體是不可以被修改的,但是字典裡面的元素是可以被修改的。usr bin env python3 coding ...