프로그래밍 언어/Python

[Python] Python의 삼항연산자 (Python's Ternary operators)

바보1 2022. 6. 11. 01:26

파이썬에는 c언어와는 다르게 사용자 친화적인 삼항 연산자가 있다.

 

문법은

참인 경우 값 if 조건 else 거짓인 경우 값

True if Condition else False

 

a = 10 if 10 > 5 else 5
print(a)

 

10 > 5가 참이므로 앞의 10이 a에 할당된다.

 

특별히 어려운 점은 없지만, 간혹 헷갈리는 부분이 있다.

 

바로 삼항 연산자는 값을 내놔야 한다는 것.....

a = 10 if 10 > 5 else a = 5
print(a)

이런 명령어는

SyntaxError: cannot assign to conditional expression

라는 오류를 출력한다.

 

즉 expression이 들어가면 안 된다는 뜻이다...!

 

a = 10 if 10 > 5 else 5라는 문장을 볼 때, 

(a = 10) if 10 > 5 else 5라고 생각하면 안 되고,

a = (10 if 10 > 5 else 5) 라고 생각해야 한다.

 

 

이것 때문에 개고생했다...ㅠ

 

 

번외로 이러한 삼항 연산자도 가능하다.

def func() -> int:
    return 10 if 10 > 5 else 5

print(func())

좀 더 명확히 나누면,

def func() -> int:
    return (10 if 10 > 5 else 5)

print(func())

 

따라서 삼항 연산자는 '값'을 반환해야 한다!가 이 글의 결론이다.