[Python 입문 강좌 -3] 파이썬 변수란?

2021. 9. 7. 15:57
반응형

☞    문서의 내용은 가장 하단 참고문헌 및 사이트를 참고하여 필자가 보기 쉽도록 정리한 내용입니다.

☞    틀린 내용 및 저작권 관련 문의가 있는 경우 문의하시면 수정 및 삭제 조치하겠습니다.


변수의 사전적 의미

변수의 사전적 의미는 다음과 같다. 컴퓨터 프로그래밍에서 변수(變數, variable) 또는 스칼라(scalar)는 아직 알려지지 않거나 어느 정도까지만 알려져 있는 양이나 정보에 대한 상징적인 이름이다. 컴퓨터 소스 코드에서의 변수 이름은 일반적으로 데이터 저장 위치와 그 안의 내용물과 관련되어 있으며 이러한 것들은 프로그램 실행 도중에 변경될 수 있다. 


쉽게 정의해보기

이런 사전적 의미를 보고 변수가 무엇인지 알기는 쉽지 않습니다.  때문에 변수를 좀 더 알기 쉽게 정의해보도록 해보겠습니다. 변수는 아래 이미지에 보이는 것과 같이 메모리에 존재하는 공간이라고 볼 수 있습니다. 그리고 그 공간은 정보를 저장하기 위해서 사용됩니다.  이때 이 공간을 주소 00120B14와 같이 어려운 주소가 아니라 찾기 쉽게 만들기 위해 이름(변수명)을 붙여서 사용합니다.

 

메모리 공간


비유를 통해 알아보기

이렇게 쉽게 정의를 해도 무엇인지 알기 어려울 수 있습니다.  이 변수를 좀 더 알기 쉽게 비유를 통해 알아보도록 하겠습니다. 아래 이미지는 White Box에 콜라가 담겨 있는 이미지입니다.  변수(메모리 공간)는 박스에 해당합니다.  변수명은 박스에 붙인 WhiteBox에 해당합니다. 메모리 공간에 저장되는 변수 값은 콜라에 해당합니다.

박스(변수), 라벨(변수명),콜라(변수값)


선언과 할당

변수는 선언과 할당이라는 것이 존재합니다. 이 선언과 할당에 대해 비유를 통해 알아보도록 하겠습니다. 


선언

선언은 박스를 만들고 그 박스에 라벨을 붙이는 것이라고 할 수 있습니다.

(ex : 하얀색 박스에 WhiteBox라는 라벨을 붙여라)


할당

할당은 박스에 내용물을 넣는 것이라고 할 수 있다. 이때 조심해야 할 것이 있다.  할당을 할 때 넣을 자료에 따라 메모리의 크기(자료형)를 미리 지정해줘야 한다. 그러나 다른 프로그래밍 언어와 다르게 파이썬은 변수에 저장된 값을 스스로 판단하여 자료형을 지정하기 때문에 자료형을 미리 지정해 줄 필요가 없다. 때문에 매우 편리하다.  아래 박스에 예를 들면  넣는 내용물에 따라 박스 크기를 미리 지정해줘야 한다.  이렇게 할당된 것을 파이썬에서는 객체(object)라고 부른다.

(ex : WhiteBox에 콜라를 넣어라)

 


자료형(Data Type)

자료형은 프로그래밍을 할 때 쓰이는 숫자, 문자열 등 자료 형태로 사용하는 모든 것을 뜻한다.  만약 주식 예측기를 만들려면 어떤 주식의 이름과 가격을 알고 값을 저장하는 것처럼, 게임을 만들려면 게임 캐릭터의 이름, 능력치 저장해야 하는 것 처럼 기본 중의 기본이다.

 

자료형은 대표적으로  int, float , str, bool 등이 있다.  int는 123, -123처럼 정수형을 나타내는 자료형입니다.  float는 1.23, -1.23처럼 실수형을 나타내는 자료형입니다.  str은 문자열을 나타내는 자료형 입니다.  bool은 논리형을 나타내는 자료형 입니다. 각 자료형의 상세한 내용은 강좌를 진행하면서 설명하겠습니다.

 

그런데 왜? 우리는 자료형을 미리 지정해줘야 하는 것일까?? 그것은 자료형의 종류에 따라 메모리를 차지하는 크기가 다르기 때문이다. 예시를 들어보자. 우리가 자동차를 넣기 위해서는 일반 상자가 아니라 컨테이너 박스가 필요하다. 혹은 코끼리를 넣기 위해서는 일반 상자가 아니라 큰 철창이 필요한다. 이 것처럼 자료형이 가지는 크기에 따라 미리 메모리의 크기를 잡아줘야 합니다. 그러나 파이썬은 위에서 설명한 것처럼 자동으로 자료형을 지정해주기 때문에 이런 과정이 생략됩니다.


예시를 통한 복습

아래 이미지처럼 음료수와, 아이스크림이 있다. 음료수와 아이스크림은 각기 다른 자료형이라고 생각하면 된다. 그리고 음료수와 아이스크림의 종류(ex: 콜라, 사이다, 폴라포, 뽕다 등)는 각기 다른 데이터 값이라고 생각하면 된다. 


여기서 우리는 이미 정해진 자료형을 담을 수 있는 상자를 준비하고 변수명을 붙여준다.

ex) 자료형 -> 음료수 / 변수명 -> 흰색 상자 / 데이터 값은 -> 콜라


ex) 자료형 -> 아이스크림 / 변수명 -> 검은색 상자 / 데이터 값은 -> 죠스바


위에서 설명한 것처럼 음료수만 담을 수 있는 흰색 상자에는 죠스바를 넣을 수 없다. 그러나 파이썬은 자동으로 자료형을 파악하고 음료수를 넣을 때는 흰색 상자로 아이스크림을 넣을 때는 검은색 상자로 변경해준다.


이제 이것을 우리는 코드로 작성을 해야 한다.  위의 예시를 코드 형태로 작성해보면 아래처럼 된다. 초록색 부분은 자료형, 주황색 부분은 변수명, 빨간색 부분은 데이터 값이다. =(assignment)는 할당한다는 표시로 메모리 공간에 콜라라는 정보를 저장하는 것이다. 파이썬에서는  자동으로 자료형을 변경해주기 때문에 초록색 부분 자료형 형태를 생략하여 사용한다.

 

 


위의 예시를 코드로 작성하면 아래처럼 볼 수 있다. 이때 whitebox와 blackbox의 메모리 주소를 확인해보자 주소를 확인하는 방법은 id라는 함수를 사용하면 된다. (함수는 강좌를 진행하며 배울 예정입니다. 여기에서는 어떠한 기능을 쉽게 사용하기 위한 코드를 그룹화해놓은 것이다 라고 생각하시면 됩니다.) whitebox와 blackbox는 주소가 다른 것을 볼 수 있습니다.  여기서 메모리 주소 값(id값)은 컴퓨터마다 다르기 때문에 메로리 값이 다르게 나와도 문제가 되는 것이 아닙니다.

>>> whitebox = "콜라"
>>> blackbox = 100 #다른 자료형으로 표현하기 위해서 죠스바를 100으로 변경해서 작성했습니다.

>>> print(id(whitebox))
>>> print(id(blackbox))

2026203398960
140716499119600

여기서 tmpbox라는 변수를 선언하고 "콜라"라는 값을 할당해보겠습니다. 그러면 파이썬은 메모리를 아끼기 위해서 메모리를 추가로 만드는 것이 아니라 "콜라"가 들어있는 whitebox를 가리키게 합니다. 때문에 메모리에는 "콜라"라는 값이 한 곳에 존재하는 것입니다. 코드를 보면 id값이 같은걸 볼 수 있습니다. 즉 두 변수가 서로 같은 메모리를 가리키고 있음을 확인할 수 있습니다.

>>> whitebox = "콜라"
>>> tmpbox = "콜라"
>>> blackbox = 100 

>>> print(id(whitebox))
>>> print(id(tmpbox))
>>> print(id(blackbox))

2338430862224
2338430862224
140716499119600

변수명 작성 규칙

변수명을 작성할 때는 몇 가지 규칙이 있다. 규칙을 어기면 오류가 발생하니 작성 규칙을 숙지하여 변수명을 작성해주세요. 첫 번째 변수명에 특수 문자를 입력할 수 없습니다. 두 번째 언더바(_)는 특수문자이지만 변수명에 사용이 가능합니다. 세 번째 영문과 숫자를 혼합해서 변수명을 작성할 수 있습니다. 네 번째 한글로 변수명을 작성할 수 있습니다. 다섯 번째 변수명을 작성할 때 숫자가 먼저 나오면 안 됩니다. 여섯 번째 파이썬 문법에서 사용되는 단어는 사용이 불가능합니다. 일곱 번째 변수명은 대소문자를 구별하기 때문에 whitebox와 Whitebox는 다른 변수입니다.

white$box = "콜라" #변수명에는 특수문자를 입력할 수 없다.
white_box = "콜라" #변수명에 언더바(_)는 사용이 가능하다.
white_box123 = "콜라" #변수명은 영문과 숫자를 혼합해서 사용할 수 있다.
흰색상자 = "콜라" #변수명은 한글도 사용할 수 있다.
123white_box = "콜라" #변수명에서 숫자가 먼저 나오면 안된다.
None = "콜라" #변수명으로 파이썬 문법에 사용되는 단어는 사용이 불가능하다.

#--------------------파이썬 문법 단어 ------------------
#False, None, True, and, as, assert, break, class, 
#continue, def, del, elif, else, except, finally, 
#for, from, global, if, import, in, is, lambda, 
#nonlocal, not, or, pass, raise, return, try, while, with, yield
#---------------------------------------------------

Whotebox = "콜라" #변수명은 대소문자를 구별하기 때문에 whitebox와 Whitebox는 다른 변수이다.

참고문헌

 

 

변수 (컴퓨터 과학) - 위키백과, 우리 모두의 백과사전

 

ko.wikipedia.org

 

변수란 무엇인가?

기본 중에 기본이지만..

velog.io

 

파이썬 강좌 3편. 변수(Variable)

1. 변수(Variable) 다른 언어들과 마찬가지로 파이썬에서도 변수(Variable)라는 개념이 당연히 존재하며, 이 변수라는 것은 임시로 혹은 영구적으로 값을 기억해두기 위한 저장소를 말합니다. 이러한

blog.hexabrain.net

반응형

COMMENT