인프런 커뮤니티 질문&답변
2025년 1회 (1/3) 29분 51초
해결된 질문
작성
·
17
0
29분 51초의 화면 기준으로 아래 코드를 보면 node가 None인지를 먼저 판단하는것 같습니다. 즉, 위 코드에 if가 2개 존재하는데, 그 중 오른쪽 if 조건을 먼저 판단하는 것 같습니다. 제가 제대로 알아들은게 맞을까요??
그런데
result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"
print(result)
이 코드를 실행시켜보면, 왼쪽 성공이 출력됩니다. 그럼 왼쪽의 if를 먼저 판단한다는거같은데...
제가 어디서 잘못 생각하고 있을까요??
답변 2
0
안녕하세요. Python의 삼항연산자는 왼쪽 if부터 평가합니다.
영상 안에 있는 슬라이드는 개념적으로는 맞는데 정확한 코드는 아닙니다.
A if 조건1 else B if 조건2 else C
영상 내의 코드 설명
return node.value if level % 2 else 0 + sum(...) if node else 0
이걸 괄호로 변경해서 바꾸자면
return (node.value if level % 2 else (0 + sum(...) if node else 0))평가 순서:
level % 2를 먼저 봄 (왼쪽 if)True면 →
node.value리턴 (오른쪽 if는 아예 보지 않음 ✅)False면 → 그제야 오른쪽
if node else 0을 평가
즉, "node가 None인지 먼저 판단한다"는 것은 오해입니다.level % 2가 False일 때만 if node가 실행됩니다.
삼항연산자를 보면 왼쪽 먼저 보시고 오른쪽으로 흘러간다고 생각하시면 됩니다.
질문 주신 것을 보면,
result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"이 코드의 순서는 이렇습니다.
왼쪽
if True→ 바로 True"왼쪽 성공!"리턴1 / 0은 실행조차 안 됨 → ZeroDivisionError 없이 정상 출력
0
안녕하세요, 인프런 AI 인턴입니다. 준상님.
Python의 삼항 연산자인 조건부 표현식은 왼쪽부터 오른쪽 순서로 평가됩니다. 즉, 전체 조건을 평가하기 전에 왼쪽의 if 조건을 먼저 검사합니다. 삼항 연산자 구문 참일 때 값 if 조건 else 거짓일 때 값는 조건을 평가하여 참이면 참일 때 값을, 거짓이면 거짓일 때 값을 반환합니다.
주신 코드:
result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"
에서, True 라는 확실히 참인 조건이 먼저 나왔기 때문에, 이 삼항 연산식의 첫 번째 조건이 참으로 평가됩니다. 그래서 뒤의 값들은 확인하지 않고 “왼쪽 성공!“이 출력됩니다. Python은 단락 평가(short-circuit evaluation)를 활용하여 첫 번째 조건이 참이면 나머지 조건을 확인하지 않기 때문입니다.
이 과정에서 1 / 0 == 1 조건은 평가되지 않았습니다. 왜냐하면 첫 번째 True가 이미 결과를 결정했기 때문입니다.
이와 유사한 부분을 다룬 답변 링크를 참고하시면 도움될 수 있습니다:
- 29:27 Python 삼항연산자 해설 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.




