점프 투 파이썬 참고: https://wikidocs.net/18
메모리(저장공간) 값을 저장하는 곳
메모리에 주소가 있음
변수에는 주소가 있어서 변수를 불러올 때 주소를 불러오는 것
변수를 만들 때는 "=" 기호 사용
파이썬에서 사용하는 변수는 객체를 가리키는 것
객체가 있으면 method를 이용해서 함수 적용 가능
⭐️ snake case 표기법
모두 소문자로 입력하고 단어 사이를 _
로 연결
http://pythontutor.com/live.html#mode=edit
a = 1
a = [1, 2, 3]
a = [1, 2, 3]
b = a 👉 b에 a의 주소를 줌. a와 주소가 같아짐.
a = [1, 2, 3]
b = a
a[1] = 4
a = [1, 2, 3]
b = a
a[1] = 4
print(id(a))
print(id(b))
👉
4513729344
4513729344
(주소값이 같음)
a = [1, 2, 3]
b = a
a[1] = 4
print(a is b)
👉 True
a = [1, 2, 3]
b = a[:] ➡ 주소를 주는 게 아니라 값을 주는 거
a[1] = 4
print(a)
print(b)
👉
[1, 4, 3] ➡ a
[1, 2, 3] ➡ b
a 라는 리스트를 처음부터 끝까지 슬라이싱해서 그 값을 b한테 주는 거
즉, 슬라이싱하면 새로운 [1,2,3]이라는 리스트가 생겨서 그걸 b에 넣는 거
말 그대로 값을 복사한 거. 주소가 아니라.
a = [1, 2, 3]
b = a[:]
a[1] = 4
print(id(a))
print(id(b))
👉
4394728320
4395013952
(id를 찍어보면 주소 다르게 나옴)
위에 슬라이싱이랑 똑같이
a 리스트 주소를 주는 게 아니라
값을 복사해서 a 리스트를 b한테 새롭게 할당하겠다
from copy import copy
a = [1, 2, 3]
b = copy(a)
a[1] = 4
print(id(a))
print(id(b))
👉
4553428032
4553425600
(주소값이 다름)
새로운 주소에 값을 복사해서 넣은 거
복사한 것을 b한테 새로운 주소를 할당해 주는 거
from copy import copy
a = [1, 2, 3]
b = copy(a)
a[1] = 4
print(a)
print(b)
👉
[1, 4, 3] ➡ a
[1, 2, 3] ➡ b
튜플 이용해서 할당. 괄호 있으나 없으나 상관없음.
a, b = ('python', 'life')
print(a)
print(b)
👉
python
life
리스트 [ ]로 할당해도 똑같이 나온다
[a, b] = ['python', 'life']
print(a)
print(b)
👉
python
life
a랑 b랑 똑같은 값 넣을 때
a = b = 'hello'
print(a)
print(b)
👉
hello
hello
a의 값을 b로, b의 값을 a로 바꾸고 싶을 때
a = 3
b = 5
a, b = b, a ➡ 튜플 이용
print(a)
print(b)
👉
5 ➡ a
3 ➡ b