02-8 자료형의 값을 저장하는 공간, 변수
변수
변수를 만들 때에는 =(assignment)기호를 사용한다.
C나 Java에서는 변수의 자료형을 직접 지정해야하지만,
파이썬은 변수에 저장된 값을 스스로 판단하여 자료형을 저장한다.
객체의 주소를 가리키는 변수
파이썬에서 사용하는 변수는 객체를 가리키는 것이라 할 수 있다.
위 코드는 [1,2,3] 값을 가지는 리스트 객체가 메모리에 생성되고 변수 a는 리스트가 저장된 메모리의 주소를 가리킨다.
id함수를 사용하면 변수가 가리키는 메모리의 주소를 알 수 있다.
따라서 위 코드에서 리스트 [1,2,3] 이 들어있는 메모리의 주소는 4303....인 것이다.'
id함수는 변수가 가리키고 있는 객체의 주소값을 돌려주는 파이썬 내장 함수이다.
리스트 주소값 복사
![]()
위에서 a는 리스트 객체의 주소값을 가리키고 있다.
따라서 a=b라고 하면 b역시 리스트의 객체 주소를 가리키게 된다.
![]()
따라서 id함수로 변수가 가리키고 있는 객체의 주소값을 출력하면 같은 값을 반환한다.
![]()
a리스트이 값을 바꾸어도 b리스트 값 역시 바뀐다. 왜냐! a와 b는 동일한 리스트를 가리키고 있으니까
동일한 객체이므로 a is b는 True로 반환된다.
리스트 내용 복사
- 슬라이싱 하여 내용 복사
동일한 객체를 가리키는 것이 아니라 내용 자체를 복사해서 새롭게 갖고싶다면 리스트를 슬라이싱해서 b에 할당해준다.
- copy 모듈을 사용하여 내용 복사
'from copy import copy'라는 문장을 입력하여 모듈을 사용할 수 있도록 한다. 여기서 copy함수를 사용하기 위해서이다.
copy함수를 사용하면 a 리스트 내용을 그대로 복사하여 b에 할당해준다.
a=b 로 주소값을 할당해주었을 때에는 둘이 동일한 객체가 되었지만, 여기서는 내용만 같은 서로 다른 객체이기 때문에
b is a에 대하여 객체가 동일하지 않다는 False로 반환된다.
변수를 만드는 여러가지 방법
튜플(Tuple)
a,b=('python','life')
(a,b)='python','life'
변수 a,b에 튜플을 대입한 것이다. 튜플은 괄호 생략이 가능하기 때문에, 두 예문은 동일하다.
리스트
[a,b] = ['python','life']
리스트로 변수를 만들 수 있다. 여기서 a는 python이고, b는 life를 가리킨다.
여러 변수에 같은 값 대입
a=b='python'
여러 변수에 한번에 같은 값을 대입해줄 수 있다.
두 변수 값 바꾸기
a,b=b,a 문장을 수행하면 두 변수가 가리키는 값이 바뀐다.
내용이 동일한 리스트
a와 b 리스트가 동일한 값을 가지고 있지만, 리스트를 구성하는 요소의 값만 동일할 뿐, 두 리스트는 서로 다른 메모리에 저장되어있다.
변수는 리스트가 저장되어있는 메모리의 주소를 가리키는 것이므로 a와 b는 서로 다른 메모리 주소를 가리키고 있을 것이므로 a is b 에 대한 반환값은 False이다.
'Coding > Jump to Python' 카테고리의 다른 글
Python - while문 / break / continue / 무한루프 빠져나오기 (0) | 2023.09.08 |
---|---|
Python - if문 제어 / 비교문 종류 / 비교연산자 / in / not in / elif (0) | 2023.09.08 |
Python - 불(Bool) 자료형 / 자료형의 참 거짓 판별 (0) | 2023.09.08 |
Python - 집합(set) 자료형 / unordered / 합집합 / 교집합 / add / remove / update 함수 (0) | 2023.09.08 |
Python - Dictionary 자료형 / 딕셔너리 추가 & 삭제 / 딕셔너리 관련 함수 (0) | 2023.09.08 |