2014-01-07 3 views
2

일부 조건이 만족스럽지 않으면 종종 파이썬 코드가 죽는 것을 원합니다. 나는 보통 assert whatever()을 사용한다. 그러나 때로는 __debug__False과 같습니다. 이러한 경우에도 내가 확인하고 싶은 주장과 같은 조건이 있습니다. 나는이 경우를 다루는 "올바른"방법이 단골 일 것이라고 생각한다 : if not whatever(): raise Exception('Error message!'). 다시 말해, 시간이 많이 걸리는 작업이나 여러 번 실행되는 작업을 수행하지 않고도 수행 할 수있는 체크에 어설 션을 사용하는 것이 맞다고 생각합니다. 전체 조건부와 동일한 작업을 수행하는 데 더 간결한 방법이 있습니까?Python의 간결한 오류 검사

Perl에서 나는 단지 whatever() or die을 사용합니다. 물론 언어 간의 철학적 차이점을 감안할 때 Perl이 더 적은 수의 문자를 필요로하는 것을 보는 것은 놀랄 일이 아닙니다.

def confirm(expression): 
    if not expression: 
     raise AssertionError 

다음, 대신 assert whatever()를 사용하는 대신 confirm(whatever())을 할 수있는 : 당신이 할 수

+1

'def die (왜) : raise Exception (why)'의 문제점은 무엇입니까? 그런 다음 'whatever() 또는 die ('깨진 것이 무엇이든간에) '로 사용하십시오. – mgilson

+0

그래서 __ debug __ = False를 지정해도 여전히 코드가 죽기를 원하십니까? 그렇다면 sys.exit()를 수행 할 수 있습니다. 조건이 충족되면 (또는 충족하지 않으면 원하는대로) sys.exit()를 수행 할 수 있습니다. – astromax

답변

0

한 가지 어설의 자신의 버전을 만드는 것입니다. Truedie()가 (때문에 부울 단락에) 실행되지 않습니다

def die(): 
    raise Exception() 

whatever() or die() 

whatever()하면 반환, 프로그램 즐겁게 마시기 것입니다 : 당신이 펄을 모방하려는 경우

또는 다음을 수행 할 수 떨어져. whatever()False을 반환하면 프로그램이 종료됩니다.

기술적으로 이것은 2 자 이상이며 perl이지만 died으로 바꿀 수 있으며 결국 같은 양의 글자를 쓸 수 있습니다.

나는 이것이 일을하는 Pythonic 방식이 아니라는 것을 확신하지만, 당신이 그것을 선호한다면, 옵션을 사용할 수 있습니다.