>  기사  >  백엔드 개발  >  Python에서 and 및 or의 반환 값에 대한 자세한 설명

Python에서 and 및 or의 반환 값에 대한 자세한 설명

巴扎黑
巴扎黑원래의
2017-08-21 14:59:572633검색

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.