본문 바로가기

computer/python

데이터 타입, type

데이터의 타입은 매우 중요하다. 타입을 어떤 물체(object)에 대한 분류라고 생각하자. 예를들어 진돗개, 말티즈, 포메라이안 등은 개에 속한다. 인간은 황인, 흑인, 백인 등으로 나눌 수도 있다. 어떤 물체를 개나 인간이라고 하면 개나 인간 공통된 속성을 갖는다.

컴퓨터에서 사용하는 데이터도 특정한 종류로 분류할 수 있다. 이 종류는 프로그래밍 언어나 운영체제 등 여러 기준에 따라 달라지는데, 파이썬 프로그래밍에서 구분하는 데이터 타입을 알아보자.

파이썬에서는 데이터 타입을 숫자와 문자, 리스트와 튜플처럼 이들을 담기 위한 데이터 구조를 능숙하게 이용해야 한다. 숫자는 정수와, 소수점을 표현하는 수로 구분할 수 있다. 정수는 int, 소수점을 표현하는 수는 float, 글자는 str 타입을 갖는다. 다른 언어에서는 문자는 하나의 문자 char, 문자열 string으로 구분하기도 한다.

파이썬 타입

위 이미지에서 보는 것처럼 파이썬에서 데이터 타입은 클래스로 구현되어있다. 파이썬 빌트인 함수가 저장되어있는 builtins.py에 구현된 str 클래스는 다음과 같다.  

str 클래스

 파이썬의 클래스에는 스페셜 메소드가 있다. 클래스에 스페셜 메소드가 추가되면 특정한 문법(syntax)을 통해 미리 정해놓은 연산이 가능하다. str 클래스에 __add__ 가 추가되어 있으면 +를 사용할 수 있다.

str 클래스의 special 메소드

파이썬의 데이터 타입은 클래스로 구현되어 있기 때문에 클래스를 구현한 코드를 보면 각 클래스에 정의된 메소드로 물체(object)를 어떻게 사용할 수 있는지 알 수 있다. 밑의 코드 예에서 보는 것처럼 숫자 1과 글자 '1'은 모두 +를 할 수 있는데, 숫자 1과 글자 '1'은 다른 클래스에 속하기 때문에 +가 하는 행위가 다를 수 있다. 

1 // 숫자
'1' // 글자
1 + 1 // 숫자의 합 2
'1' + '1' // 글자의 합 '11'
1 + '1' // 숫자와 글자의 합 TypeError

숫자의 합은 숫자 2를 반환하고 '1' + '1'은 '11'을 반환한다. 파이썬에서 서로 다른 타입을 갖는 object 끼리의 연산을 하면 TypeError를 반환한다. 언어 차원에서 에러가 발생하지 않도록 다른 타입으로 동적으로 변환시켜줄 수 있는데 파이썬은 타입 에러를 명확하게 구분한다. 에러가 발생하는 상황이 불편하게 느껴질 수 있지만 타입에러는 프로그램의 안정성을 위해 매우 중요한 장치이다.

파이썬의 대표적인 자료구조(data structure)인 리스트는 다른 object들을 하나로 묶을 수 있다. 같은 타입의 object 뿐 아니라 다른 타입의 object들도 하나의 리스트에 포함시킬 수 있다.

python list

리스트에서 +는 하나의 리스트의 마지막 요소 뒤에 다음 리스트의 요소(element)를 더해 하나의 리스트로 만드는 방식으로 구현되있는 것을 알 수 있다.

list에서 + 연산

파이썬은 리스트 외에도 tuple, set, dict 등의 자료구조를 제공한다. 각 자료구조가 제공하는 기능을 이용해 다양한 목적으로 프로그래밍에 활용할 수 있다.  

 

Reference

https://docs.python.org/3/reference/datamodel.html 

https://mingrammer.com/underscore-in-python/ 

'computer > python' 카테고리의 다른 글

클래스, class - 1  (0) 2022.11.05
초 단위의 디지털 시계를 어떻게 구현할 것인가?  (0) 2022.10.07
함수, function  (0) 2022.08.05
print 함수  (0) 2022.08.03
어느 환경에서 파이썬을 시작해야 할까?  (0) 2022.07.25