오늘 이런 코드를 짰는데,
arr[-2] = (s[-2] != '0') and 0 or (get_num(s[-1]) + get_num(s[-2:]))
s[-2]가 '0'임에도 불구하고 or 다음 연산이 들어갔다.
이유는 이게 3항 연산이 아닌, 우선순위가 가장 높은 왼쪽에 있는 비교 연산자부터 계산해서 뒤에 식을 확인하지 않아도 참거짓이 결정되는 순간에 데이터를 리턴하는 파이썬의 독특한 성질이다.
나는 아래 레퍼런스를 보고 작성한건데
result = a == b and a-b or a+b # 결과는 a+b = 30
나의 케이스 같은 경우는
arr[-2] = ((s[-2] != '0') and 0) or (get_num(s[-1]) + get_num(s[-2:]))
위에 굵은 글씨에서 0이 False임으로 항상 or 다음 행을 리턴하는 형태이다.
어떻게 묶이는지 잘 생각하고 이용해야겠다.