안녕하세요 주니입니다.
파이썬에는 많은 연산자들이 존재합니다.
그 중에서, 연산자 고유의 기능이 데이터 타입과 상관이 없는 비교 연산자와 논리 연산자를 공부하겠습니다.
고유의 기능을 가진 연산자들은 해당 연산이 적합한 데이터 타입을 주제로 할 때 공부하도록 하겠습니다.
먼저, 데이터 타입과 상관 없다는 말에 대해 설명드리겠습니다.
예를 들면, 더하기, 빼기 등 산술 연산자들이 있습니다.
이 연산자들은 고유의 기능이 숫자형 데이터에 사용이 제한됩니다.
하지만, 비교 연산자와 논리 연산자는 숫자형 타입이든 다른 타입이든 상관 없이, 두 데이터간의 연산이 가능합니다.
물론, 나중에 배우게 될 함수 오버로딩을 사용하면 별도의 기능을 부여 할 순 있지만,
지금은 고유의 기능만을 이야기합니다.
그럼 바로 두 연산에 대해 공부하겠습니다.
논리 연산자
연산자 | 기능 | |||
---|---|---|---|---|
x or y | x가 false이면 결과는 y이다. 반대의 경우, 결과는 x이다. | |||
x and y | x가 false이면 결과는 x이다. 반대의 경우, 결과는 y이다. | |||
not x | x가 false이면 결과는 true이다. 반대의 경우, 결과는 false이다. |
코드로 확인해보겠습니다.
x = False y = True a = x or y b = x and y c = not x print(a, b, c)
a는 x가 false이므로 y의 값인 true가 출력됩니다.
b는 x가 false이므로 x의 값인 false가 출력됩니다.
c는 x가 false이므로 반대인, true가 출력됩니다.
비교 연산자
비교 연산자는 말 그대로 두 데이터를 비교합니다.
파이썬에는 아래와 같이 8개의 비교 연산자가 있습니다.
연산자 | 기능 | |||
---|---|---|---|---|
< | 작다 | |||
<= | 작거나 같다 | |||
> | 크다 | |||
>= | 크거나 같다 | |||
== | 같다 | |||
!= | 다르다 | |||
is | 같은 객체다 | |||
is not | 다른 객체다 |
여러 비교 연산자를 이어서 표현 할 수도 있습니다.
예를 들면, x < y <= z 같은 식으로 사용이 가능합니다.
위 표현은 x < y and y <= z 와 같습니다.
다만, 첫 번째 표현식은 y가 한번 만 평가됩니다.
코드로 각 연산자를 확인해보겠습니다.
listA=list() listB=list() numberA=1 numberB=2 strA="A" strB="B" a1 = (listA < listB) a2 = (listA > listB) a3 = (listA == listB) a4 = (listA is listB) print(a1,a2,a3,a4) b1 = (numberA < numberB) b2 = (numberA > numberB) b3 = (numberA == numberB) b4 = (numberA is numberB) print(b1,b2,b3,b4) c1 = (strA < strB) c2 = (strA > strB) c3 = (strA == strB) c4 = (strA is strB) print(c1,c2,c3,c4)
list, string 그리고 숫자 타입의 데이터를 만들어 서로 비교를 했습니다.
숫자형 데이터의 비교를 제외하고는 의미없는 결과 일 수 있습니다.
그럼에도 불구하고, 비교연산이 가능합니다.
만약 각 연산에 유의미한 결과를 부여하고 싶다면, 연산자 오버로딩을 해야 합니다.
연산자 오버로딩에 대해서는 나중에 다시 공부할테니 넘어가도록 하겠습니다.
그리고 is 연산은 모두 false가 나왔습니다.
그 이유는 모두 서로 다른 메모리영역에 데이터가 생성이 되었기 때문입니다.
is는 파이썬이 데이터의 메모리 영역에 부여한 id값을 비교하는 것입니다.
그렇기 때문에 is연산자는 재정의도 불가능합니다.
만약 비교하는 두 데이터 타입이 서로 다른 타입일 경우 TypeError 예외가 발생합니다.
파이썬 비교 논리 operator
Reviewed by Juny
on
7월 20, 2019
Rating:
댓글 없음: