python에서 @context 관리자 실례 사용
1915 단어 python@contextmanager
1. 개념
contextlib 모듈에서 제공하는 장식기입니다. 함수를 상하문 관리로 표시하기 위해 클래스나 단독 __를 만들 필요가 없습니다.enter__() 메서드 및 __exit__() 방법은 상하문 관리를 실현할 수 있다.
2. 주의
장식기 @context 관리자의 진정한 사용법은 상하문 관리자를 간소화하는 것이 아니라 상하문 관리자를 정의하는 방법이다. 원래 상하문 관리자가 아닌 클래스를 상하문 관리자로 바꾸는 것이다.
3. 인스턴스
from contextlib import contextmanager
import time
@contextmanager
def demo(label):
start = time.time()
try:
yield
finally:
end = time.time()
print('{}: {}'.format(label, end - start))
with demo('counting'):
n = 10000000
while n > 0:
n -= 1
# counting: 1.32399988174
위의 예를 보면 함수에서 yield 이전의 모든 코드는 상하문 관리자의 __와 유사합니다enter__방법의 내용.yield 이후의 모든 코드는 __exit__방법의 내용.실행 중 이상이 발생하면 yield 문장에서 촉발됩니다.인스턴스 확장:
인스턴스 1:
from contextlib import contextmanager
class File():
def query(self):
print(' ')
@contextmanager
def open():
print(' ')
yield File()
print(' ')
with open() as f:
f.query()
#
인스턴스 2:
from contextlib import contextmanager
class DataBase():
def query(self):
print(' ')
@contextmanager
def open(self):
try:
yield
self.commit()
except Exception as e:
self.rollback()
raise e
db = DataBase()
with db.open():
db.query()
이는python에서 @context 관리자의 실례적인 사용법에 관한 글을 소개합니다. 더 많은 관련python에서 @context 관리자가 어떤 내용인지 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.