python에서 @context 관리자 실례 사용

1915 단어 python@contextmanager
python의 장식기에 대해 우리는 일반적으로 그것을 보조하는 방법을 사용한다.우리가 배운 상하문 관리자 중에는 @context 관리자 장식기가 있는데, 이것은 우리가 함수에서 상하문 관리자의 방법을 정의하고 코드의 간소화를 실현하는 데 도움을 줄 수 있다.다음은python에서 @context 관리자의 개념, 사용 주의, 실례를 공유합니다.

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 관리자가 어떤 내용인지 저희 이전의 글을 검색하거나 아래의 관련 글을 계속 훑어보십시오. 앞으로 많은 응원 부탁드립니다!

좋은 웹페이지 즐겨찾기