파이썬 기초: 변수와 자료형 제대로 이해하기

읽기 예상 시간: 8분

변수는 데이터를 담아두고 필요할 때 언제든 꺼내 쓸 수 있는 직관적인 ‘이름표’ 역할을 해요. 정수, 실수, 문자열, 불리언 등 파이썬의 핵심 기본 자료형 6가지의 특징을 알고, type() 함수로 직접 확인할 수 있어요. 구글 코랩을 이용하면 별도의 복잡한 프로그램 설치 없이 웹 브라우저에서 바로 코드를 실행해 볼 수 있답니다. 문자열과 숫자를 매끄럽게 결합하는 f-string 사용법을 익히고, 초보자가 흔히 겪는 NameError 대처법까지 확실하게 배울 수 있도록 구성했어요.

목차

코딩 실습 준비: 1분 만에 끝내는 구글 코랩

웹 브라우저를 통해 온라인으로 코딩 실습을 준비하는 모습

코딩을 배울 때 가장 중요한 게 뭘까요? 눈으로만 코드를 읽고 넘어가면 절대로 내 실력이 되지 않는다는 사실이에요. 직접 키보드를 두드리고, 오타도 내보고, 에러 메시지도 만나보면서 고민하는 과정이 있어야만 진짜 내 것이 되거든요. 하지만 처음 시작하는 분들에게는 파이썬을 내 컴퓨터에 직접 설치하고 환경을 설정하는 과정 자체가 엄청난 스트레스로 다가올 수 있어요.

그래서 우리는 복잡한 설치 과정 없이 웹 브라우저만 있으면 바로 코드를 짜고 실행해 볼 수 있는 구글 코랩(Google Colab)을 사용할 거예요. 구글 계정만 있다면 누구나 무료로 사용할 수 있는 아주 훌륭한 도구랍니다. 아직 코랩 접속을 안 해보셨다면, 파이썬 입문을 위한 Google Colab 실습 가이드를 참고해서 바로 창을 하나 띄워보세요.

1
새 노트 만들기

코랩 사이트에 접속한 뒤, 로그인하고 ‘새 노트’ 버튼을 클릭하세요. 마치 빈 스케치북을 펼치는 것과 같아요.

2
코드 셀에 코드 입력하기

화면에 보이는 빈칸(셀)에 코드를 입력할 준비를 하세요. 이곳이 우리가 파이썬과 대화할 수 있는 창구예요.

준비가 다 되었다면 코드 셀에 아래 내용을 그대로 적어보세요. 프로그래밍을 시작할 때 전 세계 공통으로 가장 먼저 해보는 인사이기도 하죠.

python
hello.py
# 화면에 지정한 글자를 출력하는 기본적인 파이썬 코드예요.
print("Hello Python")
# 셀 아래에 Hello Python이라는 글자가 나타났다면 첫 코드 실행에 성공하신 거예요.

💡 Tip

코드를 다 적었다면 셀 왼쪽의 재생 버튼을 마우스로 클릭해도 되지만, 단축키인 Shift + Enter를 누르면 코드가 실행되면서 동시에 다음 빈 셀을 만들어주어 훨씬 편리하답니다.

변수는 왜 필요한가요? (이름표 달기)

책상 위 노트북과 변수 이름표를 상징하는 다채로운 포스트잇

코딩을 하다 보면 같은 숫자나 문자를 여러 번 반복해서 써야 할 때가 정말 많아요. 쇼핑몰에서 물건 값을 계산하는 상황을 한 번 상상해 볼게요. 물건 가격이 1,500원이고, 수량이 4개라고 가정해 보죠.

만약 변수 없이 코드에 숫자만 줄줄이 적어둔다면 어떨까요? 이런 방식을 하드코딩이라고 부르는데요. 하드코딩으로 프로그램을 만들면 당장은 편할지 몰라도, 나중에 물건 가격이 2,000원으로 올랐을 때 코드 전체를 뒤지면서 1,500원이라고 적힌 부분을 일일이 찾아 2,000원으로 고쳐야 해요. 아주 번거롭고 실수하기 딱 좋은 상황이죠.

이름표의 마법, 변수 활용하기

변수를 쓰지 않았을 때와 변수라는 ‘이름표’를 활용했을 때 코드가 어떻게 확 달라지는지 직접 눈으로 비교해 볼까요?

python
variable_example.py
# 변수 없이 1500원짜리 물건 4개를 살 때의 계산식이에요.
print(1500 * 4)             # 총 금액 계산
print(1500 * 4 * 0.9)       # 10% 할인이 들어간 금액 계산

# 이번에는 값을 변수라는 이름표에 담아서 활용해 볼게요.
price = 1500
quantity = 4
discount = 0.1

print(price * quantity)
print(price * quantity * (1 - discount))
# 이제 물건 가격이 2000원으로 올라도 제일 위의 price = 2000 한 줄만 고치면 전체 로직이 알아서 수정돼요.

보시다시피 변수를 사용하면 코드가 어떤 의미인지 사람의 눈으로 읽기도 훨씬 편해져요. price라는 글자만 봐도 ‘아, 이건 가격이구나’ 하고 직관적으로 바로 이해할 수 있으니까요.

수학과는 다른 파이썬의 = 기호

변수에 값을 할당하는 과정을 상징하는 빈 상자에 물건을 담는 모습

우리가 학교 수학 시간에 배운 `=` 기호는 보통 “왼쪽과 오른쪽의 값이 같다”는 뜻이었잖아요? 예를 들어 x = 3 이라고 하면 x와 3이 완벽하게 동일하다는 의미였죠. 하지만 프로그래밍의 세계, 특히 파이썬에서 `=` 기호는 전혀 다른 역할을 수행해요.

파이썬에서 `=`는 “오른쪽에 있는 값을 왼쪽에 있는 이름표에 집어넣어라”라는 뜻의 할당(Assignment)을 의미한답니다. 오른쪽에서 왼쪽으로 물건을 옮겨 담는 화살표가 그려져 있다고 상상해 보시면 이해하기 훨씬 쉬울 거예요.

📌 Note

만약 파이썬에서 진짜로 왼쪽과 오른쪽이 같은지 물어보고 비교하고 싶다면 어떻게 해야 할까요? 그럴 때는 기호 두 개를 연달아 붙여서 == 이라고 써주어야 해요. 이 미묘하지만 거대한 차이를 꼭 기억해 두세요!

이런 할당의 개념 덕분에, 한 번 만들어둔 변수에 새로운 값을 다시 꾹꾹 밀어 넣고 예전에 있던 값을 지워버리는 덮어쓰기 작업도 아주 자연스럽게 가능해져요.

python
reassign.py
# 80이라는 숫자를 score라는 이름표에 먼저 저장해요.
score = 80
print(score)

# 같은 이름표에 95를 다시 저장하면 원래 있던 80은 사라지고 95로 덮어써져요.
score = 95
print(score)
# 변수(變數)는 이름 그대로 고정되어 있지 않고 언제든지 변할 수 있는 수라는 점을 기억해 두세요.

에러 안 나는 변수 이름 짓기 (필수 규칙과 관례)

올바른 변수명 규칙처럼 깔끔하게 단어들이 정리된 노트와 펜
변수처럼 이름표가 붙어 있는 투명한 보관 상자들

변수가 아무리 유용하고 편리해도, 이름을 내 마음대로 막 지을 수는 없어요. 파이썬이 코드를 읽고 해석할 때 오해가 생기지 않도록 개발자와 파이썬 사이에 굳게 맺은 몇 가지 엄격한 규칙이 존재하거든요.

가장 먼저 기억해야 할 건 변수 이름이 숫자로 시작해서는 절대로 안 된다는 거예요. 1st_place 같은 이름은 파이썬을 혼란스럽게 만들어서 바로 에러를 뿜어내게 해요. 그리고 변수 이름 중간에 띄어쓰기를 하거나 하이픈(-)을 넣는 것도 문법적으로 불가능해요.

마지막으로 예약어라는 아주 중요한 개념을 알아야 하는데요. if, for, while, print 처럼 파이썬이 이미 문법적인 용도로 사용하겠다고 찜해둔 단어들은 절대로 변수명으로 쓸 수 없어요. 만약 이런 단어를 억지로 쓴다면 파이썬이 이 단어를 문법으로 해석해야 할지, 여러분이 만든 변수로 해석해야 할지 몰라서 대혼란에 빠지게 되거든요.

개발자들의 약속, snake_case

그럼 띄어쓰기를 못하는데 두 개 이상의 단어를 자연스럽게 연결하고 싶으면 어떻게 할까요? 이럴 때 파이썬 개발자들은 주로 단어와 단어 사이를 밑줄(_)로 길게 이어주는 방식을 쓴답니다. 연결된 글자 모양이 마치 뱀이 기어가는 모습 같다고 해서 귀엽게 snake_case라고 부르죠.

python
naming_rules.py
# 올바른 변수 이름 짓기의 좋은 예시와 권장하는 관례예요.
user_name = "kim"    # 단어 사이를 띄어쓰기 대신 밑줄(_)로 잇는 snake_case 방식이에요.
age = 25             # x, a 같은 알파벳 하나보다 의미를 바로 알 수 있는 이름이 코드를 읽기 편하게 만들어요.

# 아래는 에러를 발생시키는 잘못된 이름들이에요. (실행 오류를 막기 위해 주석 처리했어요)
# 1st_user = "lee"   # 숫자가 맨 앞에 오면 안 돼요.
# user name = "lee"  # 이름 중간에 공백이 들어가면 안 돼요.
# for = 10           # 파이썬 예약어는 변수명으로 불가능해요.
# 참고로 파이썬은 대소문자를 구분하기 때문에 Name과 name은 완전히 다른 변수예요.

파이썬의 기본 자료형 6가지와 type()

다양한 자료형을 상징하는 각기 다른 내용물이 담긴 6개의 유리병

변수에 조심스럽게 담는 데이터의 종류를 전문 용어로 자료형(Data Type)이라고 불러요. 우리가 일상생활에서 시원한 물을 담을 때는 물병을 쓰고, 무거운 책을 담을 때는 튼튼한 가방을 쓰는 것처럼 데이터의 성격과 용도에 따라 파이썬 안에서도 형태가 명확하게 나뉘어 있답니다.

파이썬에서 코딩을 할 때 꼭 알아두어야 할 가장 필수적이고 기본적인 자료형은 크게 6가지가 있어요. 소수점이 없는 아주 깔끔한 정수형(int), 소수점이 포함되어 미세한 정밀도를 나타내는 실수형(float), 글자들을 줄줄이 나열해 둔 문자열(str), 어떤 조건이 참인지 거짓인지를 명쾌하게 판단해 주는 불리언(bool), 그리고 아직 아무런 값도 정해지지 않았음을 텅 빈 상태로 알려주는 NoneType 등이죠.

내 변수의 정체를 밝혀라, type() 함수

코드를 수백 줄 길게 작성하다 보면, 내가 예전에 만들어둔 변수 안에 숫자가 들어있는지 문자가 들어있는지 헷갈릴 때가 꼭 생겨요. 그럴 때 아주 유용하게 꺼내 쓸 수 있는 마법의 탐지 도구가 바로 `type()` 함수랍니다. 괄호 안에 궁금한 변수 이름을 넣어주기만 하면, 파이썬이 이 데이터의 진짜 정체를 샅샅이 알아내서 콘솔 창에 친절하게 알려주거든요.

python
data_types.py
# 다양한 자료형을 변수에 담고, type() 함수로 그 종류를 확인해 볼게요.
apple_count = 5           # 소수점이 없는 정수 (int)
weight = 65.5             # 소수점이 있는 실수 (float)
greeting = "안녕"         # 텍스트인 문자열 (str). 따옴표로 꼭 감싸야 해요.
is_adult = True           # 참/거짓 불리언 (bool). true가 아니라 반드시 대문자 True, False로 써야 해요.
empty_box = None          # 아무것도 없음을 뜻하는 NoneType 이에요.

print(type(apple_count))
print(type(weight))
print(type(greeting))
# 눈으로만 봐서 데이터 종류가 헷갈릴 때는 변수를 type()으로 감싸서 출력해보면 정확한 정체를 알 수 있어요.

⚠️ Warning

숫자라도 양옆을 따옴표로 감싸버리면 그 순간부터 문자로 취급돼요. 예를 들어 5는 계산이 가능한 정수(int)지만, “5”는 계산이 불가능한 문자열(str)이랍니다. 이 두 가지를 수학처럼 더하려고 하면 에러가 나니 특별히 주의하세요!

자료형이 다르면? 형변환과 f-string

자료형 결합을 상징하며 완벽하게 맞물리는 두 개의 퍼즐 조각

문자열과 숫자를 그냥 더하기 기호(+)로 단순하게 연결하려고 시도해 보신 적 다들 한 번쯤 있으시죠? 사람 머릿속에서는 “내 나이는 25살이야”처럼 아주 자연스럽게 합쳐질 것 같지만, 파이썬은 문자와 숫자를 어떻게 더해야 할지 전혀 갈피를 잡지 못해서 즉각적으로 TypeError를 뱉어내고 프로그램 실행을 멈춰버려요.

이럴 때는 일시적으로 데이터의 형태를 억지로 맞춰주는 형변환이라는 추가적인 작업이 꼭 필요해요. 숫자를 잠시 문자로 바꾸고 싶다면 `str()` 함수를, 문자를 숫자로 바꾸고 싶다면 `int()` 함수를 사용하는 식으로 옷을 갈아입혀 주는 거죠. 하지만 코딩을 하다 보면 텍스트 중간중간에 변수를 쏙쏙 집어넣어야 할 일이 하루에도 수십 번씩 생기는데, 매번 이렇게 형변환을 하고 더하기 기호로 지루하게 이어 붙이는 건 솔직히 너무 번거롭고 코드가 지저분해 보여요.

가장 우아한 문자열 결합 방식, f-string

그래서 수많은 파이썬 개발자들이 머리를 맞대고 만들어낸 획기적이고 아름다운 문법이 바로 등장했어요. 파이썬 자료형과 문자열의 결합을 위한 f-string 활용법이랍니다. 실무에서 활동하는 현업 파이썬 개발자들도 화면에 텍스트를 출력하거나 다룰 때 열에 아홉은 이 방식을 쓸 정도로 압도적으로 편리하고 직관적인 문법이에요.

python
f_string.py
# 나이(숫자)와 문자열을 함께 출력하다가 에러가 나는 상황과 해결 방법이에요.
age = 25

# print("나이: " + age)          # 문자와 숫자를 그냥 더하면 TypeError가 나요.
print("나이: " + str(age))       # str()을 써서 숫자를 문자로 잠시 바꿔주면 정상 작동해요.

# f-string을 쓰면 형변환 없이 훨씬 깔끔하게 문자열 안에 변수를 집어넣을 수 있어요.
print(f"제 나이는 {age}살입니다.")
# 문자열을 여는 따옴표 바로 앞에 f를 붙이고 변수명을 중괄호 {} 안에 넣기만 하면 자연스럽게 결합돼요.

어떠신가요? 더하기 기호도 필요 없고, 매번 헷갈리는 형변환 함수도 필요 없어요. 그저 내가 쓰고 싶은 문장 중간에 중괄호를 열고 그 자리에 들어갈 변수 이름만 쏙 적어주면 파이썬이 알아서 완벽하게 조합해 주니 정말 마법 같지 않나요?

초보자가 가장 자주 하는 실수와 NameError

오타를 찾듯 돋보기로 화면의 글자를 자세히 살피는 모습

코딩을 막 시작했을 때 수시로 마주치는 붉은색의 섬뜩한 에러 메시지들은 마치 내가 큰 잘못을 저지른 것처럼 나를 혼내는 것 같아서 많이 당황스럽게 느껴지기 마련이에요. 하지만 에러는 컴퓨터가 여러분에게 “어? 나 이 부분 무슨 말인지 잘 모르겠는데 다시 한 번 확인해 줄래?”라고 아주 친절하게 말을 걸어오는 대화의 신호일 뿐이니 겁먹을 필요가 전혀 없답니다.

초보 시절에 마주치는 에러는 생각보다 굉장히 단순하고 사소한 원인에서 비롯돼요. 할당을 의미하는 `=`과 같다를 의미하는 `==`를 깜빡 혼동하거나, 괄호를 신나게 열어놓고 닫는 걸 잊어버렸거나, 대소문자를 잘못 적는 경우들이죠. 그중에서도 초보자들이 압도적으로 높은 빈도로 만나는 에러가 하나 있는데요. 바로 NameError예요.

이름표 철자, 단 한 글자도 틀리지 마세요

NameError는 단어의 뜻 그대로 ‘이름에 무언가 큰 문제가 있다’는 걸 파이썬이 알려주는 거예요. 보통 내가 만들어두지도 않은 엉뚱한 변수 이름을 갑자기 부르려고 할 때 발생하거나, 변수 이름을 예쁘게 만들긴 했는데 나중에 부를 때 철자를 하나 슬쩍 빼먹거나 키보드를 잘못 눌러 순서를 바꿔치기했을 때 나타나요. 컴퓨터는 사람과 달리 융통성이 전혀 없어서 철자 하나만 틀려도 완전히 다른 새로운 이름이라고 엉뚱하게 인식해버리거든요. 혹시라도 코드를 돌리다 이런 에러를 만났다면 파이썬 변수명 오타로 인한 NameError 에러 사례와 예외 처리 문서를 슬쩍 참고해 보세요. 어디서 문제가 생겼는지 파악하는 눈이 길러져서 마음이 한결 편안해질 거예요.

python
name_error.py
# 흔히 실수하는 오타로 인해 NameError가 발생하는 상황이에요.
user_score = 100

# print(user_socre)  # 위에서 만든 이름은 score인데 호출할 때 socre로 잘못 쳤어요. NameError가 나요.
print(user_score)
# 에러가 났을 때는 당황하지 말고, 내가 선언한 변수명과 부르는 변수명의 철자와 대소문자가 정확히 일치하는지부터 찾아보세요.

❗ 중요

파이썬은 대문자와 소문자를 아주 엄격하고 냉정하게 구분하는 깐깐한 언어예요. MyVar 와 myvar 는 사람이 보기엔 똑같은 알파벳의 조합처럼 비슷해 보여도 파이썬에게는 길 가다 스치는 전혀 남남인 변수라는 점을 항상 머릿속에 꼭 기억해 두세요.

자주 묻는 질문

Q. 코딩을 처음 해보는데, 파이썬을 제 컴퓨터에 직접 설치해야 하나요?

설치하지 않으셔도 괜찮아요! 본문에서 자세히 설명해 드린 구글 코랩(Google Colab) 환경을 이용하면 복잡하고 머리 아픈 설치 과정에 스트레스받을 필요 없이 구글 계정 하나만으로 웹 브라우저에서 바로 실습이 가능해요. 초기 설정에 귀중한 에너지를 빼지 말고 코랩에서 바로 신나게 첫 코드를 작성해 보세요.

Q. 문자열과 숫자를 같이 출력할 때 매번 str()을 쓰기 너무 귀찮아요. 다른 방법은 없나요?

네, 당연히 훨씬 편한 방법이 있죠. 가장 강력하게 추천하는 방식은 바로 최신 파이썬 문법인 f-string을 적극적으로 활용하는 거예요. 텍스트를 시작하는 따옴표 바로 앞에 알파벳 f를 하나 찰싹 붙이고, 값이나 변수명을 중괄호 {} 안에 그대로 넣으면 마법처럼 자연스럽게 합쳐진답니다. 코드가 놀라울 정도로 짧아지고 사람의 눈으로 읽기도 훨씬 편해져서 실무에서도 적극적으로 권장하는 필수 문법이니 꼭 손에 익혀두시길 바랄게요.

Q. 코드를 실행했는데 ‘NameError’라는 빨간 글씨가 뜹니다. 어떻게 해결하나요?

NameError는 대부분 코딩을 할 때 무의식중에 발생하는 단순한 오타 때문에 생기는 아주 귀여운 실수예요. 변수 이름의 철자를 깜빡 틀렸거나, 변수에 값을 담아 완성하기도 전에 성급하게 먼저 불러서 사용하려고 할 때 파이썬이 “나 아직 그런 이름은 한 번도 본 적 없는데?” 하고 알려주는 친절한 경고문이죠. 에러 메시지가 떴다고 해서 당황하지 말고, 위쪽에 선언해 둔 이름표와 방금 호출한 이름표의 대소문자와 철자가 한 글자도 빠짐없이 거울처럼 정확히 일치하는지 천천히 돋보기로 살피듯 확인해 보세요.

이 글이 마음에 드세요?

RSS 피드를 구독하세요!

댓글 남기기