Python - 'is'와 '=='의 차이점

도로롱·2022년 9월 24일

헷갈리는 함수

목록 보기
11/18

파이썬에서 is와 ==는 조건문에서 두개의 변수가 같은지 체크할 때 자주 사용하는데 큰 차이점이 있습니다. 실수로 잘못된 연산자를 사용하여 프로그램이 의도된 것과 다르게 동작할 수 있습니다.

1. 'is'와 '=='의 차이
2. 'is' 예제
3. '==' 예제


1. 'is'와 '=='의 차이

is와 ==는 모두 변수의 동등을 비교하지만 다음과 같은 차이점이 있습니다

is는 변수의 Object(객체)가 같을 때 True를 리턴

==는 변수의 Value(값)이 같을 때 True를 리턴


2. '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


3. '==' 예제

아래 코드에서 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


  • 즉, 값(value)만 같다면 == , 아예 객체 자체(id)가 같으면 is

a=[]
b=[]
c=a

리스트일 경우에만 a is b, b is c 값이 false로 뜨는데, a에 str,tuple,int를 넣으면 또 true 값이 반환된다.
이럴 경우에는 id(a), id(b), id(c)를 해보면 아이디 값이 같으면 True, 다르면 false를 반환한다

profile
질문 없는 성장은 없다. 3년차 데이터 분석가

0개의 댓글