더북(TheBook)

트레이스 예: 변숫값 증가 트레이스 개념을 제대로 이해했는지 확인하기 위해 17 값을 가진 객체에 변수 i를 바인딩하고, 이 값을 하나 증가시키는 다음 코드를 예로 살펴보자.

i = 17
i = i + 1

앞에서 설명했듯이 두 번째 문장은 수학의 등식에서는 말이 안 되는 문장이지만, 파이썬으로 프로그래밍할 때는 이런 문장을 아주 흔히 볼 수 있다. 이 두 문장은 구체적으로 파이썬이 다음과 같이 작동하도록 명령한다.

▲ 그림 1.2.4 변숫값 증가 트레이스

 

• 값이 17int 객체를 생성해 이 객체에 변수 i를 바인딩한다.

• 표현식 i + 1을 평가해 값이 18int 객체를 생성한다.

• 생성된 객체에 변수 i를 바인딩한다.

 

파이썬이 각 문장을 실행한 후의 결과를 살펴보려면 [그림 1.2.4]를 참조하라.

이 코드는 아주 간단하지만 객체를 생성하는 과정의 두 가지 측면을 생각하게 해준다. 첫째, i = i + 1 문장은 어떤 객체의 값도 변경하지 않는다. 다만 원하는 값을 가진 객체를 새로 생성하고 변수 i를 새로운 객체에 바인딩할 뿐이다. 둘째, i = i + 1 문장을 실행한 후에는 171 값을 가진 객체에 바인딩된 변수가 없다. 메모리 자원을 관리하는 책임은 파이썬이 지고 있다. 파이썬은 더 이상 접근할 수 없는 객체를 발견하면 그 객체를 저장하기 위해 사용했던 메모리를 자동으로 회수한다.

신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.