본문 바로가기
SK 행복성장캠퍼스/Python 기초

0901_2일차_Python07_비교연산자

by NickNuma 2020. 9. 3.

전에 대입연산자에 대해 알아봤고 이번엔 비교연산자입니다.


비교연산자는 말그대로 값 비교를 위한 연산자입니다.
같은가 다른가, 초과인가 미만인가, 이상인가 이하인가를 비교합니다.

"""
    비교 연산자
        a == b : a값과 b값이 같은가?
        a > b  : a값이 b값보다 큰가?
        a >= b : a값이 b값보다 크거나 같은가?
        a < b  : a값이 b값보다 작은가?
        a <= b : a값이 b값보다 작거나 같은가?
        a != b : a값과 b값이 같지 않은가?

            ==> 실행 결과 값은 논리값 (True / False) *****
            ==> 나중에 조건문, 반복문에서 사용된다.

"""

 



값을 비교하는데 사용하고, 결과값은 bool입니다.

a, b = 1, 2
print( a == b, type(a==b) )
print( a > b, type(a==b) )
print( a >= b, type(a==b) )
print( a < b, type(a==b) )
print( a <= b, type(a==b) )
print( a != b, type(a==b) )
print("="*40)


 


비교연산자와 같은 역할을 하는 명령값이 있는데
is is not 입니다.
== 와 is의 다른점== 는 실제 값을 비교하고, is는 주소값을 비교합니다.

"""
    * is와 == 비교
        (사전 필요 지식) 변수는 참조값을 갖는다.

    1) a == b   :   a와 b의 실제값을 비교
    2) a is b   :   a와 b의 주소값을 비교
                    ( id(a) == id(b) 동일 )
                # 실제값 비교 -> ==, 주소값 비교 -> is

    None 값도 비교 연산자 ==를 사용할 수 있지만
    None 값은 is, is not 사용을 권고함

"""


음..... 이거 쓰면서 알았는데;;;;;
a와 b가 다른 변수인데... 주소값이 같다?!
강사님께서 python은 기본적으로 참조변수라고 하셨는데 아마 그 이유가 아닐까한다.
아니 아무리 그래도 그렇지 데이터값이 같으면 참조(주소)값도 같다고??? 진짜 몰랐다;;;;


 


일단... 음.. python기본 참조변수이기 때문이어서 그런지.. a = 20b = 20실제값도, 참조(주소)값같다.
일단 이걸 알아야한다는 전제가 1이고 이후 ==와 is로 실제값과 참조값을 비교하는데 모두 True값을 갖는다.
그리고 None값==로 비교가 가능하지만 사용을 지양하고, is와 is not으로 비교하는 것을 권장한다.

a = 20
print(id(a))
b = 20
print(id(b))

print("a변수의 값과 b변수의 값이 같은가?", a == b)
print("a변수의 주소값과 b변수의 주소값이 같은가?", a is b)
print("="*50)

# None 비교   :   is None 사용, == 사용 지양, 안함
n = None

# 질문 : n변수 값이 None 인가?
# print(n == None)  # 가능하지만 사용 안 하는 것을 권장
print(n is None)    # 권장
# 질문 : n변수 값이 None이 아닌가?    => is not None 사용, != 사용 지양, 안함
print(n is not None)    #권장


 

이것으로 마지막 is가.... 뭔가 좀 아쉬운 느낌이지만.. 이로써 비교연산자를 마치고
다음 논리연산자로 돌아오겠습니다.

고롬 이만~

반응형

댓글