전에 대입연산자에 대해 알아봤고 이번엔 비교연산자입니다.
비교연산자는 말그대로 값 비교를 위한 연산자입니다.
같은가 다른가, 초과인가 미만인가, 이상인가 이하인가를 비교합니다.
"""
비교 연산자
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 = 20과 b = 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가.... 뭔가 좀 아쉬운 느낌이지만.. 이로써 비교연산자를 마치고
다음 논리연산자로 돌아오겠습니다.
고롬 이만~
반응형
'SK 행복성장캠퍼스 > Python 기초' 카테고리의 다른 글
0901_2일차_Python08_멤버십연산자 (0) | 2020.09.04 |
---|---|
0901_2일차_Python07_논리연산자 (0) | 2020.09.03 |
0901_2일차_Python07_대입연산자 (0) | 2020.09.03 |
0901_2일차_Python07_연산자1_산술연산자 (0) | 2020.09.03 |
0831_1일차_연습문제 (0) | 2020.09.03 |
댓글