이것을 파이썬 쉘에 입력한다고 가정 해보십시오.& 및 |와 이상한 동작 연산자
>>> print 0 != 1 and (1 == 1 or 2 == 2)
True
이 값은 부울 값 True
을 반환합니다. 이제 내가 조금 바꿔 놓자.
>>> print 0 != 1 & (1 == 1 | 2 == 2)
False
이제는 False
을 반환합니다. 왜?
이것을 파이썬 쉘에 입력한다고 가정 해보십시오.& 및 |와 이상한 동작 연산자
>>> print 0 != 1 and (1 == 1 or 2 == 2)
True
이 값은 부울 값 True
을 반환합니다. 이제 내가 조금 바꿔 놓자.
>>> print 0 != 1 & (1 == 1 | 2 == 2)
False
이제는 False
을 반환합니다. 왜?
나는 &
과 &&
을 혼동스럽게 생각합니다. 파이썬에서 &&
은 키워드 and
입니다 (제가 아는 한, &&
과 ||
은 파이썬에 존재하지 않습니다).
|
및 &
은 이진 AND 및 OR 연산자이며 실제로는 and
및 or
과 다릅니다.
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 != 0
가 False
입니다 :
두 번째 코드로 변환됩니다.
또한 다른 답변에 유의하십시오 operator precedence.
https://docs.python.org/2/reference/expressions.html#operator-precedence
|
및 &
는 !=
및 ==
보다 더 높은 우선 순위를 갖습니다.
[연산자 우선 순위] (https://docs.python.org/2/reference/expressions.html#operator-precedence) – EdChum
왜 downvote입니까? 나는 정확히 파이썬 전문가가 아니에요 ... –
좋은 질문이라고 생각합니다. +1. – Maroun