<변수와 메모리>
파이썬에서 사용하는 변수는 객체를 가리키는 것이다. 즉, 파이썬은 모든 변수가 포인터의 역할을 하는 것으로 볼 수 있다. 변수에 저장되는 것은 주소 id(변수) 함수를 이용해서 각 변수가 가리키고 있는 주소값을 출력할 수 있다. 따라서 다음과 같이 슬라이싱을 이용하여 같은 주소를 가리키는 포인터가 아니라 실제 값을 복사할 수 있다. (마치 c에서 strcpy를 이용해서 문자의 포인터 형인 문자열을 복사할 수 있었던 것처럼) 혹은 string.h 헤더 파일로부터 strlen 함수를 가져온 것처럼 라이브러리에서 copy()함수를 가져올 수도 있다.
#copy 함수 추가
from copy import copy
a = [1, 2, 3]
b = a[:]
b[2] = 5
c = copy(b)
c[1] = 4
print(a) #출력값 : [1, 2, 3]
print(b) #출력값 : [1, 2, 5]
print(c) #출력값 : [1, 4, 5]
c언어로 포인터를 한참 헤매고 와서 그런지 이 기능은 쉽게 다가왔는데, 조코딩 님의 강의에서 코딩을 할 때 헷갈리면 사용하기 좋은 사이트를 알려주셨다! (http://pythontutor.com/visualize.html) 코드를 짜는 줄마다도 메모리 구조(?)가 어떻게 되어있는지 확인할 수 있어서 시각적으로 이해하기도 편했고, 몇 번 사용하다 보면 포인터 개념에 대해서도 잘 적응할 수 있을 것 같다.
<변수의 다양한 할당 방법>
두 가지 이상의 변수를 한꺼번에 저장할 수도 있다. 이 때는 튜플로 저장해도 되고 , 리스트로 저장해도 같은 결과를 얻을 수 있다. 또한, 같은 값을 가지는 변수를 할당할 때는 c = d = 값 이런 식으로 한꺼번에 할당해 줄 수도 있다. 또한 두 변수를 swap 할 때, a, b = b, a 로 쉽게 값을 서로 바꿀 수 있다.
#아래는 튜플 자료형으로, (a, b) = (...)와 같다.
a, b = ('python', 'life')
print(a)
print(b)
c = d = 'hello'
print(c)
print(d)
a = 3
b = 5
a, b = b, a
print(a)
print(b)
'TIL > Python | Django' 카테고리의 다른 글
2021.5.8 TIL : [Python] 기초 문법6 - 세트 (0) | 2021.05.08 |
---|---|
2021.5.7 TIL : [Python] 기초 문법5- 딕셔너리(1) (0) | 2021.05.07 |
2021.3.2 TIL : [Python] 기초 문법3 (0) | 2021.03.02 |
2021.3.2 TIL : [Python] 기초 문법2 (0) | 2021.03.02 |
2021.3.1 TIL : [Python] 기초 문법1 (0) | 2021.03.01 |
댓글