[파이썬 일기] #4.1. 파이썬에서 데이터 다루기
Python 2009/04/16 19:21 |대부분의 파이썬 튜토리얼을 보면 .py 파일에 소스 코드를 입력해서 실행하기 보다는 대화형 인터프리터를 통해 연습을 시키는 경우가 많다. 이유는 둘 중 하나일 것 같다. 이렇게 하면 배우기가 쉽거나 설명하기가 쉽기 때문이다. 나는 잘 모르니까 대세를 따라가보기로 하자.
IDLE을 열고(이것도 제목 표시줄에 IDLE로 표시 안되고 Python Shell이라고 표시된다.--^) 뭔가를 입력했더니 그대로를 출력한다. 파이썬을 계산기로 사용할 수 있다더니, 과연 수식을 입력하면 그대로 계산을 해서 결과를 출력한다. abcdefg를 입력했더니 에러를 출력하고, "abcdefg"와 'abcdefg'을 입력해 봤는데 똑같이 'abcdefg'를 출력한다.
파이썬의 데이터 타입을 알아보고자 매뉴얼을 암만 찾아봐도 나타나질 않더니, "The Python Language Reference"에 Data Model이라는 제목으로 타입에 대한 설명이 나와 있다. 파이썬 문서는 잘 정리가 되어 있다. 주로 첫 문단부터 핵심을 이야기하고 자세한 이야기를 시작한다. 첫 문단을 읽어 보자.
Objects are Python's abstraction for data. All data in a Python program is represented by objects or by relations between objects. (In a sense, and in conformance to Von Neumann's model of a "stored program computer," code is also represented by objects.)
… 란다. 파이썬에서는 모든 데이터가 객체 또는 객체 간의 관계로 표현되고, 심지어 코드마저도 어느 정도까지는 객체로 표현된다는 것이다 (코드도 객체로 표현된다에 밑줄 쫙~) .
파이썬의 모든 객체는 자료형(type)과 값(value), 그리고 식별 번호(identity)를 갖는다. 이 말은 곧 어떤 데이터든 간에 자료형과 값, 식별 번호를 갖고 있다는 뜻이다. 숫자든, 텍스트든, 심지어 코드든 간에 똑같이 말이다. 한편, 객체는 만들어질 때 주어진 식별 번호와 자료형은 절대 바꿀 수 없다. 바꿀 수 있는 것은 객체의 값뿐이다. 어떤 객체는 값마저도 바꿀 수 없도록 하는데, 이런 객체를 불변(immutable)객체라고 한다. 이와 반대로 값을 바꿀 수 있는 평범한 객체는 가변(mutable)객체라고 한다.
An object's mutability is determined by its type; for instance, numbers, strings and tuples are immutable, while dictionaries and lists are mutable.
어떤 객체가 가변인지 불변인지는 자료형에 따라 결정된다. 숫자, 문자열, 튜플(뭔지 모르겠다. 나중에 공부해야지)는 값을 바꿀 수 없는 불변객체고, 사전과 리스트(파이썬에서는 이런 자료구조를 언어 차원에서 지원하나보다.)는 가변객체다.
객체가 값을 가져야 하는 건 당연해 보인다. 그런데 자료형과 식별 번호는 왜 필요한 걸까? 일단 객체의 자료형은 객체가 갖고 있는 값을 다루는 수단을 결정한다. 가령 숫자 객체를 위한 곱셈과 나눗셈은 텍스트 객체에는 사용할 수 없다. 반대로 텍스트 객체를 위한 정규 표현식은 숫자에는 사용할 수 없다.
식별 번호는 이름 그대로 객체를 식별 또는 구분하기 위해 사용한다. 예를 들어 똑같이 두 객체의 자료형이 모두 숫자이고 값은 17이라면, 이 둘을 어떻게 구분하겠는가? 파이썬 인터프리터는 객체가 생성될 때마다 객체마다 고유한 숫자를 부여해서 자료형과 값이 같은 객체라도 서로 구분할 수 있도록 한다.
처음부터 너무 깊이 들어온 게 아닌가 싶다. 오늘은 파이썬이 어떤 타입을 지원하는지 샅샅이 기록하려 했는데, 파이썬의 객체 모델만 해도 상당한 분량이 되어버렸다. 그래도 "해보니까 되더라" 식보다는 이렇게 차근차근 밟아 가는 편이 나중에 속도가 잘 나온다. 계속 이렇게 가보자. 내일은 파이썬이 제공하는 자료형에 어떤 것이 있는지 알아봐야겠다.
'Python' 카테고리의 다른 글
| [파이썬 일기] #4.2.1 파이썬에는 상수가 없다! (0) | 2009/04/21 |
|---|---|
| [파이썬 일기] #4.2. 파이썬에서 데이터 다루기 (0) | 2009/04/20 |
| [파이썬 일기] #4.1. 파이썬에서 데이터 다루기 (0) | 2009/04/16 |
| [파이썬 일기] #3.2. 파이썬 시작하기 (0) | 2009/04/16 |
| [파이썬 일기] #3.1. 파이썬 시작하기 (2) | 2009/04/15 |
| 미시적 파이썬 공부 계획 (4) | 2009/04/15 |

댓글을 달아 주세요