Github blog a production story
Shortcut

변수

1. 변수의 정의

변수를 만들 때는 예처럼 =(assignment) 기호를 사용한다.

변수_이름 = 변수에_저장할_값

다른 프로그래밍 언어인 C나 JAVA에서는 변수를 만들 때 자료형의 타입을 직접 지정해야 한다. 하지만 파이썬은 변수에 저장된 값을 스스로 판단하여 자료형의 타입을 지정하기 때문에 더 편리하다.

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

a = [1, 2, 3]

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

>>> a = [1, 2, 3]
>>> id(a)
2594916439040

id는 변수가 가리키고 있는 객체의 주소 값을 리턴하는 파이썬의 내장 함수이다. 변수 a가 가리키는 [1, 2, 3] 리스트의 주소 값은 2594916439040이라는 것을 알 수 있다.

Python-10st-01

2. 리스트를 복사하고자 할 때

>>> a = [1, 2, 3]
>>> b = a
>>> id(a)
2594918259136
>>> id(b)
2594918259136

id(a)의 값이 id(b)의 값과 동일하다는 것을 확인할 수 있다. 즉, a가 가리키는 대상과 b가 가리키는 대상이 동일하다는 것을 알 수 있다. 동일한 객체를 가리키고 있는지에 대해서 판단하는 파이썬 명령어 is를 다음과 같이 실행해도 역시 참을 리턴해 준다.

>>> a is b  # a와 b가 가리키는 객체가 같을까?
True
>>> b[0] = 2
>>> b
[2, 2, 3]
>>> a
[2, 2, 3]

a 리스트의 첫 번째 요소를 값 2로 바꾸었더니 a만 바뀌는 것이 아니라 b도 똑같이 바뀌었다. 그 이유는 앞에서 살펴본 것처럼 a, b 모두 동일한 리스트를 가리키고 있기 때문이다.

b 변수를 생성할 때 a 변수의 값을 가져오면서 a와는 다른 주소를 가리키도록 만들 수는 없을까? 다음 2가지 방법이 있다.

2-1. [:]

>>> a = [1, 2, 3]
>>> b = a[:]
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]

2-2. copy 모듈

>>> from copy import copy
>>> a = [1, 2, 3]
>>> b = copy(a)
>>> b is a
False
>>> b = a.copy()
>>> b is a
False

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

>>> a, b = ('python', 'life')
>>> a
'python'
>>> b
'life'
>>> (a, b) = 'python', 'life'
>>> a
'python'
>>> b
'life'
>>> [a, b] = ['python', 'life']
>>> a
'python'
>>> b
'life'
>>> a = b = 'python'
>>> a
'python'
>>> b
'python'
>>> a = 3
>>> b = 5
>>> a
3
>>> b
5
>>> a, b = b, a
>>> a
5
>>> b
3
  1. 메모리란 컴퓨터가 프로그램에서 사용하는 데이터를 기억하는 공간을 말한다. 

태그:

카테고리:

업데이트:

댓글남기기