본문 바로가기
Python/Python FAQ

Python assert를 사용하는 가장 좋은 방법은 무엇인가요?, Best practice for using assert?

by 베타코드 2023. 9. 14.
반응형

질문


  1. assert를 디버깅 용도로만 사용하는 대신 표준 코드의 일부로 사용하는 것은 성능 또는 코드 유지 관리 문제가 있습니까?

    어떤 것이 더 좋은가요?

    assert x >= 0, 'x is less than zero'
    

    아니면

    if x < 0:
        raise Exception('x is less than zero')
    
  2. 또한, 항상 확인되는 if x < 0 raise error와 같은 비즈니스 규칙을 try/except/finally 없이 설정하는 방법이 있습니까? 따라서 코드 전체에서 언제든지 x가 0보다 작으면 오류가 발생하도록 설정할 수 있습니다. 예를 들어 함수의 시작부에 assert x < 0을 설정하면 함수 내에서 x가 0보다 작아지는 모든 곳에서 예외가 발생합니까?


답변


어설션은 결코 발생하지 않아야 하는 조건을 테스트하는 데 사용되어야합니다. 목적은 손상된 프로그램 상태의 경우 초기에 충돌하도록하는 것입니다.

예외는 상상할 수있는 오류에 사용되어야하며, 거의 항상 자체 예외 클래스를 만들어야합니다.


예를 들어, 구성 파일에서 dict로 읽어오는 함수를 작성하는 경우 파일의 부적절한 형식은 ConfigurationSyntaxError를 발생시켜야하지만 None을 반환하지 않을 것을 assert 할 수 있습니다.


예를 들어, x가 사용자 인터페이스 또는 외부 소스에서 설정 된 값인 경우 예외가 가장 적합합니다.

만약 x가 동일한 프로그램에서만 코드로 설정된 경우 어설션을 사용하십시오.

반응형

댓글