제 VII 파이썬 객체 참조 변동성 가비지 컬렉션

변수 1.python는 무엇인가

  • 파이썬 변수 실제로 포인터 및 자바 통상 용기 변수 값에 직접 증착된다.

나 때문에 같은 주소에 A, B 지점의를 변경 한 이유는, 납 함량은 또한에 포인트가 변화 b를 변경 한 객체의 메모리 주소를 얻기 위해 ID는 () 지적에, 그것은 개체의 다음 주소 인 경우 자체 B는 동일하지 않을 것이다.

. (1) A = [. 1,2 ,. 3 ]
 (2) B = . 3 # a와 b는 정수 포인터는 동일한 주소를 가리 키하는 동시에 수정 B를 수정 . 4 인쇄 (ID (a), ID (b))   # 54,866,344 54,866,344을 . (5) 인쇄 (A IS B)    # . 6 . 7 a.append (2 )
 .도 8 출력 (A, B)   # [. 1, 2, 3 ,. 2]. 1, 2, 3 ,. 2] 
 
 
 
 

참고 : 파이썬 변수 생성 단계

  • 먼저 객체를 생성 [1,2,3,4] 주소를 할당 : 19,333,544을
  • 점이이 19,333,544를 해결하기 위해 확인
  • 그런 다음 개체를 만드는 [1,2,3,4] 할당 주소 : 193 335 480
  • 받는 사람 193 335 480 주소 점 b를 보자
  • C 지점과 지점이 동일한를 해결 할 수 있도록

다른 오브젝트 C와 동일한 대상에 대한 포인트 A와 B 지점

(1) A = [1, 2, 3, 4 ]
 (2) B = [1, 2, 3, 4 ]
 (3) C = 4 인쇄 (ID (a), ID (b), ID (c))   # 19,333,544 19,333,480 19,333,544 

요점 :

작은 정수와 동일한 주소에 대한 모든 지점을 설립 문자의 작은 문자열의 경우, 다른 하나는 다른 주소입니다

(1) A = 1
 (2) B = 1
 (3) C = 4 인쇄 (ID (a), ID (b), ID (c)) # 1399769008 1399769008 1399769008 5 6 A = " ABC " (7) B = " ABC " 8 C = 9 인쇄 (ID (a), ID (b), ID (c)) # 24,048,032 24,048,032 24,048,032 
 


 

(2) 사이의 차이이다 ==

  • == 두 값의 비교와 동일한 목적은
  • 이다 두 개체 주소의 비교가 같은지, ID 비교기 (a) == ID (b)
(1) A = [1, 2, 3, 4 ]
 (2) B = [1, 2, 3, 4 ]
 (3) C = 4 인쇄 (ID (a), ID (b), ID (c))   # 19,333,544 19,333,480 19,333,544 (5) 잉크는 (A는 이고 B, A는 이고 C가, B가  c)   # 거짓 참 거짓 6 잉크 (A ==의 B, A == C, B == c)   # 참 참 참은 
 
 

3.del 제표 및 쓰레기 수거

  • CPython의 참조 카운팅을 사용 가비지 수집 알고리즘은 방법입니다

메모리의 개수가 2, 마지막 프로그램의 끝이 삭제 될 델 상기 기준 카운트 값은 3이며,이 시간에 점을 지적하면서 제 1 기준을 확립 한 후, B, C하자

1  등급 A :
 2      DEF  __init__ (자기 이름)
 3          self.name = 이름
 4          인쇄 ( " INIT : " + 이름)
 5  
6      DEF  __del__ (자기)
 7          인쇄 ( " 델 : " + self.name)
 8  
9  
10 A = A ( " " ) # INIT하십시오
 11 B = 12 C = 13 14 c.name = " C " 
(15)  이 전단 (b.name) C #
 16 b.name = ' B ' 
. 17  인쇄 (b.name) B 번호   
최종 성능 델 : B

4. 고전적인 실수

 

추천

출처www.cnblogs.com/zhihaospace/p/12089255.html