[TIL] Python 데이터 타입

NakTa·2021년 11월 10일
0

TIL

목록 보기
1/2

C++로 공부를 하다가 python으로 넘어오니 헷갈리는 부분이 많아진다.

메모리 구조는 어떤지(데이터, 스택 힙 등), 포인터없이 어떤 꼴로 class를 만드는 건지? C언어로 처음에 만들었다고 했으니까 C++ 에서의iterator(?) 형식으로 하는건지? 동적 할당 개념? 가비지 콜렉터? 함수 호출은 스택 형식이 아닌가? call by는 어떤지 등 C++도 완벽하지 않은 상태에서 다시 python으로 공부를 하려니 혼란스러워 지는 부분이 많은 것 같다.

그래서 맨 처음에는 data type을 정리해야 call by, 파이썬에서 객체 개념 등 더 들어가면서 공부를 할 수 있을 것 같다.

파이썬은 C언어 처럼 데이터 타입을 지정해주지 않아도 된다.

int a = 1;
double b = 1.0;
char c ='a';
# python
a = 1
b = 1.0
c = 'asdf'

python은 데이터 타입을 지정해주지 않아도 된다. 파이썬은 C처럼 compile해서 구동하는 방식이 아니고 한 줄 한 줄씩 진행하는 인터프리터형 언어라서 그때 그때 맞는 데이터 변수 타입을 찾는다고 보면 된다.

완전 편한 것 같긴하지만, 문제도 있고 그 문제에 따른 대안도 있다.

[C같은 경우]

int a =3;
int b = 4;
printf("%d", a/b); //  0 
a =3
b = 4
print(a/b) # 0.75 실수형이 출력
print(a//b) # 0이하 부분은 버리고 정수형으로 출력

파이썬 자료구조

C++에서는 ADT를 쓰기 위해 STL을 이용을 했는데 파이썬에서는 내부적으로 제공한다.

  • 문자열
  • 리스트(list)
  • 딕셔너리(dict)
  • 세트(set)

맨 먼저 리스트

알고리즘 문제를 푸는데 list를 많이 이용하게 되었다. 그런데 list를 쓰면서 시간복잡도를 생각하는데, C++에서 vector랑 달리 list는 node 형식이라서 random access가 없고 있더라도 O(n)을 가질 줄 알았는데 아니었다.

그래서 list의 내부 구조가 궁금하였고, 파이썬 리스트 내부 구조를 구글에서 검색하다가 우연히 친구가 작성한 블로그를 확인하였다.(링크

친구가 작성한 글도 읽고 공식문서도 어렵지만은 읽어보려고 노력하였다. 공식문서에서는 list는 오히려 C++에서 vector와 비슷하게 동작한다고 적혀있었고, 이중 포인터를 이용했기 때문에 vector처럼 임의 접근이 가능하였고, 서로 다른 데이터 형식을 넣을 수도 있었던 것이다.

파이썬을 앞으로 어떻게 공부할 것인가

리스트를 어떻게 쓰는지 딕셔너리를 어떻게 쓰는지 집합을 어떻게 쓰는지에 등 간단한 사용과 개념에 대한 부분은 빠르게 학습을 할 수 있는 영역이다. 그런 공부만으로는 깊이가 조금은 부족할 수 있다. 친구에게 조언을 얻었는데 파이썬 공식문서를 이해하는 것을 목표로 공부할 수 있으면 된다고 한다.

공식문서 처음 볼 때는 매우 어려운데 그 공식문서를 이해하기 위해 여러 검색과 공부를 하면서 실력이 더 느는 것을 느낄 수 있다고 한다. 지금 당장은 이외에도 공부해야할 내용이 많아서 공식문서를 이해하기 위한 공부는 무리 일 수 있지만, 장기적인 방향설정을 할 수 있었다.

다음에 살펴볼 키워드

mutable vs immutable / iterable vs not iterable

profile
작은 것 부터 다시 시작하기

0개의 댓글