파이썬 IF문 한 줄로 표현하기(삼항 연산자)
개발을 하다 보면 수만은 IF문(조건문)을 사용하게 된다.
복잡한 IF문의 경우 여러 줄(Line)로 표현하여 가독성이 좋을 수 있다. 다만, 그 수만은 IF문 중 매우 단순한 IF문들이 존재하고 있다.
이때도 간단한 IF문 조차 여러 줄로 표현보다는 한 줄(one-line)로 표현한다면 코드(Code)도 줄이고 간결하게 사용할 수 있다.
또한, 다른 개발언어의 경우(C++, Java 등)의 경우 삼항 연산자가 존재하며 삼항 연산자는 한 줄로 IF문과 같은 조건문 작성할 수 있다.
파이썬에서는 기본적으로 제공하는 기능은 아니나, 삼항 연산자처럼 사용할 수 있으며, 특히 함수(Function)의 결과값(Retrun)을 반환하는 경우 여려 줄의 IF문보다는 한 줄로 표현한다면 매우 간결하게 마무리할 수 있다.
그렇다면 IF문을 한 줄로 어떻게 표현하는지 알아보도록 하자.
1. if 문
IF문의 경우는 일단 기본 IF문이다.
사실 IF문의 경우는 두 가지의 구문에 차이도 없으며, 딱히 한 줄로 하지 않아도 큰 가독성이나 간결함이 차이가 나지 않는다.
# 1.ex_if.py
# -*- coding: utf-8 -*-
animal = 'dog'
cat = 'cat'
dog = 'dog'
ret = None
# 1. if 문 #
if animal is dog:
ret = dog
print("Default: " + ret)
if animal is dog: ret = dog
print("One-Line: " + ret)
[output]
Default: dog
One-Line: dog
2. if - else 문
if - else문인 경우 조건식에 의해 True(참) 이거나 False(거짓)으로 결과값을 반환하게 된다.
그럼 기본적인 구문과 한 줄로 표현하는 구문의 차이를 알아보도록 하자.
- 결과 = A if 조건 else B
기본 if - else문과는 다르게 한 줄 표현 방법은 결과값(결과)에 조건값이 True(참)이면 A를 False(거짓)이면 B를 반환하도록 할 수 있다.
아래 예제를 한번 살펴보도록 하자.
# 2.ex_if-else.py
# -*- coding: utf-8 -*-
cat = 'cat'
dog = 'dog'
ret = None
# 2. if - eles 문 #
animal = 'cat'
if animal is dog:
ret = dog
else:
ret = cat
print("Default: " + ret)
ret = dog if animal is dog else cat
print("One-Line: " + ret)
# animal 변수값 변경 #
animal = 'dog'
if animal is dog:
ret = dog
else:
ret = cat
print("Default: " + ret)
ret = dog if animal is dog else cat
print("One-Line: " + ret)
[output]
Default: cat
One-Line: cat
Default: dog
One-Line: dog
결과값을 보면 같은 결과를 반환하는 것을 알 수 있다.
기본적인 if - else는 4줄로 작성되었으나, 동일 조건문을 한 줄로 표현이 가능하다.
표현 방법은 다르지만 해당 부분에 익숙해진다면 훨씬 빠르고 간결하게 작성을 할 수 있다.
3. if - elif - else 문
그럼 2번처럼 간단한 if - else문이 아닌 if - elif - else와 같이 여러 중첩의 조건문이 있는 경우도 가능하다.
다만, 특정 조건 혹은 조건의 갯수가 많은 경우 가능하면 기본적으로 사용하는 if - elif - else문을 사용하는 게 더 가독성이 좋다.
그럼 기본적인 구문과 한 줄로 표현하는 구문의 차이를 알아보도록 하자.
- 결과 = A if 조건 else B if 조건 else C
아래 예제를 한번 살펴보도록 하자.
# 3.ex_if-elif-else.py
# -*- coding: utf-8 -*-
cat = 'cat'
dog = 'dog'
cow = 'cow'
ret = None
# 3. if - elif - eles 문 #
animal = 'cow'
if animal is dog:
ret = dog
elif animal is cat:
ret = cat
else:
ret = cow
print("Default: " + ret)
ret = dog if animal is dog else cat if animal is cat else cow
print("One-Line: " + ret)
# animal 변수값 변경 #
animal = 'cat'
if animal is dog:
ret = dog
elif animal is cat:
ret = cat
else:
ret = cow
print("Default: " + ret)
ret = dog if animal is dog else cat if animal is cat else cow
print("One-Line: " + ret)
# animal 변수값 변경 #
animal = 'dog'
if animal is dog:
ret = dog
elif animal is cat:
ret = cat
else:
ret = cow
print("Default: " + ret)
ret = dog if animal is dog else cat if animal is cat else cow
print("One-Line: " + ret)
[output]
Default: cow
One-Line: cow
Default: cat
One-Line: cat
Default: dog
One-Line: dog
역시나 결과값을 보면 같은 결과를 반환하는 것을 알 수 있다.
기본적인 if - elif - else는 6줄로 작성되었으나, 동일 조건문을 한 줄로 표현이 가능하다.
위에서도 이야기했지만 간단한 조건문이라면 괜찮으나, 조건문이 복잡한 경우 가능하면 기본적인 if - elif - else를 사용하는 편을 추천한다.
아니면 코드 리펙토리(Code Refactoring)를 진행할 때 조건문을 한 줄로 변경하는 방법도 있다.
4. 예제 Code
이번에는 IF문을 한 줄로 표현하는 방법에 대해서 알아보았다.
간단하게 위에 나온 예제 파일은 Github에 올려놓았다.
해당 내용을 따라 해 보면 금방 이해하고 익숙해질 것이다.
🌵댓글