Python에서 ‘is’와 ‘==’의 차이

Python 자체가 쉽고 언어가 그렇게 어려운편이 아니어서 그런지 나도 쓸때마다 너무 겉핥기로 알고있다는 생각을 많이 한다. 이미 시작은 해버렸고 이제 모르는건 바로바로 찾아서 깊게 아는게 중요!

오늘은 코드 짜다가 if문에 is를 썼는데 갑자기 is와 ==의 차이점이 궁금하다. 그 전엔 그냥 튜토리얼이 있으면 그대로 썼는데 문득 의문이 생긴다. is와 ==의 차이가 뭘까 분명히 뭔가 차이가 있을텐데…

정말 단순히 설명하면

  • is는 비교할 두 값이 같은 오브젝트 인스턴스라면 True를 반환
  • ==는 __eq__()매소드에 의해서 리턴값이 정해짐

 

https://stackoverflow.com/questions/26595/is-there-any-difference-between-foo-is-none-and-foo-none

https://stackoverflow.com/questions/132988/is-there-a-difference-between-and-is-in-python

이 두 답변을 보면 정확하게 이해가 되는데 Java를 생각한다면 string 비교할때 ==로 비교하면 안되고 .equals()였나… 이걸로 비교해야되는 것 같은 느낌?!

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다