python實現可以被with上下文管理的類或函式

2021-10-19 17:34:03 字數 1123 閱讀 8856

開始之前先明確一下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 ...