할당문 파이썬에서는 어떻게 식별자를 변수로 정의하는가? 변수에 값은 어떻게 연결하는가? 파이썬에서는 할당문(assignment statement)을 이용해 이 두 개의 작업을 수행한다. 파이썬에서 a = 1234
문장을 작성하면 두 값이 같은지 검사하는 것이 아니라, 다음과 같은 작업을 수행하도록 명령하는 것이다.
• (기존에 a
라는 변수가 없었다면) a
라는 식별자를 새로운 변수로 정의한다.
• 변수 a
에 정수형 값 1234
를 연결한다.
할당문의 오른쪽에는 어떠한 표현식도 올 수 있다. 이때 파이썬은 오른쪽에 나온 표현식을 평가해 계산된 값을 왼쪽에 있는 변수에 연결시킨다. 예를 들어 c = a + b
문장은 “변수 a
와 b
에 연결된 값을 더해 변수 c
에 연결”하는 작업을 표현한다. 할당문의 왼쪽에는 변수 하나만 있어야 한다. 따라서 파이썬에서1234 = a
나 a + b = b + a
는 모두 잘못된 문장이다. 간단히 말해 프로그램에서 등호(=
)의 의미는 수학 방정식에서 등치를 나타내는 등호와는 의미가 완전히 다르다.
비공식 트레이스 [표 1.2.2]와 같이 한 줄씩 문장이 실행된 후에 영향을 받는 변수에 값을 할당하는 표를 사용하면 변수에 연결된 값을 효율적으로 추적할 수 있다. 이런 표를 트레이스(trace)라고 하며, 이 기법은 프로그램의 작동을 이해하기 위해 오랫동안 사용되어 검증된 방법이다. 이 책에서는 앞으로 이와 같은 트레이스 기법을 계속 사용할 것이다.
▼ 표 1.2.2 처음 해보는 비공식 트레이스
|
a |
b |
c |
a = 1234 |
1234 |
|
|
b = 99 |
1234 |
99 |
|
c = a + b |
1234 |
99 |
1333 |
이런 기법을 이용해 파이썬 코드를 이해하는 것도 잘못된 것은 아니지만, 파이썬이 객체를 이용해 데이터 값을 표현하는 방법을 자세히 살펴볼 필요가 있다. 이제 이 과정을 객체의 관점에서 다시 살펴보자. 객체를 이용해 추적하는 방법은 방금 살펴본 방법에 비해 다소 복잡하기는 하지만, 파이썬 내부에서 객체를 이용하는 메커니즘을 이해해야 3장에서 설명하는 객체 지향 프로그래밍을 이해할 수 있으며, 이 책의 나머지 부분에서는 객체를 이용한 트레이스 기법을 사용할 것이다.