Python에서는 예상대로 부울 논리를 수행하지만 부울 값을 반환하지 않고 실제로 비교하는 값 중 하나를 반환합니다.
1. and:
>>> 'a' and 'b' 'b' >>> '' and 'b' '' >>> 'a' and 'b' and 'c' 'c'
는 부울 컨텍스트의 모든 값이 true인 경우 왼쪽에서 오른쪽으로 표현식을 평가하고 마지막 값을 반환합니다.
부울 컨텍스트의 값이 false인 경우 첫 번째 거짓 값을 반환합니다
2. 또는:
>>> 'a' or 'b' 'a' >>> '' or 'b' 'b' >>> '' or [] or {} {} >>> 0 or 'a' or 'c' 'a'
or를 사용하면 and와 마찬가지로 부울 컨텍스트에서 값이 왼쪽에서 오른쪽으로 평가됩니다. 값이 true이거나 해당 값을 즉시 반환하는 경우
모든 값이 false이거나 마지막 false 값을 반환하는 경우
또는 부울 컨텍스트에서 첫 번째 true 값을 찾을 때까지 표현식 계산을 계속 수행한다는 점에 유의하세요. 그러면 나머지 비교 값은 무시됩니다
3. and-or:
and-or는 이전 두 구문을 결합하여 추론할 수 있습니다.
>>> a='first' >>> b='second' >>> 1 and a or b 'first' >>> (1 and a) or b 'first' >>> 0 and a or b 'second' >>> (0 and a) or b 'second' >>>
이 구문은 C 언어의 bool ? a : b 표현식과 유사합니다. 전체 표현식은 왼쪽에서 오른쪽으로 평가되므로 and 표현식이 먼저 평가됩니다. 1과 'first'는 'first'로 평가되고, 'first' 또는 'second'는 'first'로 평가됩니다.
0 및 'first'는 False로 평가되고, 0 또는 'second'는 'second'로 평가됩니다.
and-or는 주로 삼항 연산자 bool?a:b를 모방하는 데 사용됩니다. 즉, bool 표현이 true이면 a를 취하고, 그렇지 않으면 b를 취합니다.
and-or 트릭인 bool 및 a 또는 b 표현식은 a가 부울 컨텍스트에서 false로 평가될 때 C 언어 표현식 bool ? a : b 처럼 작동하지 않습니다.
4. 안전하게 사용하세요
>>> a="" >>> b="second" >>> (1 and [a] or [b]) [''] >>> (1 and [a] or [b])[0] '' >>>
[a]는 비어 있지 않은 목록이므로 결코 false가 아닙니다. a가 0, '' 또는 다른 거짓 값이더라도 목록 [a]에는 요소가 하나 있으므로 참입니다.
책임 있는 프로그래머는 and-or 기술을 함수로 캡슐화해야 합니다:
def choose(bool,a,b): return (bool and [a] or [b])[0] print choose(1,'','second') #''
위 내용은 Python에서 and 및 or의 반환 값에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!