Python/Do it 점프 투 파이썬

파이썬 프로그래밍 기초 - 자료형의 값을 저장하는 공간, 변수

goyoungii 2025. 3. 25. 13:14

변수란?

: 파이썬에서 사용하는 변수는 객체를 가리키는 것이라고 말할 수 있다.

객체란, 지금까지 보아 온 자료형의 데이터(값)와 같은 것을 의미하는 말이다.

변수 사용법

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

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

-> 다른 프로그래밍 언어(C,  Java...)에서는 변수를 만들 때 자료형의 타입을 직접 지정하지만
  파이썬은 변수에 저장된 값을 스스로 판단하여 자료형의 타입을 지정한다.

 

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

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

  - id()

    : 객체의 주소값을 리턴하는 파이썬의 내장 함수

리스트 복사

>>> a = [1,2,3]
>>> b = a
>>> id(b)
2240951382592
>>> id(a)
2240951382592
>>> a is b
True

=> b와 a는 완전히 동일하다고 할 수 있다.

다만, [1,2,3]이라는 리스트 객체를 참조하는 변수가 a 변수 1개에서 b 변수가 추가되어 2개로 늘어났다는 차이만 있다.

 

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

=> a의 두번쨰 요소값을 바꾸었더니 a만 바뀌는 것이 아니라 b도 똑같이 바뀌었다.

a와 b 모두 동일한 리스트를 가리키고 있기 때문이다.

 

Q. b 변수를 생성할 때 a 변수의 값을 가져오면서 a와 다른 주소를 가리키도록 만드는 방법

1. [:] 이용하기

>>> a = [1,2,3]
>>> b = a[:] # 리스트 a의 처음 요소부터 끝 요소까지 슬라이싱
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b
[1, 2, 3]

=> a의 리스트 값을 바꾸더라도 b에는 아무런 영향이 없다.

2. copy 모듈 이용하기(from copy import copy)

>>> from copy import copy # copy 모듈에 있는 copy 함수 import
>>> a = [1,2,3]
>>> b = copy(a) # copy 함수 사용

>>> b is a
False

=> b = copy(a)는 b = a[:]와 같다

=> 두 변수의 값은 같지만, 서로 다른 객체를 가리키고 있다.(False 리턴)

3. copy 함수 사용하기

: copy 함수를 사용해도 copy 모듈을 사용하는 것과 동일한 결과를 얻을 수 있다.

>>> a = [1,2,3]
>>> b = a.copy() # 파이썬 리스트에 내장된 copy 함수 사용
>>> b is a
False

 


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

1. 튜플로 a,b에 값을 대입하기

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

=> 두 개는 완전 동일하다 (튜플은 괄호 생략 가능)

2. 리스트로 변수 만들기

>>> [a,b] = ['python','life']
>>> a
'python'
>>> b
'life'

3. 여러 개의 변수에 같은 값 넣기

>>> a = b = 'python'
>>> a
'python'
>>> b
'python'

4. 두 변수의 값 바꾸기

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