본문 바로가기
언어 정리/python_lib,일급함수

with 함수 ( __enter__, __exit__ )

by 알 수 없는 사용자 2022. 9. 19.

 

 

자원을 사용 할떈

1. 자원 획득

2. 자원 사용

3. 자원 반납

구조가 필요함.

 

1. __enter__ 일급함수

2. 자원 사용할 일반함수

3. __exit__ 일급함수

 

with 를 쓰면 일일히 자원 획득부터 반납까지(1 ~ 3) 단계를 쓸 필요가 없다.

자동으로 획득후 사용 , 사용다하고 스코프를 나가면 반납 함.

 

형식 : 

with 클래스명( ) as 네임:

    네임.자원함수()

 

예시 :

class Hello:
    def __enter__(self):
        # 사용할 자원을 가져오거나 만든다(핸들러 등)
        print('enter...')
        return self # 반환값이 있어야 VARIABLE를 블록내에서 사용할 수 있다
        
    def sayHello(self, name):
        # 자원을 사용한다. ex) 인사한다
        print('hello ' + name)

    def __exit__(self, exc_type, exc_val, exc_tb):
        # 마지막 처리를 한다(자원반납 등)
        print('exit...')

 

if __name__ ==  '__main__':
    with Hello() as h:
        h.sayHello('obama')
        h.sayHello('trump')

 

 

 

 

 

 

 

 

 

 

 

 

 

'언어 정리 > python_lib,일급함수' 카테고리의 다른 글

json_to_X, X_to_json  (0) 2022.10.25
unittest tutorial 개념 정리  (1) 2022.09.19
import contextvars 설명  (2) 2022.08.28
functools.partial() 정리  (0) 2022.08.17
PIL , 출력문 저장 lib(write,print,sys.out)  (0) 2022.08.04

댓글