• 숫자
    • 버전 2까지 int와 long을 별도로 제공하였다.
      • int는 fixed precision 정수형이었고
      • long은 arbitrary precision 정수형이었다.
    • PEP 237 로드맵에 따라 버전 3부터는 int 단일형으로 통합되었다.
    • int는 arbitrary precision을 지원하며, 파이썬에서 fixed precision은 더이상 지원되지 않는다.
    • bool 타입 또한 내부적으로 int형으로 처리된다.
    • * 임의 정밀도(arbitrary precision)?
 

파이썬(Python) 정수 자료형(Integer)과 오버플로우(Overflow)

파이썬(Python)에서는 정수 자료형(Integer)에 오버플로우(Overflow)가 없다. C언어를 사용하던 프로그...

blog.naver.com

 

 

  • 매핑
    • 키와 자료형으로 구성된 복합 자료형
    • 파이썬에 내장된 매핑 자료형은 딕셔너리
  • 집합
    • 중복된 값을 갖지 않는 자료형
    • 입력순서가 유지되지 않는다
  • 시퀀스
    • 대상의 순서 있는 나열
    • list가 시퀀스 타입
    • 불변 시퀀스 - str, tuple
    • 가변 시퀀스 - list
  • 원시타입(primitive type)
    • C  : 원시타입만을 지원
      • 원시타입은 메모리에 정확하게 타입 크기만큼의 공간 할당하고
      • 그 공간을 값으로만 채운다.
    • 자바 : 원시타입과 객체 동시 지원
      • 여러가지 기능 지원 (ex. 대소문자 바꾸기, shifting 등등)
      • 객체 타입의 경우 편리한 기능 제공하지만, 메모리 더 많이 차지
    • 파이썬 : 원시타입 지원하지 않는다
      • 느린 속도와 더 많은 메모리 차지하더라도 다양한 기능을 제공하는 것에 주목
      • 원시타입을 포기하는 대신, 다양한 기능을 얻었다
  • 객체
    • 파이썬은 모든 것이 객체이다.
    • 불변 객체
      • 부울, 정수, 실수, 튜플, 문자
      • a = 10; b = a; 인 상황에서 a = 11로 바꾸어도 b는 바뀌지 않는다 (불변 객체라서)
        • print(id(a), id(b)) 찍어보면 전자는 a=11로 하며 바뀌었지만 b는 그대로이다.
    • 가변 객체
      • 리스트, 집합, 딕셔너리
      • a = [1, 2, 3]; b=a;인 상황에서 a[0]=10으로 바꾸면 b도 바뀐다 (가변 객체라서)
        • print(id(a), id(b)) 찍어보면 전자, 후자 모두 a[0]=10 해도 메모리 주소 동일하다
        •  
    • is는 id값을 비교하는 함수, ==는 내부 동일한 값을 가지는 지 비교하는 연산자

불변객체 
가변객체

 

 

 

  • 속도
    • 원시타입이 지원된다면, 메모리에서 값을 꺼내 연산만 수행하면 된다.
    • 하지만 원시타입이 지원되지 않는 파이썬의 경우, 객체를 꺼내는 등 부가적인 작업 필요하다.
    • 따라서 파이썬이 C나 자바 등 원시타입이 지원되는 언어 대비 느린 것이다.
    • numpy는 빠른 속도로 유명한데, 넘파이는 C로 만든 모듈이며 내부적으로 리스트를 C의 원시타입으로 처리하기 때문이다.
  • 자료형 : 데이터의 속성 (정수형, 실수형, 문자열 등)
  • 자료구조  : 자료형을 기반으로 하는 객체

+ Recent posts