파이썬 기초 공부중인데 이해안되는게 있네요
조회수 1174회
'''
a=[1,2,3]
import copy
b=copy.copy(a)
a==b and a is b
?
'''
?의 답을 찾는 문제인데 a is b가 왜 False 인지 이해가 안되요.
둘다 똑같이 [1,2,3]으로 나오는뎅...힝..
-
(•́ ✖ •̀)
알 수 없는 사용자
1 답변
-
==
는 값을 비교하고is
는 주소를 비교합니다.a
변수와b
변수는 1, 2, 3 정수를 갖고 있는 리스트를 담고 있습니다.변수가 의미하고 있는 값 은 동일합니다. 하지만 두 변수가 보유하고 있는 메모리 주소가 같은 곳일 까요?
copy.copy
는 새로운 메모리 주소에 동일한 값을 갖도록 복사를 하는 작업을 합니다. 그렇기 때문에a
와b
는 서로다른 메모리 주소에 리스트를 저장하고 있습니다.import copy a = [1, 2, 3] b = copy.copy(a) print(id(a)) print(id(b))
위 코드를 실행해 보시면 화면에 출력되는
a
와b
에 주소가 다를 것을 알 수 있습니다.is
는 주소를 비교하여 동일한 인스턴스인지를 확인하기 때문에 결과가 False 가 됩니다.
댓글 입력