자료형의 값을 저장하는 공간, 변수

honeyricecake·2022년 6월 27일
0

파이썬

목록 보기
7/26

변수는 어떻게 만들까?

a = 1
b = "python"

과 같이 =(assignment) 기호를 사용한다.

파이썬은 변수에 저장된 값을 스스로 판단하여 자료형을 지정하기 때문에 더 편리하다.

변수란?

파이썬에서 사용하는 변수는 객체를 가리키는 것이라고 말할 수 있다.
객체란 우리가 지금껏 보아온 자료형과 같은 것을 의미하는 것이다.

a = [1,2,3]
만약 위 코드처럼 a = [1,2,3]이라고 하면 [1,2,3]값을 가지는 리스트 자료형(객체)이 자동으로 메모리에 생성되고 변수 a는 [1,2,3]리스트가 저장된 메모리의 주소를 가리키게 된다.

a변수가 가리키는 메모리의 주소는 다음과 같이 확인할 수 있다.

a = [1,2,3]
print(id(a))

id함수는변수가 가리키고 있는 객체의 주소값을 돌려주는 파이썬 내장 함수이다.

리스트를 복사하고자 할 때

a = [1,2,3]
b = a

를 하면 위에서 봤듯이 a에는 리스트 객체의 주소가 있으므로
b와 a는 같은 객체를 가리키게 된다.

따라서 a[1] = 4 로 리스트의 성분을 바꾸게 되면 b 의 리스트의 성분 역시 바뀌게 된다.

둘은 동일한 리스트를 가리키고 있기 때문이다.

따라서 같은 값을 가진 다른 리스트를 b 가 가리키게 하면 다음과 같은 방법들이 있다.

  1. b = a[:]

  2. copy 모듈 이용

from copy import copy

a = [1,2,3]
b = copy(a)

a[1] = 4

print(a)
print(b)

각각
[1,4,3]
[1,2,3] 을 출력하는 것을 볼 수 있다.

from copy import copy 는 copy함수를 쓰기 위해 사용하는 것이라고만 알아두자.

변수를 만드는 여러가지 방법

a,b = ('python', 'life')
위 예문처럼 튜플로 a,b에 값을 대입할 수 있다.

이 방법은 다음 예문과 완전히 동일하다
(a,b) = 'python', 'life'

튜플 부분에서도 언급했지만 튜플은 괄호를 생략해도 된다.

(a,b) = 'python', 'life'

print(a)
print(b)

각각 python, life가 출력됨을 알 수 있다.
리스트를 이용해서도 위와 같이 변수를 만들 수 이싿.

또한 여러 개의 변수에 같은 값을 대입할 수도 있다.

a = b= "python"

print(id(a))
print(id(b))

a = a[2:4]
print(a)
print(b)

print(id(a))

둘의 객체 id는 같았으나 a는 a를 슬라이싱한 다른 문자열을 가리키게 되며 다른 객체를 가리키게 된다.

파이썬에서는 위 방법을 사용하여 두 변수의 값을 아주 간단히 바꿀 수 있다.

a = 3
b = 5
a,b = b,a

print(a,b)

b,a 튜플을 생성하여 a,b튜플 내의 변수 a,b에 각각 a = b에 대입된 객체의 주소값, b = a에 대입된 객체의 주소값을 대입하는 과정이다.

이렇게 하여 a,b에 대입된 객체의 주소값이 뒤바뀌게 된다.

Q. 아직 선언하지 않은 변수로 튜플을 만들 수 있다고?

0개의 댓글