파이썬 기초 공부중인데 이해안되는게 있네요


'''

a=[1,2,3]

import copy

b=copy.copy(a)

a==b and a is b

?

'''

?의 답을 찾는 문제인데 a is b가 왜 False 인지 이해가 안되요.

둘다 똑같이 [1,2,3]으로 나오는뎅...힝..

  • 2017년 11월 14일에 작성됨

조회수 44


1 답변


== 는 값을 비교하고 is 는 주소를 비교합니다.

a 변수와 b 변수는 1, 2, 3 정수를 갖고 있는 리스트를 담고 있습니다.

변수가 의미하고 있는 은 동일합니다. 하지만 두 변수가 보유하고 있는 메모리 주소가 같은 곳일 까요?

copy.copy 는 새로운 메모리 주소에 동일한 값을 갖도록 복사를 하는 작업을 합니다. 그렇기 때문에 ab 는 서로다른 메모리 주소에 리스트를 저장하고 있습니다.

import copy
a = [1, 2, 3]
b = copy.copy(a)

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

위 코드를 실행해 보시면 화면에 출력되는 ab 에 주소가 다를 것을 알 수 있습니다.

is 는 주소를 비교하여 동일한 인스턴스인지를 확인하기 때문에 결과가 False 가 됩니다.

  • 2017년 11월 14일에 작성됨

  • 아아!!! 주소가 다른거였구나.. 고맙습니다 ㅎㅎ 단번에 이해가 됐어요!    정석호   2017.11.14 23:26     

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close