파이썬은 LBYL 스타일 ( " 도약 전에보기 ")보다 EAFP 스타일 ( " 권한보다 용서를 구하는 것이 더 쉽다")을 권장한다고 들었습니다 . 나에게 그것은 효율성과 가독성의 문제입니다.
None
99 %의 시간이 예상되는 경우 (예 : 목록 또는 빈 문자열을 반환하는 대신 함수가 목록을 반환하거나result
실제로 반복 가능한 내용이 포함될try/except
접근법을 사용합니다 . 예외가 실제로 예외적 인 경우 더 빠릅니다. 경우 result
입니다 None
후 사용 시간의 50 % 이상이 if
아마 더 좋다.
몇 가지 측정으로이를 지원하려면 다음을 수행하십시오.
>>> import timeit
>>> timeit.timeit(setup="a=1;b=1", stmt="a/b") # no error checking
0.06379691968322732
>>> timeit.timeit(setup="a=1;b=1", stmt="try:\n a/b\nexcept ZeroDivisionError:\n pass")
0.0829463709378615
>>> timeit.timeit(setup="a=1;b=0", stmt="try:\n a/b\nexcept ZeroDivisionError:\n pass")
0.5070195056614466
>>> timeit.timeit(setup="a=1;b=1", stmt="if b!=0:\n a/b")
0.11940114974277094
>>> timeit.timeit(setup="a=1;b=0", stmt="if b!=0:\n a/b")
0.051202772912802175
따라서, if
성명서는 항상 비용이 들지만,try/except
블록 . 그러나 Exception
실제로 발생하면 비용이 훨씬 높습니다.
사기:
- 사용하기에 완벽하게 (그리고 "pythonic")
try/except
흐름 제어 하는 .
- 그러나 가장 의미가있는 경우
Exception
실제로 예외적 인 가 있습니다.
파이썬 문서에서 :
EAFP
허가보다 용서를 구하는 것이 더 쉽습니다. 이 일반적인 Python 코딩 스타일은 유효한 키 또는 속성이 있다고 가정하고 가정이 거짓으로 판명되면 예외를 포착합니다. 이 깨끗하고 빠른 스타일은 많은 사람들의 존재에 의해 특징
try
및 except
문. 이 기술
은 C와 같은 다른 많은 언어에 공통적 인 LBYL 스타일 과 대조 됩니다.