답변1
코드 줄(또는 줄 그룹)을 보고 해당 코드가 수행하는 작업을 이해하려는 경우 좋은 전략은 줄을 구성 요소 부분으로 나누는 것입니다. 이 줄이 왜 다른 결과를 반환하는지 궁금합니다.
>>> print( 5 < ( 5 or 10 ) )
False
>>> print( 5 < ( 10 or 5 ) )
True
그러니 분해해 봅시다. 이 코드 줄 사이의 유일한 차이점은 괄호 표현식 ( 5 or 10 )
과 ( 10 or 5 )
이므로 Python이 이를 어떻게 처리하는지 살펴보겠습니다.
>>> ( 5 or 10 )
5
>>> ( 10 or 5 )
10
print()
이 시점에서 두 명령문의 출력이 다른 이유가 명확해져야 합니다 . 즉, 실제로는 각각 print( 5 < 5 )
및 print( 5 < 10 )
- 입니다 .False
True
그런데 왜 to 와 to 를 ( 5 or 10 )
평가할까요 ? 이를 위해 실제 상황을 상담했습니다.5
( 10 or 5 )
10
파이썬 문서, 부울 연산자의 관련 섹션에서 찾을 수 있습니다 or
.
표현식이 먼저 평가
x or y
됩니다x
.x
True
그 값이 반환됩니다; 그렇지 않으면 y를 계산하고 결과 값을 반환합니다.
Python에서 "진실"이 어떻게 작동하는지 이해한다면 이는 의미가 있습니다. 숫자 값의 경우 0
sum 0.0
은 false(즉, 부울 연산에서 로 평가되는 값 False
)이고 다른 모든 값은 true(즉, 로 평가됨 True
)입니다. 5나 10은 모두 false가 아니므로 각 괄호에서 첫 번째 값이 반환됩니다. 해당 값 자체는 True
여전히 부울 테스트에서 평가되기 때문입니다.
>>> x = 5
>>> if x:
... print( f'{x} is truthy enough for me!' )
...
5 is truthy enough for me!
잠재적인 사용 사례에서는 or
SQL과 유사한 방식으로 작업 할 수 있습니다 COALESCE()
(즉, false가 아닌 첫 번째 값 반환). 각 변수가 있는 변수 세트가 있어야 합니다.할 수 있다이는 프로그램에 적합하고 우선순위를 지정하려는 값을 실제 값으로 설정하는 (x or y or z)
깔끔한 방법입니다 .