인프런 영문 브랜드 로고
인프런 영문 브랜드 로고

인프런 커뮤니티 질문&답변

장한혁님의 프로필 이미지
장한혁

작성한 질문수

예제로 공부하는 Python 100 문제풀이 Part.1

is, ==, 연산자

문자열 주소가 같은 이유 c is d

작성

·

326

0

Java에서는, 문자열 객체가 생성될 때마다 새로운 주소를 할당하는 방식을 사용합니다. 그러나 Python의 경우 문자열 객체 생성 시 매번 새로운 객체를 만드는 대신 기존에 선언되어 있던 immutable 객체를 사용합니다. 이는 CPython의 최적화 기법string interning에 의한 동작입니다. 따라서 둘 이상의 변수메모리의 동일한 문자열 객체를 가리킬 수 있고, 메모리를 절약하게 됩니다.

 

a = 'PlanB'

b = 'PlanB'

print(id(a), id(b))

# 4346040648 4346040648

print(id(a) == id(b))

# True

print(a is b)

# True

https://planbs.tistory.com/entry/Python-%EB%AC%B8%EC%9E%90%EC%97%B4%EC%9D%98-%EB%A9%94%EB%AA%A8%EB%A6%AC-%ED%95%A0%EB%8B%B9-%EB%B0%A9%EC%8B%9D

 

간단하게 말하면, '동일한' 문자열을 가리킬 경우에는 미리 선언했던 변수(c)를 새로 선언하는 변수(d)에 덮어씌우는 것입니다.

따라서 c is d 가 True가 되는 것입니다.

 

답변

답변을 기다리고 있는 질문이에요
첫번째 답변을 남겨보세요!
장한혁님의 프로필 이미지
장한혁

작성한 질문수

질문하기