본문 바로가기
+ Development/Python

[Python] 파이썬 IF문 한줄(one-line)로 표현하기(if, if-else, if-elif-else : 삼항 연산자)

by :: Teacher :: 2021. 1. 21.
728x90
반응형

개발을 하다 보면 수만은 IF문(조건문)을 사용하게 된다. 

복잡한 IF문의 경우 여러 줄(Line)로 표현하여 가독성이 좋을 수 있다. 다만, 그 수만은 IF문 중 매우 단순한 IF문들이 존재하고 있다.

이때도 간단한 IF문 조차 여러 줄로 표현보다는 한 줄(one-line)로 표현한다면 코드(Code)도 줄이고 간결하게 사용할 수 있다. 

또한, 다른 개발언어의 경우(C++, Java 등)의 경우 삼항 연산자가 존재하며 삼항 연산자는 한 줄로 IF문과 같은 조건문 작성할 수 있다. 

파이썬에서는 기본적으로 제공하는 기능은 아니나, 삼항 연산자처럼 사용할 수 있으며, 특히 함수(Function)의 결과값(Retrun)을 반환하는 경우 여려 줄의 IF문보다는 한 줄로 표현한다면 매우 간결하게 마무리할 수 있다.

 그렇다면 IF문을 한 줄로 어떻게 표현하는지 알아보도록 하자. 

1. if 문

IF문의 경우는 일단 기본 IF문이다.

사실 IF문의 경우는 두 가지의 구문에 차이도 없으며, 딱히 한 줄로 하지 않아도 큰 가독성이나 간결함이 차이가 나지 않는다.

# -*- 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를 반환하도록 할 수 있다.

아래 예제를 한번 살펴보도록 하자. 

# -*- 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

2. if -else 문

결과값을 보면 같은 결과를 반환하는 것을 알 수 있다. 

기본적인 if - else는 4줄로 작성되었으나, 동일 조건문을 한 줄로 표현이 가능하다.

표현 방법은 다르지만 해당 부분에 익숙해진다면 훨씬 빠르고 간결하게 작성을 할 수 있다.

3. if - elif - else 문

그럼 2번처럼 간단한 if - else문이 아닌 if - elif - else와 같이 여러 중첩의 조건문이 있는 경우도 가능하다. 

다만, 특정 조건 혹은 조건의 갯수가 많은 경우 가능하면 기본적으로 사용하는 if - elif - else문을 사용하는 게 더 가독성이 좋다.

그럼 기본적인 구문과 한 줄로 표현하는 구문의 차이를 알아보도록 하자.

  • 결과 = A if 조건 else B if 조건 else C

아래 예제를 한번 살펴보도록 하자. 

# -*- 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

3. if - elif - else문

역시나 결과값을 보면 같은 결과를 반환하는 것을 알 수 있다.

기본적인 if - elif - else는 6줄로 작성되었으나, 동일 조건문을 한 줄로 표현이 가능하다.

위에서도 이야기했지만 간단한 조건문이라면 괜찮으나, 조건문이 복잡한 경우 가능하면 기본적인 if - elif - else를 사용하는 편을 추천한다.

아니면 코드 리펙토리(Code Refactoring)를 진행할 때 조건문을 한 줄로 변경하는 방법도 있다.

4. 예제 Code

이번에는 IF문을 한 줄로 표현하는 방법에 대해서 알아보았다. 

간단하게 위에 나온 예제 파일은 itschool-info-lab Github와 파일로 올려 놓았다. 

 

itschool-info-lab/python-example-code

:: IT School :: Python Example Code. Contribute to itschool-info-lab/python-example-code development by creating an account on GitHub.

github.com

해당 내용을 따라 해보면 금방 이해하고 익숙해질 것이다. 

궁금한 부분이 있거나, 틀린 부분이 있다면 언제든지 남겨주면 감사하겠습니다. 

728x90
반응형

댓글


loading