변수는 자료를 저장해두는 공간을 의미한다
a = 1
b = 'python'
c = [1, 2, 3]
print(id(a))
>>> a의 메모리주소값
print(id(b))
>>> b의 메모리주소값
print(id(c))
>>> c의 메모리주소값
여기서 변수는 a, b, c 이며 a는 1이라는 객체를 가지고있는 변수, b는 python 이라는 문자열 객체를 가지고있는 변수, c는 1,2,3 이라는 리스트 객체를 가지고있는 변수를 말한다
변수는 각각의 메모리의 주소를 할당받게 된다.
id 를 이용하여 메모리의 주소값을 출력할 수 있다.
올바른 변수 이름 : name, _name, my_name, myName
잘못된 변수 이름: 7name, my name
a = [1, 2, 3]
b = a
print(id(a))
>>> a의 메모리주소값(b의 메모리주소값과 동일)
print(id(b))
>>> b의 메모리주소값(a의 메모리주소값과 동일)
print(a is b)
>>> True
위에 처럼 = 으로 b에 a를 객체로하는 변수를 준다고해서 객체가 복사되는것이 아닌 메모리의 주소값만 복사된다.
결국 같은 객체를 바라보는 상황, id 를 활용하여 동일한 주소인지 확인가능 하다.
is 를 활용하여 참이면 동일, 거짓이면 다른것임을 확인할수 있다.
a = [1, 2, 3]
b = a
a[1] = 4
print(a)
>>> [1, 4, 3]
print(b)
>>> [1, 4, 3]
a 의 객체만 바꼈다고 생각 할 수 있으나 메모리주소값만 복사되어 a와b는 동일한 주소를 가리키는 변수가된다
따라서 b는 a의 객체의 변화를 그대로 출력한다
슬라이싱을 이용하여 a 의 객체 전체의 요소를 복사하여 b에 넣고 그뒤에 a에 1번 리스트를 4로 교체한것이니 b로 복사된 a의 객체는 변화하지않는다.
a = [1, 2, 3]
b = a[:]
a[1] = 4
print(a)
print(b)
>>> [1, 4, 3]
[1, 2, 3]
copy를 활용하여 객체들을 전부 복사하여 b에 다시넣고 그뒤에 a의 1번 리스트를 교체한 것이므로 a 와 b는 다른변수가 된다.
a = [1, 2, 3]
b = copy(a)
a[1] = 4
print(a)
>>> [1, 4, 3]
print(b)
>>> [1, 2, 3]
a, b = ('python', 'life')
print(a)
>>> python
print(b)
>>> life
(a, b) = 'python', 'life'
print(a)
>>> python
print(b)
>>> life
a, b = 'python', 'life'
print(a)
>>> python
print(b)
>>> life
[a, b] = ['life', 'good']
print(a)
>>> life
print(b)
>>> good
[a, b] = 'life1', 'good1'
print(a)
>>> life1
print(b[0])
>>> g
튜플은 괄호를 생략 가능하다.
리스트이기에 인덱싱이 사용가능하며, 객체가 문자열이므로 지정순번의 값을 출력한다.