앎을 경계하기

Programming/Python

Python 변수, 객체, 복사

양갱맨 2019. 12. 25. 23:42
# 파이썬에서 변수는 다음과 같이 사용할 수 있다.

a = 1
b = 'python'
c = [1,2,3]

변수

파이썬의 변수는 객체를 가리키는 것이다.
파이썬은 모든 것을 객체로 취급한다.

type(3) # 3은 정수 상수가 아니라 정수형 객체이다.
int

 

a = 3
b = 3
a is b # a와 b가 동일한 객체를 가리키는가
True

 

# 참조 개수 확인하기
import sys
sys.getrefcount(3)
507

 

x = 3
sys.getrefcount(3)
503

 

y = 3
sys.getrefcount(3)
504

 

z = 3
sys.getrefcount(3)
505

 

#메모리에 생성된 변수 삭제하기
del(x)
del(y)

 

복사

파이썬에서는 흔히 복사를 사용할 때 겪는 문제가 있다.

a = [1,2,3]
b = a
a[1] = 4
a
[1, 4, 3]

 

b # b의 값도 변하게 된다. 이름만 다르고 가리키는 객체가 a와 같기 때문이다.
[1, 4, 3]

제대로 복사하기

a = [1,2,3]
b = a[:]
a[1] = 4
print(a)
print(b)
[1, 4, 3]
[1, 2, 3]

 

from copy import copy
b = copy(a)
b is a # 서로 다른 객체임을 확인할 수 있다.
False

참고 도서 : Do It! 점프 투 파이썬