python

Python Data Type

MasterOfAI 2020. 12. 14. 10:01

파이썬 데이터는 객체다 

+파이썬 에서는 데이터 원시값 (bit 뭉치)를 그대로 사용하지 않는다. 

+각 데어터 값을 메모리에 객체로 래핑한다. 

+객체는 상자와 같다. 

++타입을 정의 한다. 

++ 다른 객체와 구별하기 위한 고유 ID

++ 값

++ 객체의 사용 빈도를 추적하는 참조 횟수

+타입

++bool

++int

++float

++complex(복소수)

++str

++list      - 가변

++tuple

++bytes

++bytearray - 가번

++set       - 가변

++frozenset

++dict      - 가변

+가변성

++상자의 값을 변경할수 있는지 유무. 하지만 타입은 변경 할 수 없다. 

+리터럴 값

++?

+변수

++대소문자 구분함

++예약어 사용 불가

+++'help("keywords")' 명령으로 에약어 리스트를 볼 수 있다. 

++숫자, 알파벳, 언더바 만 사용가능

++장소가 아니라 이름

++할당(=)은 값을 복사하지 않는다. 단지 데이터를 포함하는 객체에 이름을 붙인다. 이름은 객체가 아닌 객체에 대한 참조다.

 ++파이썬에서 어떤 타입의 변수 또는 리터럴 값을 알고 싶다면 type() 메서드를 사용한다. 변수가 특정 타입의 객체를 가리키는지 확인하려면 isinstance() 내장 함수를 사용한다. 

 ++다음과 같이 두번 할당한다면, 아래와 같이 하나의 객체에 이름표가 2개 생기는 꼴임

     a = 7

     b = a

 ++ 다음 구문을 해석해 보자 

      y=5

      x=12-y

      * 값이 5인 정수 객체를 생성 

      * 변수 y가 객체 5를 가리키도록 한다. 

      * 값 5인 객체의 참조 횟수를 증가시킨다. 

      * 값이 12인 다른 정수 객체를 생성한다. 

      * (익명) 객체의 값 12와 변수 y가 가리키는 값 5를 뺀다. 

      * 값 7은 이름이 없는 새 정수 객체에 할당된다. 

      * 변수 x가 새 정수 객체를 가리킨다 

      * x가 가리키는 새로운 객체의 참조 회수를 증가시킨다. 

 ++ 참조 회수가 0 이면, 필요 없는 객체로 인식되어, 가비지 컬렉터에 의해 자동 삭제 된다. 참조 회수는 연결되는 이름 즉 변수의 개수가 늘어나면, 늘어나고 , 감소하면 감소한다. 최종적으로 해당 객체에 연결된 변수가 없다면, 0이 된다. 

 ++ 하나의 객체를 여러개의 변수에 동시 할당하기 

      two = deux = zwei = 2

 ++ 변수의 값을 바꾸면, 변수 이름에 새 객체가 할당된다. 

      a = 100

      a = 200

      * 변수 a는 100 객체를 가리킨다. 100 객체의 참조 회수가 1로 증가한다. 

        변수 a는 200 신규 객체를 가리킨다. 100 객체의 참조 회수가 0로 감소하고, 200 객체의 참조 회수는 1로 증가한다. 

 ++ 기막힌 재할당 규칙 , 불변 객체의(정수) 경우 

     x = 5    //x는 5를 가리킨다. 

     y = x    //y는 5를 가리킨다. 

     x = 29  //x는 새로운 객체인 29를 가리킨다. 

               //이때 y는 여전히 5를 가리킨다 

 

 ++ 기막힌 재할당 규칙, 가변 객체의(list) 경우 

     a = [2,4,6]   //a = 2,4,6 list를 가리킨다. 

     b = a         //b = 2,4,6 list를 가리킨다. 

     a[0] = 99    //a = 99,4,6 list를 가리킨다. (이 경우 새로운 객체를 가리키는 게 아니라 내용이 가변 되었다)

                     //b = 99,4,6 list를 가리킨다. (b 역시 이전 객체를 가리키지만, 내용이 가변 되었다)

 

 

 

 

 

'python' 카테고리의 다른 글

raise  (0) 2021.01.12
python netstat + telnet test  (0) 2020.12.28
python ping + telnet test  (0) 2020.12.28
Python Number  (0) 2020.12.15
왜 python 인가?  (0) 2020.11.26