티스토리 뷰
#11 파이썬 chapter 11. 자료형의 값을 저장하는 공간, 변수
오늘 적을 내용은 나와 같이 프로그래밍 초보자가 바로 이해하기 어려운 부분이라 당장 이해가 되지 않는다면 편하게 지나간다는 느낌으로 공부 해 보자. 앞으로 파이썬에 대해 공부하다 보면 자연스럽게 알게 될 것이다.
a = 1
b = "python"
c = [1, 2, 3]
변수를 만들 떄는 위 예처럼 = 기호를 사용한다.
변수이름 = 변수에 저장할 값
1. 변수란?
파이썬에서 사용하는 변수는 객체를 가리키는 것이라고 말할 수 있다. 객체란 우리가 지금껏 공부 하면서 봤던 자료형과 같은 의미이다.
a = [1, 2, 3]
위 코드처럼 a = [1, 2, 3] 이라고 하면 리스트 자료형이 자동으로 메모리에 생성되고 변수 a는 [1, 2, 3] 리스트가 저장된 메모리의 주소를 가리킨다.
a 변수가 가리키는 메모리의 주소는 다음과 같이 확인할 수 있다.
a = [1, 2, 3]
id(a)
2744272885696
위 처럼 id 함수는 변수가 가리키는 객체의 주소 값을 돌려주는 파이썬 내장 함수이다. 즉 여기에서 만든 변수 a가 가리키는 [1, 2, 3] 리스트의 주소 값은 4303029896 인 것을 알 수 있다.
2. 리스트 복사할 때
이번에는 리스트 자료형에서 가장 혼동되기 쉬운 '복사' 에 대해 알아보자.
a = [1,2,3]
b = a
b 변수에 a 변수를 대입하면 어떻게 될까? b와 a는 다른 걸까? 결론부터 말하면 b는 a와 완전히 같다고 볼 수 있다.
다만 [1,2,3] 리스트를 참조하는 변수가 a 변수 1개에서 b 변수가 추가되어 2개로 늘어났다는 차이만 있을 뿐이다.
id(a)
2744272726336
id(b)
2744272726336
id(a) 와 id(b) 가 동일하다는 것을 볼 수있다.
a is b
True
동일한 객체를 가리키고 있는지에 대해서 판단하는 파이썬 명령어 is를 사용하여 실행해도 역시 참(True)를 돌려준다.
다음 예를 계속해서 살펴보자.
a[1] = 4
a
[1, 4, 3]
b
[1, 4, 3]
a 리스트의 두번째 요소를 4로 바꾸었더니 a만 바뀌는 것이 아니라 b도 똑같이 바뀌었다. 그 이유는 앞에서 살펴본 것처럼 a,b 모두 동일한 리스트를 가지고 있기 때문이다.
그렇다면 b변수를 생성할 때 a변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만들수는 없을까?
다음과 같이 2가지 방법이 있다.
1) [:] 사용
a = [1, 2, 3]
b = a[:]
a[1] = 4
a
[1, 4, 3]
b
[1, 2, 3]
첫 번째 방법은 위와 같이 리스트 전체를 슬라이싱하는 [:] 을 사용해서 복사하는 것이다. 그러면 a 리스트 값을 바꾸더라도 b 리스트는 변하지 않는다.
2) copy 모듈 사용
from copy import copy
a = [1, 2, 3]
b = copy(a)
두 번째는 copy 모듈을 사용하는 방법이다. 위 예를 보면 from copy import copy 라는 처음 보는 형태의 문장이 나오는데, 이것은 나중에 다시 다루도록 하자. 여기선 단순히 copy 함수를 쓰기위해서 사용하는 것이라고만 알아두자.
위 예에서 b = copy(a) 는 b = a[:] 과 동일하다.
a
[1, 2, 3]
b
[1, 2, 3]
a is b
False
위 예에서 b is a가 False를 돌려주므로 b와 a가 가리키는 객체는 서로 다르다는 것을 알 수 있다.
3. 변수를 만드는 여러가지 방법
a, b = ('python', 'life')
위 예문처럼 튜플로 a, b에 값을 대입할 수 있다. 이 방법은 아래와 예문과 완전히 동일하다.
(a, b) = 'python', 'life'
튜플 부분에서도 언급했지만 튜플은 괄호를 생략해도 된다.
[a, b] = ['python', 'life']
위처럼 리스트로 변수를 만들 수도 있다.
또한 여러 개의 변수에 같은 값을 대입할 수도 있다.
a = b = 'python'
a = 3
b = 5
a, b = b, a
a
5
b
3
파이썬에서는 위 방법을 사용하여 두 변수의 값을 아주 간단히 배울 수 있다.
처음에 a에 값 3, b에는 값 5가 대입되어 있었지만 a, b = b, a 문장을 수행한 후에는 그 값이 바뀌었음을 확인할 수 있다.
출처 : 점프 투 파이썬
'파이썬의 기초' 카테고리의 다른 글
파이썬의 제어문 (while문) (0) | 2021.03.13 |
---|---|
파이썬의 제어문 (if문) (0) | 2021.03.11 |
파이썬의 기초(불 자료형) (0) | 2021.03.09 |
파이썬의 기초 ( 집합 자료형) (0) | 2021.03.09 |
파이썬의 기초 (딕셔너리 관련 함수) (0) | 2021.03.08 |