[Python] else의 공통 의미론에 대한 생각

Humpback Whale·2024년 2월 25일
0

python

목록 보기
2/2

파이썬 구문에는 else 가 존재한다.

조건문(if), 반복문(for/while), 예외처리문(try/except) 등에서 else를 같이 사용할 수 있다.

python에 대한 많은 도서에서 else를 사용할 수 있는 구문에 대한 설명들을 보았을 때, else의 의미론적 공통점이 없다고 느꼈다.

예를 들어 다음과 같다.

  • if 문에서 else는 해당하는 조건이 없을 때 실행됩니다.
  • for/while 문에서 else는 break가 실행되지 않았을때 실행됩니다.
  • try/except 문에서 else는 except가 실행되지 않았을 때 실행됩니다.

등이다.

마치 else는 각 구문에 따라 달라지며 공통된 의미론이 존재하지 않으며 각 구문에 따라 else의 용법을 달리 생각해야 한다고 느껴진다.

그러나 그렇지 않다고 생각한다. 만일 파이썬이 잘 만들어진 언어라면, else에 대해서도 세가지 모두의 구문에서 공통된 의미론이 존재해야 하며, 그렇지 않을 경우 else가 아닌 다른 구문이 존재했어야 한다고 생각한다.

파이썬은 잘 만들어진 언어라고 생각한다. 그리고 그랬으면 좋겠다.
그렇기에 내 나름대로 else의 공통된 의미론에 대해 기록해 보고자 한다.

else의 의미론은 '적용하는 구문에서 발생하는 핵심 이벤트의 미발생'이라 생각한다.

조건문을 살펴보자.
조건문 사용에 대한 핵심 이벤트는 참(True)인 조건 이다.
반복문을 살펴보자.
반복문의 핵심 이벤트는 반복의 중단점이다.
예외처리문을 살펴보자.
예외처리문의 핵심 이벤트는 예외의 발생이다.

이러한 관점에서 살펴보면 각 구문에서 사용하는 else의 공통 된 의미를 부여할 수 있다.

조건문의 의미관점에서 핵심 이벤트는 참인 조건을 찾기위한 것이기에, else 문이 실행된다는 것은 조건문의 핵심 이벤트가 발생하지 않았음을 의미한다.

반복문의 의미관점에서 핵심 이벤트는 반복의 중단점을 찾기 위한 것이므로 else문이 실행된다는 것은 반복문 구문내에 break라는 중단 이벤트가 발생하지 않았음을 의미한다.

예외처리문의 의미관점에서 핵심 이벤트는 예외를 잡아내는 것이기에 else문이 실행된다는 것은 해당 구문에서 예외가 발생하지 않았음을 의미한다.

이러한 관점에서 else문을 바라볼 경우 한 문맥으로 else를 이해할 수 있는 방법 중 하나가 될것이라 생각한다.

과연 각 케이스마다 else에 서로다른 의미를 부여하여 케이스스터디로 다루어야 하는가?

0개의 댓글