변수란?
한마디로 객체가 저장되는 장소이다.
파이썬에서 사용하는 변수는 객체를 가리키는 것!
객체는 지금껏 공부한 자료형을 포함한 '파이썬에서 사용되는 모든것'
※ a = 3이라고 선언했을때, '3'은 상수가아닌 정수형 객체임을 참고
>>> a = 3
>>> b = 3
>>> a is b ← a와 b가 동일한 객체를 가리키는지 판단
True
두 변수는 가리키고 있는 대상이 동일
따라서 동일한 객체를 가리키고 있는지 아닌지에 대해 판단하는
파이썬 내장 함수 is 함수를 실행하면 참(True)를 리턴.
레퍼런스 카운트는 2.
파이썬에는 입력한 자료형에 대한 참조 개수를 알려주는 sys.getrefcount 함수가 있음.
이 함수를 사용해 3이라는 정수형 객체의 참조 개수를 알아보면
>>>import sys
>>>sys.getrefcount(3)
29
29는 python 을 구현한 내부코드에서 3이라는 숫자를 29번 참조했다는 의미이고
a = 3, b = 3 과 같이 3을 가리키는 변수를 늘리면
>>>a = 3
>>>sys.getrefcount(3)
30
>>>b = 3
>>>sys.getrefcount(3)
31
참조 개수가 증가함.
변수를 만드는 여러 가지 방법
튜플
>>>a , b = ('python', 'life')
=
>>>(a, b) = 'python', 'life'
리스트
>>>[a,b] = ['python', 'life']
여러 개
>>>a = b = 'python'
변수 값 바꾸기
>>>a = 3
>>>b = 5
>>>a, b = b, a ← a와 b의 값을 바꿈
>>>a
5
>>>b
3
메모리에 생성된 변수 없애기
Garbage collection
>>>a = 3
>>>b = 3
>>>del(a)
>>>del(b)
변수 a 와 b 가 3이라는 객체를 가리켰다가
del 이라는 내장함수에 의해 사라져서 레퍼러스 카운트가 0이 되어
정수형 객체 3도 메모리에서 사라짐.
리스트를 변수에 넣고 복사하고자 할 때
>>>a = [1, 2, 3]
>>>b = a
>>>a[1] = 4
>>>a
[1, 4, 3]
>>>b
[1, 4, 3]
b라는 변수에 a가 가리키는 리스트를 대입했는데
a[1]을 4라는 값으로 바꾸면 b리스트도 똑같이 바뀜.
b 변수를 생성할 때 a와 같은 값을 가지도록 복사해 넣으면서
a가 가리키는 리스트와는 다른 리스트를 가리키게 할려면???
1. [:] 이용
>>> a = [1, 2, 3]
>>> b = a[:] ← a리스트 전체를 복사하여 b에 대입
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]
값만 복사 ㅎㅎ
2. copy 모듈 이용
>>> from copy import copy
>>> b = copy(a)
이것도 값만 복사 ㅎㅎ 객체는 다름
'파이썬 복습' 카테고리의 다른 글
3/ 23 if 문 (1/2) (0) | 2018.03.23 |
---|---|
3/23 연습문제 (0) | 2018.03.23 |
3/21 자료형의 참과 거짓 (0) | 2018.03.21 |
3/20 집합 자료형 (0) | 2018.03.20 |
3/19 딕셔너리 자료형 (0) | 2018.03.19 |