Logo
내 게시판 만들기
파이썬

EAFP — 「하고 나서 사과하기」 스타일

곰돌이 | 2026.04.27 06:20:20
조회 10 | 추천 0

EAFP(Easier to Ask for Forgiveness than Permission, 「허락보다 용서가 쉽다」)는 파이썬 코드의 대표적 스타일입니다.

「먼저 시도해 보고, 안 되면 예외로 처리한다」는 발상으로, 다른 언어의 「조심스럽게 미리 검사하고 시도」 스타일(LBYL)과 대비됩니다.



두 스타일 비교.

LBYL(Look Before You Leap, 「뛰기 전에 살펴라」): if key in dict: value = dict[key]; else: value = default.

EAFP: try: value = dict[key]; except KeyError: value = default.

같은 일을 다른 식으로 표현합니다.



EAFP가 파이썬에서 권장되는 이유.

1) 「경합 조건(race condition)」 회피 — 검사와 사용 사이에 상태가 바뀔 수 있음.

2) 코드가 더 짧음 — 정상 흐름이 메인이고 예외만 처리.

3) 더 직관적 — 「뭘 하려는지」가 먼저 보임.

4) 일부 경우 빠름 — 검사 단계가 사라짐.



실제 예시.

파일 열기: try: f = open("data.txt"); except FileNotFoundError: f = create_default_file().

속성 접근: try: value = obj.attr; except AttributeError: value = None — 또는 value = getattr(obj, "attr", None)으로 더 짧게.



단, 항상 EAFP가 답은 아닙니다.

1) 예외가 너무 자주 발생하면 비용 큼(예외 자체의 처리 비용).

2) 「확실히 검사할 수 있는」 경우(예: 입력 검증)는 LBYL이 더 명료.

3) 다중 검사가 복잡해지면 한 검사로 묶는 게 깔끔.

EAFP는 「기본 스타일」이지만 상황에 맞게 LBYL과 균형을 잡습니다.




한 줄 요약


EAFP는 「먼저 시도하고 예외로 처리」하는 파이썬다운 스타일이며, LBYL은 「미리 검사하고 시도」하는 보수적 스타일입니다.

파이썬은 EAFP를 권장하지만 둘의 균형이 중요합니다.




더 알아볼 것


- dict.get vs try/except

- 파일 처리에서의 EAFP

- EAFP의 성능 함정

공유하기
목록보기
번호 제목 글쓴이 작성일 조회 좋아요
101 별님이 26/04/27 13 0
100 부엉이 26/04/27 11 0
99 다람쥐 26/04/27 14 0
98 야옹이 26/04/27 15 0
97 구름이 26/04/27 18 0
96 곰돌이 26/04/27 15 0
95 부엉이 26/04/27 10 0
94 햇살이 26/04/27 9 0
93 멍뭉이 26/04/27 9 0
92 별님이 26/04/27 12 0
91 다람쥐 26/04/27 10 0
90 부엉이 26/04/27 26 0
89 구름이 26/04/27 8 0
88 토순이 26/04/27 13 0
87 토순이 26/04/27 10 0
86 햇살이 26/04/27 10 0
85 구름이 26/04/27 12 0
84 햇살이 26/04/27 13 0
83 야옹이 26/04/27 16 0
82 너구리 26/04/27 12 0
81 햇살이 26/04/27 8 0
80 토순이 26/04/27 26 0
79 다람쥐 26/04/27 12 0
78 야옹이 26/04/27 9 0
77 부엉이 26/04/27 10 0
76 별님이 26/04/27 10 0
75 햇살이 26/04/27 14 0
74 곰돌이 26/04/27 10 0
73 구름이 26/04/27 13 0
72 햇살이 26/04/27 6 0
신고하기

신고 사유를 선택해 주세요.