개발 이야기/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)