안녕하세요, Jack Snider입니다. 오늘은 파이썬에서 양쪽의 값이 같은지 확인하는 is와 ==의 차이점에 대해서 알아보는 시간을 한 번 가져보겠습니다.
파이썬 is와 ==의 차이
is 키워드는 파이썬에서 두 객체가 동일한 객체인지를 확인하는 데 사용된다. 이는 두 객체가 메모리 내의 동일한 위치를 참조하고 있는지를 확인한다. 다른 말로 하면, 두 객체가 같은 메모리 주소를 가리키고 있는 경우에만 is 연산자가 True를 반환하게 된다.
예시 코드
# 정수 객체를 생성하고 두 변수가 동일한 객체를 가리키는 경우
x = 10
y = x
result = x is y
print(result) # True
# 두 개의 리스트를 생성하고 동일한 리스트를 가리키지 않는 경우
a_list = [1, 2, 3]
b_list = [1, 2, 3]
result = a_list is b_list
print(result) # False
# 동일한 객체를 가리키는 경우
c_list = a_list
result = a_list is c_list
print(result) # True
# None 객체와 비교
z = None
result = z is None
print(result) # True
위의 예시 코드에서 첫 번째 예제에서 x와 y는 동일한 정수 객체를 가리키기 때문에 x is y는 True를 반환하게 된다. 두 번째 예제에서 a_list와 b_list는 같은 내용의 리스트를 가리키지만, 서로 다른 객체를 가리키기 때문에 a_list와 b_list는 False를 반환하게 된다. 세 번째 예제에서 a_list와 c_list는 동일한 리스트 객체를 가리키므로 a_list와 b_list는 True를 반환하게 된다. 마지막으로 None 객체는 항상 동일한 메모리 위치를 가리키므로 z is None은 True를 반환하게 된다.
파이썬 ==
== 연산자는 파이썬에서 두 객체가 동등한 지(equal) 여부를 확인하는 데 사용된다. 이 연산자는 두 객체의 값을 비교하여 값이 동일한 경우에 True를 반환하고, 그렇지 않으면 False를 반환한다. == 연산자는 객체의 메모리 위치나 실제 객체의 동일성과는 관련이 없으며, 단순히 값들을 비교한다.
예시 코드
# 정수 값 비교
x = 5
y = 5
result = x == y
print(result) # True
# 문자열 값 비교
str1 = "Hello"
str2 = "Hello"
result = str1 == str2
print(result) # True
# 리스트 값 비교
list1 = [1, 2, 3]
list2 = [1, 2, 3]
result = list1 == list2
print(result) # True
# 다른 데이터 타입의 값 비교
num = 10
str_num = "10"
result = num == str_num
print(result) # False
# 다른 값 비교
a = 5
b = 7
result = a == b
print(result) # False
# None과 비교
c = None
result = c == None
print(result) # True