일반적인 두 변수 swap 하기
>>> a = 3
>>> b = 4
>>> a,b = b,a
>>> print(a, b)
4 3
Python
복사
서로 다른 두 리스트 swap 하기
>>> li_x = [1,2,3]
>>> li_y = [4,5,6]
>>> li_x, li_y = li_y, li_x
>>> print(li_x)
[4, 5, 6]
>>> print(li_y)
[1, 2, 3]
Python
복사
서로 다른 두 튜플 swap 하기
>>> tuple_x = (1,2,3)
>>> tuple_y = (4,5,6)
>>> tuple_x, tuple_y = tuple_y, tuple_x
>>> print(tuple_x)
(4, 5, 6)
>>> print(tuple_y)
(1, 2, 3)
Python
복사
Memory Address
>>> print(id(tuple_x))
140333848225728
>>> print(id(tuple_y))
140333847575680
>>> tuple_y, tuple_x = tuple_x, tuple_y
>>> print(id(tuple_x))
140333847575680
>>> print(id(tuple_y))
140333848225728
Python
복사
swap을 진행하면 두 변수들의 주소가 서로의 주소로 바뀌는 것을 확인할 수 있습니다.
원래 tuple_x 의 주소 : 140333848225728 → 바뀐 tuple_x의 주소 : 140333847575680
원래 tuple_y의 주소 : 140333847575680 → 바뀐 tuple_y의 주소 : 140333848225728
파이썬에서의 변수 선언
>>> a = 'hi'
>>> print(id(a))
140333848052016
>>> print(id('hi'))
140333848052016
Python
복사
'hi'라는 str 을 변수 a에 넣고 나서, 변수 a의 주소와 'hi'의 주소를 출력해봤습니다.
놀랍게도, 둘의 주소는 동일했습니다.
마치 'hi'라는 객체가 생성되고 그 객체를 변수 a가 가리키는 형태인 것으로 보입니다.
실제로 파이썬의 모든 것은 객체라고 합니다. 파이썬에서는 단순하게 'hi'라는 문자를 표현하는것으로 끝내는게 아니라, 'hi'라는 문자 자체를 객체로 만들고 다양한 속성과 행동을 넣어둡니다.
'hi'라는 단어를 대문자로 변환하기
>>> print(id('hi'))
140333848052016
>>> 'hi'.upper()
'HI'
>>> print(id('hi'))
140333848052016
Python
복사
숫자 3의 주소값 찍고, 한 변수에 대입 후 변수의 주소값을 찍어보기
>>> print(id(3))
4505209568
>>> k = 3
>>> print(id(k))
4505209568
>>> print(id(3))
4505209568
Python
복사
숫자와 ' ' 로 만들어진 string 형태는 인터프리터가 읽는 즉시 메모리로 올라가는 것으로 보입니다. 다음과 같은 코드를 작성 후 run 해도 오류는 발생하지 않습니다.
참고 자료