Recent Posts

파이썬 비교 논리 operator


안녕하세요 주니입니다.

파이썬에는 많은 연산자들이 존재합니다.
그 중에서, 연산자 고유의 기능이 데이터 타입과 상관이 없는 비교 연산자와 논리 연산자를 공부하겠습니다.

고유의 기능을 가진 연산자들은 해당 연산이 적합한 데이터 타입을 주제로 할 때 공부하도록 하겠습니다.

먼저, 데이터 타입과 상관 없다는 말에 대해 설명드리겠습니다.

예를 들면, 더하기, 빼기 등 산술 연산자들이 있습니다.
이 연산자들은 고유의 기능이 숫자형 데이터에 사용이 제한됩니다.

하지만, 비교 연산자와 논리 연산자는 숫자형 타입이든 다른 타입이든 상관 없이, 두 데이터간의 연산이 가능합니다.

물론, 나중에 배우게 될 함수 오버로딩을 사용하면 별도의 기능을 부여 할 순 있지만,
지금은 고유의 기능만을 이야기합니다.

그럼 바로 두 연산에 대해 공부하겠습니다.


논리 연산자




연산자 기능
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 그리고 숫자 타입의 데이터를 만들어 서로 비교를 했습니다.


python compare operator


숫자형 데이터의 비교를 제외하고는 의미없는 결과 일 수 있습니다.
그럼에도 불구하고, 비교연산이 가능합니다.

만약 각 연산에 유의미한 결과를 부여하고 싶다면, 연산자 오버로딩을 해야 합니다.
연산자 오버로딩에 대해서는 나중에 다시 공부할테니 넘어가도록 하겠습니다.

그리고 is 연산은 모두 false가 나왔습니다.
그 이유는 모두 서로 다른 메모리영역에 데이터가 생성이 되었기 때문입니다.
is는 파이썬이 데이터의 메모리 영역에 부여한 id값을 비교하는 것입니다.
그렇기 때문에 is연산자는 재정의도 불가능합니다.

만약 비교하는 두 데이터 타입이 서로 다른 타입일 경우 TypeError 예외가 발생합니다.







파이썬 비교 논리 operator 파이썬 비교 논리 operator Reviewed by Juny on 7월 20, 2019 Rating: 5

댓글 없음:

Powered by Blogger.