2014-09-04 4 views
0

이것을 파이썬 쉘에 입력한다고 가정 해보십시오.& 및 |와 이상한 동작 연산자

>>> print 0 != 1 and (1 == 1 or 2 == 2) 
True 

이 값은 부울 값 True을 반환합니다. 이제 내가 조금 바꿔 놓자.

>>> print 0 != 1 & (1 == 1 | 2 == 2) 
False 

이제는 False을 반환합니다. 왜?

+3

[연산자 우선 순위] (https://docs.python.org/2/reference/expressions.html#operator-precedence) – EdChum

+0

왜 downvote입니까? 나는 정확히 파이썬 전문가가 아니에요 ... –

+0

좋은 질문이라고 생각합니다. +1. – Maroun

답변

8

나는 &&&을 혼동스럽게 생각합니다. 파이썬에서 &&은 키워드 and입니다 (제가 아는 한, &&||은 파이썬에 존재하지 않습니다).

|&은 이진 AND 및 OR 연산자이며 실제로는 andor과 다릅니다.

0 != 1 & (1 == (1 | 2) == 2) # 1 | 2 is 3 

     ↓↓ 

0 != 1 & (1 == 3 == 2) 

     ↓↓ 

0 != 1 & int(False) 

     ↓↓ 

0 != 1 & 0 # 1 & 0 is 0 

지금, 0 != 0False입니다 :

두 번째 코드로 변환됩니다.

또한 다른 답변에 유의하십시오 operator precedence.

관련 문제