Dev/Python

[ Python ] 3항 연산자 (Ternary Operator) 에서 break, return을 사용 할 수 없는 이유

surimi🍥 2021. 10. 23. 22:05
반응형
while True:
    a, b = map(int, input().split())
    print(a + b) if (a + b) else break

줄 수를 줄이기 위해 위와 같이 코드를 작성하자,

break에 빨간 줄이 그어지며 SyntaxError: invalid syntax가 발생했다.

 

Python에서 3항 연산자의 사용 방식은 다음과 같은데,

<expr1> if <condition> else <expr2>

여기서 <expr>expression이며,

 

break, return과 같은 명령어는 statement라고 한다.

 

expressionstatement을 구분하는 방법은

 

출력할 수 있거나, 변수에 값을 삽입할 수 있으면 expression, 할 수 없으면 statement 이다.

 

expression의 예

2 + 2 
3 * 7 
1 + 2 + 3 * (8 ** 9) - sqrt(4.0) 
min(2, 22) 
max(3, 94) 
round(81.5) 
"foo" 
"bar" 
"foo" + "bar" 
None 
True 
False 
2 
3 
4.0

 

 

statement의 예

if CONDITION: 
elif CONDITION: 
else: 
for VARIABLE in SEQUENCE: 
while CONDITION: 
try: 
except EXCEPTION as e: 
class MYCLASS: 
def MYFUNCTION(): 
return SOMETHING 
raise SOMETHING 
with SOMETHING:

 

 

 

어떠한 statement도 변수에 저장할 수 있는 값을 가지지 않아, 아래와 같은 코드는 동작하지 않는다.

x = if CONDITION: 
y = while CONDITION: 
z = return 42 
foo = for i in range(10):

 

여담으로, print( )는 python2에서는 statement였으나,

 

python3에서는 function이 되어 3항 연산자에서 사용이 가능해졌다고 한다.

x = print(42) # print()는 None을 리턴하므로 x == None

 

# 참조 링크

https://stackoverflow.com/questions/44848883/why-if-else-break-breaks-in-python

 

Why "if-else-break" breaks in python?

I am trying to use if-else expression which is supposed to break the loop if the if condition fails, but getting an invalid syntax error. Sample code: a = 5 while True: print(a) if a > 0 else

stackoverflow.com

https://www.quora.com/Whats-the-difference-between-a-statement-and-an-expression-in-Python-Why-is-print-%E2%80%98hi%E2%80%99-a-statement-while-other-functions-are-expressions

 

반응형