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 삼항연산자 해설 질문
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
필기자료 사라졌나요?(실기 일주일만에 안돼서 재도전-_-)
0
56
2
26년 1회 실기 해설 강의
0
78
2
53번 4-1 자료 오류 있는 것 같습니다.
0
76
2
7번문제
0
62
2
C언어 변형문제 9번문제 Pdf 수정요청
0
51
2
메서드 오버드라드
0
55
2
실수
0
46
1
공부 우선순위 우선강의 알려주세요
0
93
1
생성자 호출순서 강의 10번 문제 30분대 질문입니다
0
52
2
25년 2회 기출 5:40 질문입니다.
0
43
2
모의고사1회 3번 파이썬문제
0
76
2
C언어 출제변형 6번 문제
0
50
2
c언어 출제변형 강의 질문
0
32
2
28:40
0
34
2
C : 언어 배열과 문자열 수업자료
0
31
2
파이썬 리스트, 딕셔너리 질문
0
43
2
모의고사 관련 질문 건
1
69
3
자료 내용 오류
0
65
2
정적 변수, 정적 메서드(static) v2
0
51
2
v1.2 와 v0.91 PDF
0
104
1
업캐스팅 (부모형태, 자식생성자)
0
53
2
정보처리산업기사 준비중입니다.
0
74
2
실기 D -6
0
105
2
(기출) 2024년 2회 기출문제 - 이론 포함 22분32초 질문입니다
0
63
3





