게시판 즐겨찾기
편집
드래그 앤 드롭으로
즐겨찾기 아이콘 위치 수정이 가능합니다.
파이썬 레퍼런스에 관해 문의 드립니다.
게시물ID : programmer_15760짧은주소 복사하기
작성자 : nofence
추천 : 0
조회수 : 483회
댓글수 : 2개
등록시간 : 2016/02/08 15:04:06
옵션
  • 본인삭제금지
안녕하세요. 어떻게 보면 굉장히 간단한 질문일 수도 있는데, 아무리 구글링을 해도 
관련 된 답을 구할 수가 없어서 이렇게 문의 드립니다.

파이썬에서는 특정 개체에 대한 레퍼런스를 변수(이름)가 갖게 되는데요,
아래 예에서는 그러한 사실을 명확히 보여 주고 있습니다.

>>> id(1)
1636939440
>>> a = 1
>>> b = 1
>>> c = 1
>>> id(a)
1636939440
>>> id(b)
1636939440
>>> id(c)
1636939440

정수 1은 1636939440이라는 메모리 주소를 갖고 있고,
변수 a,b,c는 정수 1이 갖고 있는 메모리 주소를 레퍼런스로
갖고 있음이 확인되는데요, 문제는 왜 실수(부동 소수)는
정수와 다르게 동작하는 걸까요?

>>> id(3.14)
34312864
>>> a = 3.14
>>> b = 3.14
>>> c = 3.14
>>> id(a)
34312864
>>> id(b)
34312600
>>> id(c)
34312432

위에서 보는 바와 같이 실수 3.14는 34312864라는 메모리 주소를 
갖고 있는데 반해 변수 a,b,c는 정수와 달리 각각 다른 레퍼런스를
보유하고 있음이 드러납니다.

문자열도 한 번 살펴 보았는데요, 결과는 아래와 같습니다.

 >>> id("hello")
43566560
>>> a = "hello"
>>> b = "hello"
>>> c = "hello"
>>> id(a)
43566560
>>> id(b)
43566560
>>> id(c)
43566560

문자열 "hello"는 43566560라는 메모리 주소를 갖고 있고
변수 a,b,c는 문자열 "hello"가 갖고 있는 메모리 주소를
레퍼런스로 갖고 있음이 확연히 보이는 실정입니다.

정수와 문자열은 동일하게 동작하는데 왜 실수만 다른 걸까요?
특별한 이유라도 있는 것 같은데요, 정말 궁금합니다!







전체 추천리스트 보기
새로운 댓글이 없습니다.
새로운 댓글 확인하기
글쓰기
◀뒤로가기
PC버전
맨위로▲
공지 운영 자료창고 청소년보호