개발 이야기/Python
Python - 10. 변수
Crazy Lazy
2021. 7. 20. 21:54
1. 변수의 정의 및 특징.
- 객체를 가리킴. (정확히는 객체가 저장된 메모리 주소를 가리킴)
- 변수 생성 시 다양한 형태 생성 지원. (튜플, 리스트 등)
# 변수 일반 선언.
a=1
# 변수 튜플 형태로 한번에 선언. (튜플 형태로 사용하는게 아닌 각각이 일반 변수로 생성 됨.)
b,c=(2,3)
(b,c)=2,3
(b,c)=(2,3)
# 변수 리스트 형태로 한번에 선언. (리스트 형태로 사용하는게 아닌 각각이 일반 변수로 생성 됨.)
[d,e]=[4,5]
# 변수 동일 값 선언.
f=g=6
print(a,b,c,d,e,f,g) # 결과 : 1 2 3 4 5 6 6
2. 변수의 복사 및 메모리.
대입을 통해 복사된 변수는 메모리 주소 값을 복사.
a=1
c=[1,2,3]
# 메모리 주소 확인. (주소 결과는 저장 시 마다 내용이 다름에 유의)
id(a) # 결과 : 139910111557936
# 대입을 통한 값 복사.
b=a
d=c
print(id(a),id(b),a is b) # 결과 : 139910111557936 139910111557936 True
print(id(c),id(d),c is d) # 결과 : 139910109257152 139910109257152 True
# 일반 변수 형태의 복사 영향 없음 확인.
a=3
print(a,b,id(a),id(b),a is b) # 결과 : 3 1 139910111558000 139910111557936 False
# 리스트 형태의 변수, 대입 복사 시 영향 있음 확인.
c[1]=7
print(c,d,id(c), id(d),c is d) # 결과 : [1, 7, 3] [1, 7, 3] 139910109257152 139910109257152 True
# [:]을 통한 값 복사.
d=c[:]
c[1]=13
# 리스트 형태의 변수, [:] 복사 시 영향 없음 확인.
print(c,d,id(c),id(d),c is d) # 결과 : [1, 13, 3] [1, 7, 3] 139910109252416 139910109257152 False
# 그 외 모듈 설치를 통한 copy 사용 시 [:] 와 동일한 효과.
d=copy(c)