and 및 or의 특수 속성
Python에서 and 및/는 부울 논리 연산을 수행하지만 대신 부울 값을 반환하지 않습니다. 실제로 비교하는 값 중 하나입니다. 예를 살펴보겠습니다.
>>> 'a' and 'b' 'b' >>> '' and 'b' '' >>> 'a' and 'b' and 'c' 'c'
및 를 사용할 때 표현식의 값은 부울 컨텍스트에서 왼쪽에서 오른쪽으로 평가됩니다. 0, '', [], (), {}, None은 부울 컨텍스트에서 거짓입니다. 글쎄, 거의 모든 것. 기본적으로 부울 컨텍스트의 클래스 인스턴스는 true로 평가되지만 클래스 인스턴스가 false로 평가되도록 하는 특정 메서드를 클래스에 정의할 수 있습니다. 5장에서 클래스와 이러한 특수 메서드에 대해 배우게 됩니다. 부울 컨텍스트의 모든 값이 true이면 마지막 값을 반환합니다. 이 예에서 및 미적분학은 'a'를 true로 평가한 다음 'b'를 true로 평가하고 마지막으로 'b'를 반환합니다.
부울 컨텍스트의 값이 false이면 첫 번째 false 값을 반환합니다. 이 예에서 ''는 첫 번째 거짓 값입니다.
모든 값이 true이므로 마지막 참값 'c'를 반환합니다.
>>> 'a' or 'b' 'a' >>> '' or 'b' 'b' >>> '' or [] or {} {} >>> def sidefx(): ... print "in sidefx()" ... return 1 >>> 'a' or sidefx() 'a'
or를 사용하면 및와 마찬가지로 부울 컨텍스트에서 값이 왼쪽에서 오른쪽으로 평가됩니다. 값이 true이면 해당 값을 즉시 반환합니다. 이 경우 'a'가 첫 번째 진리값입니다.
또는 ''를 false로 평가한 다음 'b'를 true로 평가하고 'b'를 반환합니다.
모든 값이 false인 경우, 또는 마지막 false 값을 반환합니다. 또는 ''를 false로 평가한 다음, []를 false로 평가하고, {}를 false로 평가하고, 마지막으로 {}를 반환합니다.
또는 부울 컨텍스트에서는 첫 번째 참 값이 발견될 때까지 표현식을 평가한 다음 나머지 비교 값을 무시합니다. 일부 값에 부작용이 있는 경우 이 속성이 중요합니다. 여기서 함수 sidefx는 호출되지 않습니다. or 연산이 'a'를 true로 평가하여 즉시 'a'를 반환하기 때문입니다.
C 언어 해커라면 bool ? a : b 표현식에 익숙할 것입니다. bool이 true이면 표현식은 a로 평가되고 그렇지 않으면 b로 평가됩니다. Python의 방식과 작업 방식에 따라 동일한 작업을 수행할 수 있습니다.
예: and-or 기술 소개
>>> a = "first" >>> b = "second" >>> 1 and a or b 'first' >>> 0 and a or b 'second'
이 구문은 C 언어의 bool ? a : b 표현식과 유사합니다. 전체 표현식은 왼쪽에서 오른쪽으로 평가되므로 and 표현식이 먼저 평가됩니다. 1과 'first'는 'first'로 평가되고, 'first' 또는 'second'는 'first'로 평가됩니다.
0과 'first'는 False로 평가되고, 0 또는 'second'는 'second'로 평가됩니다.
그러나 이 Python 표현식은 부울 논리 연산만 수행하고 언어의 특정 구성 요소가 아니기 때문에 이는 and-or 기술이며 C 언어의 bool ? 중요하다. a가 거짓이면 표현식이 예상대로 작동하지 않습니다. (제가 이 문제로 고민한 적이 있다는 걸 아시나요? 한 번 이상?)
예. and-or 기법이 유효하지 않은 경우
>>> a = "" >>>b = "second" >>> 1 and a or b 'second'
a는 문자 문자열 , 빈 문자열은 Python의 부울 컨텍스트에서 false로 간주되며, 1과 ''는 ''로 평가되고, 마지막으로 '' 또는 'second'는 'second'로 평가됩니다. 오! 이 값은 원하는 값이 아닙니다.
and-or 트릭, bool 및 a 또는 b 표현식은 a가 부울 컨텍스트에서 false로 평가될 때 C 언어 표현식 bool ? a : b처럼 작동하지 않습니다.
and-or 트릭 뒤에 숨은 진짜 비결은 a의 값이 결코 거짓이 아닌지 확인하는 것입니다. 가장 일반적인 방법은 a [a]와 b [b]를 만든 다음 반환 값 목록의 첫 번째 요소(a 또는 b 중 하나여야 함)를 사용하는 것입니다.
예: 안전함and-or 트릭 사용
>>> a = "" >>> b = "second" >>> (1 and [a] or [b])[0] ''
[a]는 비어 있지 않은 목록이므로 결코 false가 되지 않습니다. a가 0, '' 또는 기타 거짓 값이더라도 목록 [a]에는 요소가 하나 있으므로 참입니다.
지금쯤이면 이 팁이 가치보다 더 문제처럼 보일 수 있습니다. 결국 if 문을 사용하여 동일한 작업을 수행할 수 있는데 왜 이 모든 수고를 겪을까요? 글쎄, 대부분의 경우 두 개의 상수 값 중에서 선택하게 되며 a는 항상 true로 평가된다는 것을 알고 있으므로 걱정하지 않고 이 간단한 구문을 사용할 수 있습니다. 보다 정교한 형태의 보안을 사용하는 데에는 여전히 타당한 이유가 있습니다. 예를 들어, 람다 함수와 같은 Python 언어의 특정 상황에서는 if 문이 허용되지 않습니다.
참고 : 여기에 있는 설명은 왼쪽에서 오른쪽으로 해석됩니다. 우리는 이것을 이렇게 이해할 수 있습니다.
및 설명:
0and* *가 0인지 1인지 고려할 필요가 없으며 결과는 0입니다.
1and* *가 0인지 1인지 고려하여 결과를 결정해야 합니다.
1또는* 다음 *을 고려할 필요가 없으며 결과는 1입니다
0또는* 결과를 결정하려면 다음 *을 고려할 필요가 있습니다
【관련 권장 사항】
1. Python and, or and and-or 구문 요약
2. Python에서의 and and or 사용법 분석
3. 파이썬에서 공유 및/또는 연산 논리 예제 튜토리얼
위 내용은 Python에서 and 및 or의 실제 사용법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!