2025년 1회 (1/3) 29분 51초
29분 51초의 화면 기준으로 아래 코드를 보면 node가 None인지를 먼저 판단하는것 같습니다. 즉, 위 코드에 if가 2개 존재하는데, 그 중 오른쪽 if 조건을 먼저 판단하는 것 같습니다. 제가 제대로 알아들은게 맞을까요??
그런데
result = "왼쪽 성공!" if True else "가운데" if (1 / 0 == 1) else "오른쪽"
print(result)
이 코드를 실행시켜보면, 왼쪽 성공이 출력됩니다. 그럼 왼쪽의 if를 먼저 판단한다는거같은데...
제가 어디서 잘못 생각하고 있을까요??
답변 2
1
안녕하세요. 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 삼항연산자 해설 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
정처기 2026-3 실기 문의
0
39
2
정처기 실기 3회 컴싸 사용 여부
0
32
1
모의고사 1 회 2번문제 중
0
37
2
26-2 이론문제 재탕
1
31
1
26-2년도 코드문제
0
22
0
26-2 코드문제
0
23
1
15분 48초 질문
0
29
2
26-1년도 이론문제 재탕
0
43
1
26-1년도 코드문제 재탕
0
31
0
이론재탕만 눈치챘어도
0
52
1
25-3년도 이론문제 재탕
0
36
1
25-3년도 코드문제 재탕
0
33
0
출력값 문의
0
30
2
25-2 분기커버리지
0
33
0
25-2 이론 재탕
0
46
1
25-1 이론 재탕
0
34
1
서브넷 마스크
0
48
2
모의고사 1회 계산문제 2개 맞았는데
0
63
2
업캐스팅 문제 예시 4번 부모 호출
0
48
2
모의고사 자료 해설이 너무 불친절하네요.
0
93
2
부모의 생성자 출력 관련
0
41
2
24-3 이론파트 재탕문제
0
52
0
누락코드
0
42
1
다차원 배열 포인터 질문있습니다
0
60
3





