파이썬 목차 보기
0. INTRO
함수는 단순히 지시만을 명령하는 것이 아니라, 데이터 타입까지도 그룹으로 지정하여 줄 수 있다. 이는 사용자가 임의로 정의하는 것이 가능하며, 이를 구조체라고 명시한다. 나중에 사용할지도 모르는 구조체를 위해서 데이터의 타입에 대해 자세히 알아보도록 하자.
1. 데이터의 유형(Type)
파이썬에서 사용하는 데이터 유형은 크게 숫자형 3개와 문자형 2개가 존재한다. 물론 그 외에도 더 있지만, 자주 사용하는 5개를 알아보도록 하자. 숫자형에는 정수(integer), 부동 소수점(floating point), 번호(unit number) 형태의 데이터 유형이 있다. 그리고 문자형에는 문자(character), 문자열(string) 형태의 데이터 유형이 존재한다. 다음의 개요도를 참고하자.
데이터 유형을 지정하는 이유는 프로그램을 효율적으로 만들기 위해서이다. 우리가 저장하려고 하는 정보가 만약 정수인데 저장하고자 하는 데이터 영역의 크기를 쓸데없이 크게 할당하면, 항상 남는 부분이 생길 것이고 이는 공간적 측면에서 손해이다. 데이터 유형을 지정해줌으로써 이러한 손해를 줄일 수 있다. 예컨대, 정수형은 2 바이트(bytes) 크기의 데이터를 할당해준다. 그리고 소수형은 4 바이트 크기의 데이터를 할당한다.
* 프로그램마다 할당되는 데이터 크기는 약간의 차이가 존재하며, 1 바이트는 8 비트(bits)이다.
2. 데이터 유형의 지정 방식
데이터 유형을 지정해주는 방식은 두 가지로 사용자 정의(User-defined) 방식과 시스템 정의(System-defined) 방식이 존재한다. 파이썬에서는 기본적으로 시스템 정의 방식에 의해서 데이터 유형을 자동으로 판단하는 기능이 존재한다. 예를 들어, 내가 a=1이라고 변수를 정의했다면, 시스템이 자동으로 정수형 데이터로 인식하고 그 데이터를 저장한다. 하지만, 이러한 방식은 내가 의도치 않는 데이터 타입을 반환하는 오류가 발생할 수 있다. 대표적으로 나눗셈 연산을 시행하면 시스템 정의 방식은 그 결과에 대해 항상 소수형 데이터로 인식한다. 다시 말해서, 1 나누기 1이 1이어도 1.0으로 저장한다는 말이다. 따라서 컴퓨터 프로그램을 조금 더 유연하게 제작하려면 사용자 정의방식으로 데이터 유형을 지정할 수 있어야 한다.
예를 들어 두 변수를 각각 덧셈 나눗셈하여 데이터를 저장하는 프로그램을 제작한다고 해보자. a와 b를 변수로 선언하고 임의의 숫자에 대해서 다음의 코드를 실행하면 결과는 다음과 같다.
* type(변수) 코드는 변수의 데이터 타입을 출력해주는 코드이다.
예시 코드:
def operation(a,b):
print(a+b)
print(a/b)
return type(a+b),type(a/b)
a= 4
b=4
operation(a,b)
코드 결과 :
이 결과는 시스템이 자동으로 데이터 타입을 결정해준 결과이다.
대부분의 프로그램 언어에서는 구조체(structures)라 불리는 함수를 가지고 있으며, 구조체 안에서 사용자가 임의로 데이터 타입을 지정해줄 수 있고, 그 변수들을 그룹으로 묶어준다. 애처롭게도 파이썬에서는 구조체 함수가 존재하지 않는다. 다만, 일련의 코드 작업을 통해서 구조체를 구현화하는 방법이 존재할 뿐이다. 여기에서는 거기까지는 다루지는 않고, 데이터 타입을 임의로 바꾸는 코드만을 명시하고자 한다. 다음의 표를 참고하자.
변환할 데이터 유형 | 코드 | 설명 |
정수 | int() | 괄호안의 데이터를 정수형으로 반환한다. |
실수 | float() | 괄호안의 데이터를 실수형으로 반환한다. |
문자 | chr() | 괄호안의 데이터를 문자형으로 반환한다. |
문자열 | str() | 괄호안의 데이터를 문자열 형태로 반환한다. |
부울 | bool() | 괄호안의 데이터를 부울형으로 반환한다. |
3. 파이썬의 데이터 관리 _ Python/C API 기능
데이터의 구조는 크게 네 가지로 코드, 데이터, 힙, 그리고 스택 영역이 존재한다. 지금까지는 단순히 데이터의 유형 관점에서 파이썬 프로그래밍 함수를 배워 보았는데, 이제부터는 데이터를 임의로 다루는 것에 대해서 알아보기로 한다. 코드 영역에서는 프로그램의 명령 데이터가 할당되고, 변수 데이터는 데이터 영역, 그리고 지역 변수와 전역 변수의 메모리는 스택 영역으로 메모리가 할당된다. 이 정적 데이터는 파이썬에서 조작 및 관리가 가능한 것을 우리는 알고 있다. 그렇다면 동적 메모리에 해당하는 힙 영역의 관리는 어떻게 하는가? 파이썬의 내장 함수에서는 이 동적 메모리를 관리하는 함수가 전혀 존재하지 않는다. 파이썬 프로그램이 알아서 할당해주기 때문이다. 하지만 데이터베이스 관리 측면에서 힙 영역을 조작하지 못한다면, 프로그래밍 측면에서 굉장한 손해이다.
* 메모리 영역에 대한 이해가 부족하다면 다음의 사이트를 참고하자.
이러한 단점을 보완해주기 위해서 Python/C API라는 확장 모듈이 존재한다. 이 모듈은 파이썬에서도 C 모듈을 가져와 사용할 수 있도록 해주는 파이썬 메모리 관리자 역할을 한다. 다음 강의부터는 파이썬에서 동적 메모리 할당하는 방법에 대해 이야기해 보고자 한다. 이 과정은 입문자에서 중급 프로그래머로 넘어가는 과정이라고 생각하는 바이다.
'COMPUTER SCIENCE > Python' 카테고리의 다른 글
[Section 3] 동적 메모리의 할당 _ 파이썬 메모리 관리자 (0) | 2022.01.06 |
---|---|
[Section 3] 데이터 타입의 이해 _ 클라쓰(Class) (0) | 2022.01.05 |
[Section 4] 재귀 함수 예제 _ 팩토리얼 함수 구현하기 (0) | 2021.12.30 |
[Section 4] 재귀에 대하여... (0) | 2021.12.29 |
[Section 3] 함수 정의하고 사용하기 (0) | 2021.08.03 |