Data/Python

[Python] 파이썬 변수 정의 및 할당

재은초 2023. 6. 17. 18:56
반응형

파이썬 변수(variable)란?

  • 변수란 데이터를 담아두는 그릇으로, 마치 대명사와 비슷한 역할을 한다.
  • 컴퓨터는 기본적으로 결과를 따로 저장하지 않는다. 그러므로 우리가 그 결과를 다시 사용하고 싶다면 변수라는 그릇에 따로 담아두어, 필요할 때 꺼내어 사용한다.
  • 선언된 변수는 해당 프로그램이 종료될 때까지 계속해서 사용할 수 있다. 변수에 저장된 데이터를 변경하여 재활용할 수도 있지만, 변수 데이터를 변경하면 기존 데이터는 완전히 사라진다.
>>> a = [1, 2, 3]
>>> id(a)                   
4303029896                  
# id함수는 변수가 가리키고 있는 객체의 주소를 리턴해 주는 파이썬 내장함수
# a 변수가 가리키는 [1,2,3]이라는 리스트의 메모리 주소 반환

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

 

 

변수 선언 및 값 할당

  • 파이썬에서는 변수를 선언할 때 따로 자료형을 지정하지 않아도 오류가 발생하지 않는다.
  • 변수에 값을 할당 할 때 자동으로 자료형이 선언되며, 문법을 통해 강제하지 않을 뿐 파이썬에서도 자료형은 여전히 중요하다.
  • 변수의 이름만으로 변수를 선언할 수 있으며, 등호 = 로 변수에 값을 할당한다.
# 변수명 = 값으로 선언
>>> a = 100           # 자동으로 정수 할당
>>> b = 100.0         # 부동 소수점 할당
>>> c = "홍길동"        # 문자열 할당

# 튜플로 변수 a,b 대입
>>> a, b = ('python', 'life')
>>> (a, b) = 'python', 'life'

# 리스트로 변수 생성
>>> [a,b] = ['python', 'life']

# 동시에 여러 변수에 하나의 값을 할당
a = b = c = 1

# 여러 변수에 여러 개체 할당
a, b, c = 1, 2, "홍길동"

# 응용. 변수값 바꾸기
>>> a = 3
>>> b = 5
>>> a, b = b, a
>>> a
5
>>> b
3

 

 

동일 객체 판별

# 동일한 객체인지를 판별하는 is 연산자
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a is b                # [1, 2, 3]이라는 동일한 값을 갖는 리스트지만
False                     # 서로 같은 객체는 아니므로 False

# 값이 일치하는지 판별하는 == 연산자
>>> a = [1, 2, 3]
>>> b = [1, 2, 3]
>>> a == b
True

 

변수 경로

  • id() 함수는 객체의 고유 값을 리턴한다.
# b변수에 a변수를 대입하면 결론적으로 b와 a는 완전 동일하다
>>> a = [1, 2, 3]         
>>> b = a               # a가 가리키는 대상과 b가 가리키는 대상이 동일
>>> id(a)               
4303029896              # 하지만 리스트를 참조하는 변수의 갯수가
>>> id(b)               # 1개에서(변수 a) 2개가(변수 a,b) 되었다는 차이가 있음
4303029896              


# 리스트 a에 또 다른 리스트를 추가하면 다른 값이 된다
>>> a = [1, 2, 3]
>>> id(a)
4302429640               # 이전에 리스트 a가 저장되어 있던 주소와 다른 값이 리턴             
>>> a = a + [4, 5]       # +를 이용하면 리스트 a의 값이 변하는 것이 아니라
>>> a
[1, 2, 3, 4, 5]
>>> id(a)                            
4302472072               # 두 리스트가 더해진 새로운 리스트가 리턴


# 리스트 a를 extend했을 때
>>> a = [1, 2, 3]
>>> id(a)
4303029896

>>> a.extend([4, 5])
>>> a
[1, 2, 3, 4, 5]
>>> id(a)
4302429640              # +기호와 달리 주소값이 변하지 않고 그대로 유지
4302429640

 

 

리스트 변수 복사시

  • b 변수를 생성할 때 a와 같은 값을 가지도록 복사해 넣으면서 동시가 a가 가리키는 리스트와는 다른 리스트를 가리키게 하는데에는 2가지 방법이 있다.
# a와 b가 같을 때, a 수정시 b도 바뀜
>>> a = [1, 2, 3] 
>>> b = a                 # a가 가리키는 대상과 b가 가리키는 대상이 동일
>>> a[1] = 4              # a 리스트의 2번째 요소를 4로 바꿈
>>> a                     # a뿐만 아니라 b도 바뀜
[1, 4, 3]
>>> b
[1, 4, 3]

# 1. [리스트 전체를 가리키는 [:]을 이용해서 복사
>>> a = [1, 2, 3]
>>> b = a[:]               # 리스트 전체를 가리키는 [:]을 이용해서 복사
>>> a[1] = 4
>>> a
[1, 4, 3]
>>> b 
[1, 2, 3]                  # a 리스트 값을 바꿔도 b 리스트에는 영향 없음

# 2. copy 모듈 이용
>>> from copy import copy   #  copy라는 함수를 쓰기 위해서 사용
>>> b = copy(a)             # b = a[:]과 동일

 

Reference

반응형