비교연산#
연산 결과로 논리값인 True
, False
를 낸다.
값비교
동등비교
A == B
- A와 B의 값이 같은가?
A != B
- A와 B의 값이 다른가? (A == B의 반대의 결과.)
대소비교
A < B
- A가 B보다 작은가?
A > B
- A가 B보다 큰가?
A <= B
- A가 B보다 작거나 같은가? (A > B의 반대의 결과.)
A >= B
- A가 B보다 크거나 같은가? (A < B의 반대의 결과.)
nan
과 수의 값비교는 False
이다.
문자열의 값비교는 문자열의 내장함수 ord()
를 써서 사전식으로 비교한다.
멤버십검사
A in B
- A가 B의 멤버인가?
A not in B
- A in B의 반대의 결과. 여기서 not은 논리연산자 not이 아니고;
not in
이 한 연산자이다.
B에는 리스트나 레인지같은 애들을 자주 넣는다. A, B가 문자열인 경우 A 문자열이 B 안에 포함되면 True
이다.
아이디비교
A is B
- A와 B가 같은 객체인가? 즉; A와 B의 아이디가 같은가?
A is not B
- A is B의 반대의 결과. 여기서 not은 논리연산자 not이 아니고;
is not
이 한 연산자이다.
…
비교연산은 거듭 연결될 수 있다. 즉; x<y<z라거나 x<y>z도 가능. 그러나 중간에 괄호가 있으면 괄호 안의 연산결과와 그 바깥을 연산하는 것이므로 결과가 다르다. 예: 1<5<3
은 False
이지만 (1<5)<3
는 True<3
이므로 True
이다.
비교연산들끼리는 우선순위가 같다.
여기서 “뭐뭐의 반대의 결과”라고 설명된 것들은; 파이썬 자체가 그 결과를 반전한다는 뜻이 아니고, 연산결과를 그렇게 만들라는 가이드만 있을 뿐, 강제되는 게 아니기 때문에; 반드시 반대의 결과를 낸다는 보장은 없다. 예: nan
과 수의 대소비교는 부등호가 어떻든 다 False
728x90