바이브코더를 위한 파이썬 기초

바이브코더를 위한 파이썬 기초 2편: 변수와 =의 진짜 뜻

파이썬 변수는 값에 붙인 이름표이고 =는 '같다'가 아니다. 숫자·문자열·참거짓, f-string, "20"+"1"이 201이 되는 이유와 AI 코드에서 변수를 읽는 법을 정리했다.

바이브코더를 위한 파이썬 기초 2편: 변수와 =의 진짜 뜻

AI가 짜 준 파이썬 코드를 열면 거의 모든 줄에 =가 있다. name = "민지", total = total + price 같은 줄이다. 이 =를 수학의 "같다"로 읽으면 코드가 이상해 보이고, AI 코드의 흐름도 따라가기 어렵다. 이 글은 '바이브코더를 위한 파이썬 기초' 10편 중 2편으로, 변수와 기본 자료형(숫자·문자열·참거짓)을 다룬다. 예제는 Python 3.15 기준으로 설명하며 Python 3.14.2에서 실행해 결과를 확인했다.

어두운 배경 위 정육면체·구·스위치에 각각 묶인 빈 이름표와, 다른 물체로 옮겨지는 이름표 하나를 그린 일러스트

핵심 요약

  • 변수는 값을 담는 상자라기보다 값에 붙인 이름표다.
  • =는 "같다"가 아니라 "오른쪽 값을 계산해서 왼쪽 이름에 붙인다"는 뜻이다.
  • 같은 20이라도 따옴표가 있으면 문자열, 없으면 숫자다. "20" + "1"은 "201"이 된다.
  • 값의 종류가 헷갈리면 type()으로 확인한다.

바이브코더에게 왜 변수가 중요할까

AI 코드를 읽는다는 건 대부분 "이 이름에 지금 무슨 값이 붙어 있나"를 따라가는 일이다. 변수 이름만 잘 읽어도 코드가 하는 일의 많은 부분이 보인다. 반대로 AI가 지은 변수 이름이 실제 값과 맞지 않으면(예: count인데 글자가 들어 있음) 그곳에서 버그가 생기기 쉽다.

연락처 앱을 생각해 보자. 전화번호를 외우는 대신 "엄마"라는 이름을 붙여 저장한다. 번호가 바뀌면 이름은 그대로 두고 번호만 바꾼다. 변수도 같다. 값에 이름을 붙여 두고, 필요하면 이름이 가리키는 값을 바꾼다.

변수 만들기와 값의 종류

name = "민지"
age = 20
height = 1.65
is_student = True
print(name, age, height, is_student)
print(type(age), type(height))
print(f"이름: {name}, 나이: {age}살")
age = age + 1
print(age)
민지 20 1.65 True
<class 'int'> <class 'float'>
이름: 민지, 나이: 20살
21

한 줄씩 보면 이렇다.

코드값의 종류뜻
"민지"문자열(str)따옴표로 감싼 글자
20정수(int)소수점 없는 숫자
1.65실수(float)소수점 있는 숫자
True참거짓(bool)True 또는 False 두 값뿐

f"..."는 f-string이다. 문자열 앞에 f를 붙이고 중괄호 {} 안에 변수 이름을 넣으면 그 자리에 값이 들어간다. AI 코드에서 메시지를 만들 때 아주 자주 쓰인다.

=는 "같다"가 아니라 "이름을 붙인다"

age = age + 1은 수학으로 읽으면 말이 안 된다. 어떤 수가 자기보다 1 큰 수와 같을 수는 없기 때문이다. 파이썬은 이 줄을 이렇게 실행한다.

  1. 오른쪽 age + 1을 먼저 계산한다. 지금 age는 20이니 21이다.
  2. 계산한 21에 age라는 이름표를 다시 붙인다.

그래서 x = 5 다음에 x = x + 2를 실행하면 x는 7이다. AI 코드의 total = total + price도 "지금까지의 합에 가격을 더해서 합을 새로 고친다"로 읽으면 된다.

이름표 비유에는 상자 비유로 설명하기 어려운 부분도 담긴다. 같은 값에 이름표를 여러 장 붙일 수 있고, 이름표를 떼어 다른 값에 옮겨 붙일 수도 있다. age = 21을 실행하는 순간 age라는 이름은 20에서 떨어져 21로 옮겨 간다.

흔한 함정: 따옴표 안의 숫자도 숫자일까

눈에는 둘 다 20으로 보이지만 파이썬에게는 다른 값이다.

print("20" + "1")
print(20 + 1)
201
21

문자열의 +는 이어 붙이기이고, 숫자의 +는 더하기다. 문자열과 숫자를 섞어 "20" + 1처럼 쓰면 TypeError가 난다. 이 차이는 바이브코딩에서 실제로 자주 부딪힌다. 키보드 입력을 받는 input()은 숫자를 쳐도 항상 문자열을 돌려주고, 파일(9편)·웹에서 읽은 값도 문자열인 경우가 많다. AI 코드에 int(...)나 float(...)가 붙어 있다면 문자열을 숫자로 바꾸는 중이라고 보면 된다.

price = "1500"
print(int(price) * 2)
3000

계산 결과가 이상하게 붙어서 나오면(예: 합계가 15001500) 문자열끼리 더한 건 아닌지 type()으로 확인해 보자.

AI 코드를 읽을 때 체크할 것

  • 변수 이름이 실제 값과 맞는가? price에 글자가 들어 있거나 is_done에 숫자가 들어 있으면 의심한다.
  • 계산에 쓰는 값이 숫자 자료형인가? 입력이나 파일에서 온 값이면 int()·float() 변환이 있는지 본다.
  • 같은 이름에 값을 다시 붙이는 줄(x = ...)이 중간에 있는가? 있다면 그 아래부터는 새 값으로 읽어야 한다.

AI에게 고쳐 달라고 할 때도 "합계가 15001500으로 나와. price가 문자열인 것 같아"처럼 어떤 변수의 값이 어떻게 이상한지 말하면 답이 훨씬 정확해진다.

스스로 확인하기

  1. x = 5 다음에 x = x + 2를 실행하면 x는? → 7. 오른쪽을 먼저 계산(7)한 뒤 x에 붙인다. "오류가 난다"를 골랐다면 =를 방정식으로 읽은 것이다.
  2. print("3" + "4")의 결과는? → 34. 따옴표로 감싼 값은 문자열이라 이어 붙인다.

직접 해 보기

이름·나이·좋아하는 음식 변수 3개를 만들고 f-string으로 한 문장을 출력해 보자. 변수 값을 바꿨을 때 문장이 따라 바뀌면 성공이다. 막히면 문자열 앞의 f와 중괄호 {}를 확인한다.

name = "지수"
age = 25
food = "김치찌개"
print(f"{name}({age}살)는 {food}를 좋아한다.")
지수(25살)는 김치찌개를 좋아한다.

이전 편과 다음 편

시리즈 전체 목록은 10편 끝에 모아 두었다.

목록으로