programing

Python에서 NOT, AND 또는 OR에 대한 논리 연산자(작업 순서)의 우선 순위

lastcode 2023. 5. 17. 23:14
반응형

Python에서 NOT, AND 또는 OR에 대한 논리 연산자(작업 순서)의 우선 순위

C&C++에서 NOT AND & OR의 우선순위 시퀀스는 NOT>AND>OR로 알고 있습니다.하지만 이것은 파이썬에서 비슷한 방식으로 작동하지 않는 것 같습니다.Python 문서에서 검색을 시도했지만 실패했습니다. (조금 조급한가 봅니다.)누가 이것 좀 치워 주시겠어요?

연산자 우선 순위에 대한 문서에 따라 상위에서 하위로 NOT, AND 또는 OR입니다.

다음은 가장 낮은 우선순위에서 가장 높은 우선순위의 전체 우선순위 표입니다.행의 우선 순위와 그룹이 왼쪽에서 오른쪽으로 동일합니다.

 0. :=
 1. lambda
 2. if – else
 3. or
 4. and
 5. not x
 6. in, not in, is, is not, <, <=, >, >=, !=, ==
 7. |
 8. ^
 9. &
10. <<, >>
11. +, -
12. *, @, /, //, %
13. +x, -x, ~x
14. **
14. await x
15. x[index], x[index:index], x(arguments...), x.attribute
16. (expressions...), [expressions...], {key: value...}, {expressions...}

다음 테스트를 수행하여 의 우선 순위를 확인할 수 있습니다.and그리고.or.

일단 해보세요.0 and 0 or 1파이썬 콘솔에서

한다면or먼저 묶인 다음, 우리는 예상할 수 있습니다.0산출물로서

내 콘솔에서1는 출력입니다.라는 뜻입니다.and먼저 바인딩하거나 다음과 같음or(표현식은 왼쪽에서 오른쪽으로 평가될 수 있습니다.)

그럼 해보세요.1 or 0 and 0.

한다면or그리고.and왼쪽에서 오른쪽으로 기본 제공되는 평가 순서와 동일하게 바인딩하면 다음과 같이 됩니다.0산출물로서

내 콘솔에서1는 출력입니다.그러면 우리는 결론을 내릴 수 있습니다.and보다 우선 순위가 높습니다.or.

not보다 긴밀한 바인딩and보다 더 단단히 묶이는.or언어참고문헌에 기재된 바와 같이.

부울 연산자 중 가장 약한 연산자에서 가장 강한 연산자까지의 우선 순위는 다음과 같습니다.

  1. or
  2. and
  3. not x
  4. is not;not in

연산자의 우선 순위가 동일한 경우 평가는 왼쪽에서 오른쪽으로 진행됩니다.

몇 가지 간단한 예, 연산자 우선 순위(및 또는 아님)를 기록하고, 사람의 해석 가능성을 지원하는 괄호를 사용합니다.

a = 'apple'
b = 'banana'
c = 'carrots'

if c == 'carrots' and a == 'apple' and b == 'BELGIUM':
    print('True')
else:
    print('False')
# False

마찬가지로:

if b == 'banana'
True

if c == 'CANADA' and a == 'apple'
False

if c == 'CANADA' or a == 'apple'
True

if c == 'carrots' and a == 'apple' or b == 'BELGIUM'
True

# Note this one, which might surprise you:
if c == 'CANADA' and a == 'apple' or b == 'banana'
True

# ... it is the same as:
if (c == 'CANADA' and a == 'apple') or b == 'banana':
True

if c == 'CANADA' and (a == 'apple' or b == 'banana'):
False

if c == 'CANADA' and a == 'apple' or b == 'BELGIUM'
False

if c == 'CANADA' or a == 'apple' and b == 'banana'
True

if c == 'CANADA' or (a == 'apple' and b == 'banana')
True

if (c == 'carrots' and a == 'apple') or b == 'BELGIUM'
True

if c == 'carrots' and (a == 'apple' or b == 'BELGIUM')
True

if a == 'apple' and b == 'banana' or c == 'CANADA'
True

if (a == 'apple' and b == 'banana') or c == 'CANADA'
True

if a == 'apple' and (b == 'banana' or c == 'CANADA')
True

if a == 'apple' and (b == 'banana' and c == 'CANADA')
False

if a == 'apple' or (b == 'banana' and c == 'CANADA')
True

Python이 C/C++를 포함한 (거의) 다른 모든 프로그래밍 언어에서 잘 확립된 것 에 이러한 연산자의 다른 우선 순위 시퀀스를 가질 좋은 이유는 없습니다.

Python Language Reference, part 6.16 - Operator precedence, 다운로드 가능(현재 버전의 경우 및 기타 모든 표준 설명서와 함께 제공됨) 또는 온라인 6.16에서 찾을 수 있습니다. 연산자 우선 순위입니다.

그러나 Python에는 여전히 당신을 오도할 수 있는 무언가가 있습니다.의 결과and그리고.or연산자가 다음과 다를 수 있습니다.True또는False같은 문서에서 6.11 부울 연산을 참조하십시오.

not>and

print(~0&0) # 0

and>or

print(0&0|1) # 1

1 or 1 and 0 or 0아온다를 합니다.1우리가 우선순위가 거의 비슷한 것 같습니다. 거의 비슷하죠.

언급URL : https://stackoverflow.com/questions/16679272/priority-of-the-logical-operators-order-of-operations-for-not-and-or-in-pyth

반응형