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
언어참고문헌에 기재된 바와 같이.
부울 연산자 중 가장 약한 연산자에서 가장 강한 연산자까지의 우선 순위는 다음과 같습니다.
or
and
not x
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
'programing' 카테고리의 다른 글
문자열이 유효한 HTTP URL인지 확인하는 방법은 무엇입니까? (0) | 2023.05.17 |
---|---|
'ld: 주의: 옵션에 대한 디렉터리를 찾을 수 없습니다.' (0) | 2023.05.17 |
디렉토리에 폴더가 있는지 확인하고 C#을 사용하여 폴더를 만듭니다. (0) | 2023.05.17 |
angular-cli 여기서 is webpack.config.js 파일 - new angular6은 ng 배출을 지원하지 않습니다. (0) | 2023.05.17 |
초점설정에 합니다.초점설정에 합니다.초점설정에 합니다. (0) | 2023.05.17 |