자료형의 값을 저장하는 공간, 변수
변수란?
(1) 객체를 가리키는 것 : assignment( = ) 기호를 사용해서 "변수 = 저장할 값" 과 같이 선언한다.
a = 1
b = "python"
c = [1, 2, 3]
(2) 자료형의 데이터(값)와 같은 것 : C언어나 Java처럼 자료형을 따로 지정하지 않는다.
# Java에서 숫자데이터를 변수에 저장할 때
# int javaNum = 10;
# Python에서 숫자데이터를 변수에 저장할 때
pythonNum = 10
(3) 변수에 데이터를 할당하면 그 객체는 자동으로 메모리에 생성되고 변수는 저장된 메모리의 주소를 가르키게 된다. (메모리 주소는 사용자마다 다르게 나올수 있다.)
print(id(a)) # 출력결과 : 140735303312168
b = "python"
print(id(b)) # 출력결과 : 2894261684656
c = [1, 2, 3]
print(id(c)) # 출력결과 : 2894261685376
리스트 복사
(1) [:] 사용
a = [1, 2, 3]
b = a[:]
print(a) # 출력결과 : [1, 2, 3]
print(b) # 출력결과 : [1, 2, 3]
(2) copy 모듈 사용
a = [1, 2, 3]
b = copy(a)
print(a) # 출력결과 : [1, 2, 3]
print(b) # 출력결과 : [1, 2, 3]
print(id(a)) # 출력결과 : 3151493893248
print(id(b)) # 출력결과 : 3151494869184
print(b is a) # 출력결과 : False
print(b == a) # 출력결과 : True
객체 b와 객체 a의 데이터를 비교하는 ( == )를 사용할 경우 '두 객체의 값이 같다' 는 의미로 True가 출력되고 두 객체의 메모리를 비교하는 is 키워드를 사용해서 '두 객체가 다르다' 는 의미로 False가 출력되는 것을 확인할 수 있다.
변수를 만드는 여러가지 방법
# 튜플
a, b = ('dokev', 'archive')
a, b = 'dokev', 'archive'
print(a) # 출력결과 : dokev
print(b) # 출력결과 : archive
# 값 바꾸기
a, b = b, a
print(a) # 출력결과 : archive
print(b) # 출력결과 : dokev
# 리스트
[c, d] = ['python', 11]
print(c) # 출력결과 : python
print(d) # 출력결과 : 11
x = y = 'dokev archive'
print(x) # 출력결과 : dokev archive
print(y) # 출력결과 : dokev archive