파이썬 데이터는 객체다
+파이썬 에서는 데이터 원시값 (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 |