>  기사  >  백엔드 개발  >  Python에서 and 및 or의 실제 사용법에 대한 자세한 소개

Python에서 and 및 or의 실제 사용법에 대한 자세한 소개

零下一度
零下一度원래의
2017-05-26 11:58:027862검색

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. 파이썬에서 공유 및/또는 연산 논리 예제 튜토리얼

4. 파이썬의 논리 연산자 요약 및

5. Python: 논리적 판단 및 연산자 예제

위 내용은 Python에서 and 및 or의 실제 사용법에 대한 자세한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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