본문 바로가기
파이썬/기초 문법

[파이썬]Python 변수 이해하기

by 코키드 Cokid 2022. 9. 21.
반응형

 

 

학창 시절 수학 시간에 함수(Function)를 배우면서 변수(Variable)를 많이 다뤄봤을 것이다.

변수는 '변하는 수'를 의미하며 변수에 따라서 함수의 결괏값도 함께 바뀌게 된다.

 

파이썬에서도 다양한 함수와 변수를 다룬다. 파이썬에서 변수는 어떤 자료형(객체)이 저장된 공간(주소)을 말한다.

 

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

아래 코드를 통해 변수가 무엇인지 알아보자.

 

>>> a = 100
>>> print(a)
100
>>> print(id(a))
140716051826848

a라는 변수를 선언하고 100을 입력하면, 100의 값의 자료형을 저장할 공간이 메모리에 할당이 된다.

변수 a는 그 자료형이 저장되어 있는 메모리의 주소를 가리키게 된다.

id 함수는 변수의 주소를 호출하는 파이썬의 함수이다.

id함수로 a의 주소를 호출하면 '140716051826848'이 출력된다.

 

즉 '140716051826848'의 주소에 100의 값의 자료형이 저장되는 것이다.

변수 복사

아래 코드를 보며 변수의 복사에 대해 알아보자.

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

변수 a에 리스트 자료형 [1, 2, 3]을 입력한 후 b에 a를 대입했다.

(리스트가 무엇인지는 다른 글에서 곧 다룰 테니 당장은 그냥 넘어가자.)

a와 b를 출력하면 모두 [1, 2, 3]이 출력이 된다.

이 경우 b가 가지는 값은 무엇일까? b라는 변수는 새로운 주소를 갖고 그 주소에 a와 동일한 값을 갖는 것일까?

아니다. a가 리스트 [1, 2, 3]이 저장된 주소를 가리키는 것처럼 b 또한 a와 동일한 주소를 가리킨다.

>>> print(id(a))
2434732151816
>>> print(id(b))
2434732151816

a와 b는 같은 값만 가진 변수가 아닌 똑같은 주소를 가진 동일한 변수이다.

변수 a의 리스트 [1, 2, 3]의 첫 번째 값을 바꿔보자.

>>> a[0] = 5
>>> print(a)
[5, 2, 3]
>>> print(b)
[5, 2, 3]

a의 리스트 [1, 2, 3]이 [5, 2, 3]으로 바뀌자, 리스트 b도 a와 동일하게 바뀐 것을 확인할 수 있다.

b에 아무 작업도 하지 않았지만, a와 b 모두 동일한 주소를 가리키기 때문에 a의 값이 바뀌면 b도 자동으로 바뀌게 된다.

마찬가지로 b의 값을 바꿔도 a 역시 동일하게 변경된다.

변수 만들기

변수를 만들기 위한 여러 가지 방법이 있다.

 

>>> a, b = "Cokid", 500

위 예문처럼 각 변수마다 원하는 값을 따로 선언할 수도 있고,

 

>>> a, b = "Cokid", 500
>>> a, b = ["Cokid", 500]
>>> print(a)
Cokid
>>> print(b)
500

위처럼 여러 변수를 동시에 만들 수도 있는데, 리스트나 튜플 형태로도 변수를 만들 수 있다.

 

>>> a = b = 'Python'
>>> print(a)
Python
>>> print(b)
Python

또한 위처럼 여러 개의 변수에 같은 값을 동시에 넣는 것도 가능하며

 

>>> a = None
>>> print(a)
None

이렇게 값을 가지지 않는 비어있는 변수를 만들 수도 있다.

 

>>> del a
>>> print(a) # 에러 발생

그리고 del 함수를 통해 변수를 삭제할 수도 있다.

삭제된 a를 출력하려 하면 존재하지 않는 변수이기에 에러가 발생한다.

 

변수 선언 규칙

변수를 선언할 때 몇 가지 주의할 것이 있는데, 주로 변수 이름에 관한 것이다.

 

1. 변수의 이름은 영문자와 숫자, 언더바(_)로만 구성한다.

사실 한글로도 변수 선언이 가능하지만  파이썬 라이브러리들이 대부분 외국에서 만들어졌기 때문에 간혹 에러가 발생하는 경우가 있어 웬만하면 추천하지 않는다.

그리고 영문자는 대문자와 소문자를 구별하여 사용해야 한다.

>>> A = "Capital"
>>> a = "Lower"
>>> print(A, a)
Capital Lower # 대문자와 소문자 변수가 따로 출력

 

2. 변수 이름은 숫자로 시작할 수 없으며, 언더바(_) 혹은 영어로 시작해야 한다.

# 예시 2
>>> _a123 = 3 # 언더바 시작 시 정상작동

>>> 123 = "A" # 숫자로 시작 시 에러 발생

숫자로 변수 이름을 시작하면 에러가 뜨는 것을 볼 수 있다.

한글로도 변수 선언이 가능하지만,  파이썬 라이브러리들이 대부분 외국에서 만들어졌기 때문에 간혹 에러가 발생하는 경우가 있어 웬만하면 추천하지 않는다.

 

3. 변수명에 공백이 있으면 안 된다. 

변수명 사이에 구분을 주고 싶다면 스페이스 대신 언더바(_)를 사용해주자.

 

4. 특수문자(+, -, *, /, ^, & 등)는 사용할 수 없다.

 

5. 파이썬의 키워드(예약어)를 변수명으로 사용할 수 없다.

파이썬엔 35개의 예약어가 있는데, for, while, if 같은 것들이다.

아래 항목들을 참고해서 변수명으로 사용하지 않도록 하자.

반응형

댓글