본문 바로가기

Python

단축 평가(Short Circuit Evaluation) 이해하기

프로그래밍에서 '단축 평가(Short Circuit Evaluation)'는 논리 연산에서 효율성을 높이는 중요한 개념입니다. 이 글에서는 단축 평가가 무엇인지, 어떻게 작동하는지, 그리고 왜 중요한지에 대해 설명하겠습니다.

 

 

단축 평가란 무엇인가?

단축 평가는 논리 연산을 수행할 때, 전체 표현식의 결과가 이미 앞선 조건들로 결정될 수 있는 경우, 나머지 조건의 평가를 생략하는 방식을 말합니다. 이는 두 가지 주요 논리 연산자인 'AND'와 'OR'에 적용됩니다.

 

 

AND 연산의 단축 평가

AND 연산에서는 첫 번째 조건이 False로 평가될 경우, 전체 표현식의 결과가 False가 되기 때문에, 두 번째 조건은 평가하지 않습니다.

예를 들어, 파이썬에서 다음과 같은 표현식을 고려해 봅시다.

a = False
b = expensive_operation()
result = a and b

 

여기서 expensive_operation()은 비용이 많이 드는 연산을 수행하는 함수라고 가정합니다. a가 False이므로, 파이썬은 b의 값을 평가하지 않고 result에 바로 False를 할당합니다. 이로 인해 불필요한 연산을 피할 수 있습니다.

 

 

OR 연산의 단축 평가

반대로, OR 연산에서는 첫 번째 조건이 True로 평가될 경우, 전체 표현식의 결과가 True가 되므로, 두 번째 조건은 평가하지 않습니다.

 

a = True
b = expensive_operation()
result = a or b

 

이 경우, a가 True이므로, 파이썬은 b의 값을 평가하지 않고 resultTrue를 할당합니다.

 

 

단축 평가의 중요성

단축 평가의 가장 큰 이점은 성능 향상입니다. 불필요한 조건 평가를 생략함으로써 프로그램의 효율성을 높일 수 있습니다. 특히, 연산 비용이 높은 함수나 I/O 작업이 포함된 경우에 이점이 큽니다.

또한, 단축 평가는 특정 조건 하에서만 함수를 호출하거나 연산을 수행하고 싶을 때 유용합니다. 예를 들어, None 검사를 하고 속성에 접근하려 할 때 이를 활용할 수 있습니다.

if my_object is not None and my_object.some_property:
    # Do something