파이썬에서 is와 ==는 조건문에서 두개의 변수가 같은지 체크할 때 자주 사용하는데 큰 차이점이 있습니다. 실수로 잘못된 연산자를 사용하여 프로그램이 의도된 것과 다르게 동작할 수 있습니다.
1. 'is'와 '=='의 차이
2. 'is' 예제
3. '==' 예제
is와 ==는 모두 변수의 동등을 비교하지만 다음과 같은 차이점이 있습니다
아래 코드에서 a, b, c는 모두 empty list입니다. 모두 같은 value(값)을 갖고 있지만 a와 b는 다른 object(객체)이고, c는 a와 동일한 object(객체)입니다. 결과를 보면 a is c만 True를 리턴합니다.
a = []
b = []
c = a
result = (a is b)
print("a is b ?", result)
result = (a is c)
print("a is c ?", result)
result = (b is c)
print("b is c ?", result)
Output:
a is b ? False
a is c ? True
b is c ? False
아래 코드에서 a, b, c는 모두 empty list입니다. ==는 변수의 value(값)을 비교하기 때문에, 아래 코드에서 == 연산자의 비교는 모두 True를 리턴합니다.
a = []
b = []
c = a
result = (a == b)
print("a == b ?", result)
result = (a == c)
print("a == c ?", result)
result = (b == c)
print("b == c ?", result)
Output:
a == b ? True
a == c ? True
b == c ? True
a=[]
b=[]
c=a
리스트일 경우에만 a is b, b is c 값이 false로 뜨는데, a에 str,tuple,int를 넣으면 또 true 값이 반환된다.
이럴 경우에는 id(a), id(b), id(c)를 해보면 아이디 값이 같으면 True, 다르면 false를 반환한다
