파이썬 기초

[파이썬 기초] 2. 변수와 자료형

외양간찾는 새끼소 2025. 2. 27. 12:00

1. 데이터 저장 명령어를 배워보자

게임을 만든다고 생각해 봅시다.
게임을 만들기 위해서 여러가지 생각할 것들이 많지만 일단 HP만 생각해봅시다.
HP는 몬스터에게 맞으면 줄어들고 포션을 사용하면 회복되어야 합니다.
그러기 위해서는 현재 HP를 저장하고 있어야 하죠.
HP를 저장하는 방법에 대해서 알아봅시다.

컴퓨터 부품중에 ‘램(RAM)’ 이란 장치가 있습니다.
램은 여러 데이터를 저장 할 수 있도록 여러 칸들로 나눠져 있습니다. (한 칸의 단위를 bit라고 합니다.)
자세히 따지고 들면 머리가 터질 수 있으니 한칸에 하나의 데이터가 들어간다고 하겠습니다.

우리는 이제 “현재 HP인 691을 램의 132번째 칸에 저장해!” 라는 명령을 내립니다.
그 명령어가 바로 ‘=’입니다.
코드로 보면 아래와 같습니다.

(*0x84) = 691 #0*84 는 132를 16진수로 나타낸 것이다. 어셈브리어에서 16진수를 사용한다.

=은 수학에서 같다 라는 의미가 아닌 “오른쪽 값을 왼쪽에 저장해”라는 의미입니다.
이때 왼쪽은 RAM의 특정 위치를 의미하는 것입니다.


2. 데이터에 이름을 지어주자

문제가 있습니다.
만약에 포션을 마셔서 HP값을 늘어나야 하는 상황 같이 HP값이 변할때 마다 132번째에 저장했다는 것을 기억해서 코드를 짜야 할까요? 그러면 개발자들은 1423번째는 무슨값이 저장되어 있고 2934번째에는 무슨 값이 저장되어있는지 다 외워가면서 프로그램을 만들어야 할까요?

이런 문제를 해결하기 위해서 우리는 데이터에 이름을 지어줍니다. 이 이름을 전문용어로 변수명 이라고 합니다. 코드로 확인해 보면 아래와 같습니다.

hp = 691

우리는 앞으로 132번째 칸에 있는 값에 HP 값이 저장되어있다는 것을 기억 할 필요가 없습니다.
이제부터는 변수명인 ‘hp’ 로 해당칸에 있는 값을 불러옵니다.

💡RAM에 몇 번째에 저장되는 거야?

그러면 궁금증이 생깁니다.
이렇게 변수명을 사용하면 691은 RAM의 132 번째 칸에 저장되는 걸까요??

아닙니다.
데이터가 RAM의 몇 번째에 저장 될지는 코드를 통역하는 인터프리터(컴파일러)가 ‘알잘딱깔센’으로 결정합니다.
우리는 몇 번째에 저장되는지는 중요하지 않습니다. 저장되기만 하면 되는 것이지요.


3. 변수명 규칙

변수명은 개발자들이 짓는 이름이기에 몇가지 규칙만 지키면 마음대로 지어도 됩니다.
수학에서 x, y, z 같은 존재들이죠.
수학에서 x = 12 라고 하나 a = 12 라고 하나 상관 없는 것과 같습니다.
아래는 몇가지 규칙입니다.

3_hp = 691 # 숫자로 시작하는 변수명을 지으면 안됩니다.(x)
class = 691 # 이미 파이썬에 내재된 키워드(예약어)를 변수명으로 사용해선 안됩니다.(x)
@_int = 691 # 특수기호로 시작하는 변수도 안됩니다.(x)
character hp = 691 # 변수명에 공백을 사용 할 수 없습니다.(x)
체력 = 691 # 의외로 한글로 변수명을 지을 수는 있습니다.(o)

그런데 수학에서도 (x, y) 라고 하지 (가, 나) 라고는 잘 하지 않습니다.
이렇듯 코딩에서도 변수명 국룰이 있습니다.

  • 영어 소문자로 이름을 짓자.
  • 데이터의 의미가 담기도록 짓자.
  • 두 단어 이상을 사용하여 이름을 지을 때는 단어 사이에 _ 를 쓰자.
💡snake_case / camelCase / PascalCase

snake_case는 “memeber_name” 이런식으로 두 단어를 이용해서 변수명을 만들때 _를 이용해서 이름을 짓는 것을 의미합니다. 주로 변수명, 함수명 에 많이 사용됩니다.

camelCase는 “memberName” 이런식으로 두 단어를 이용해서 변수명을 만들때 대문자를 이용해서 이름을 짓는 것을 의미합니다. 파이썬에서는 잘 사용하지 않습니다.

MemberName과 같이 첫 시작과 연결 부분을 대문자로 적는 것을 파스칼 케이스 라고 합니다. 파이썬에서 클래스명을 지을 때 많이 사용합니다.


4. 데이터의 종류

다시 메이플 스토리 게임을 봅시다.
우리는 hp만 저장해서 이 게임을 만들 수 있는 것이 아닙니다.
이 유저의 닉네임, HP, MP, EXP, 특정 페시브가 걸려있는지 안 걸려있는지, Insert 키를 누르면 사용되어야 하는 아이템 등등등 정말 많은 데이터들을 저장해야하지요.
하나씩 살펴봅시다.

HP,MP 저장 부터 해봅시다.
위에서 해봐서 아마 코드를 다들 아실 거라 믿습니다.

hp = 691
mp = 2671

이런 숫자로 되어 있는 데이터를 정수형 데이터(int) 라고 합니다.

다음으로 EXP를 저장해 봅시다.
이미지를 잘 보면 EXP가 29.64% 차있다는 것을 저장할 것입니다.

exp = 29.64

숫자 중에서도 소수로 되어있는 데이터를 소수형 데이터(float) 라고 합니다.

다음으로 닉네임을 저장해 봅시다.
유저의 닉네임이 ‘T퍼랩법사T’ 라고 되어 있습니다.
이를 저장하는 코드는 아래와 같습니다.

nickname = T퍼랩법사T # 오류가 발생해요.. ""로 감싸지 않으면 T퍼랩법사T를 변수로 인식합니다.
nickname = "T퍼랩법사T" 

HP, MP, EXP를 저장할 때와 다르게 “”를 사용했습니다.
이렇게 글자를 저장 할 때는 꼭 “”를 사용해야 합니다.(작은 따옴표 ‘’ 를 사용해도 됩니다.)
이런 글자 데이터를 문자형 데이터(str) 라고합니다.

다음으로 이미지 오른쪽 위에 보이는 패시브가 걸려있는지 없는지 나타내는 데이터를 저장해봅시다.
정확히 무슨 패시브인지 모르겠지만 보라색 구가 환하게 빛나는 이미지를 보고 광역딜 패시브라고 칭해보겠습니다. 우리는 광역딜 패시브가 적용되어 있다 라는 것을 저장할 것입니다.

wide_area_deal_passive = True

유-무, 참-거짓 에대한 데이터를 저장할때는 True, False를 사용합니다.
이런 데이터를 불린형 데이터(bool) 라고합니다.

마지막으로 Insert 키를 누르면 사용되는 아이템 데이터를 저장해보겠습니다.
이미지를 잘 보면 insert에 아무 아이템도 없는 것을 확인 할 수 있습니다.
하지만 게임유저가 설정을하면 아이템을 설정 할 수 있지요.
현재 아무것도 없다 라는 것을 저장하는 방법은 아래 코드와 같습니다.

inseart_item = None

이런 데이터를 None 데이터(NoneType) 라고합니다.

정리하면 파이썬에서 정수형 데이터, 소수형 데이터, 문자형 데이터, 불린형 데이터, None 데이터를 다룹니다.
이런 데이터의 종류를 전문용어로 자료형 이라고 합니다.
각 자료형마다 사용할 수 있는 기능이 다릅니다. (각 자료형마다 기능은 차차 알아봅시다.)
따라서 적절한 자료형으로 데이터를 저장해야 합니다.