[파이썬 개념 1] 변수

2026-11-09 21:26 ·수정 2026-11-10 11:45

프로그램은 값을 기억해 두었다가 꺼내 쓰면서 일을 합니다. 값을 기억해 두는 방법이 변수입니다.
이 글에서는 변수가 무엇인지, 값이 저장되고 바뀌는 과정, 이름 짓는 규칙까지 자세히 알아봅니다.

1. 변수란 무엇인가

변수는 값에 붙이는 이름표입니다. 상자라고 설명하는 책도 많지만, 파이썬에서는 이름표라고 생각하는 편이 정확합니다.
값은 컴퓨터 메모리 어딘가에 있고, 변수는 그 값을 가리키는 이름입니다.

name = "푸름"
age = 17
print(name)
print(age)

실행 결과

푸름
17

name = "푸름" 을 실행하면

  1. 메모리에 "푸름" 이라는 값이 만들어지고,
  2. 그 값에 name 이라는 이름표가 붙습니다.

이후에는 name 이라고만 써도 "푸름" 을 꺼낼 수 있습니다.

2. = 는 대입이다

수학의 = 는 양쪽이 같다는 뜻이지만, 파이썬의 = 는 대입, 즉 오른쪽 값을 왼쪽 이름에 저장하라는 명령입니다.
그래서 언제나 오른쪽을 먼저 계산하고 그 결과를 왼쪽에 저장합니다.

score = 10
score = score + 5
print(score)

실행 결과

15

두 번째 줄을 순서대로 따라가면 다음과 같습니다.

단계 하는 일 score
1 오른쪽 score + 5 계산: 10 + 5 = 15 10
2 결과 15를 왼쪽 score 에 저장 15

수학에서는 말이 안 되는 식이지만, 프로그래밍에서는 현재 값을 바꾸어 다시 저장하는 아주 흔한 모양입니다.
반복문에서 합계를 쌓아 갈 때 이 모양을 계속 쓰게 됩니다.

양쪽이 같은지 비교하는 기호는 == 입니다. = 하나와 헷갈리지 않도록 주의합시다.

왼쪽에는 반드시 이름이 와야 합니다. 값에 값을 저장할 수는 없습니다.

10 = score

실행 결과

SyntaxError: cannot assign to literal here. Maybe you meant '==' instead of '='?

3. 값을 바꾸면 이전 값은 사라진다

같은 이름에 새 값을 대입하면 이름표가 새 값으로 옮겨 붙고, 이전 값은 더 이상 그 이름으로 꺼낼 수 없습니다.

color = "red"
print(color)
color = "blue"
print(color)

실행 결과

red
blue

변수에 담기는 값의 자료형이 바뀌어도 괜찮습니다. 파이썬은 변수를 만들 때 자료형을 따로 정하지 않습니다.

x = 17
print(x)
x = "열일곱"
print(x)

실행 결과

17
열일곱

4. 코드를 한 줄씩 따라가기

변수가 여러 개이면 머릿속으로만 따라가기 어렵습니다. 표를 그려 한 줄씩 값을 적어 보면 실수를 줄일 수 있습니다.

a = 3
b = a + 2
a = a * b
b = b - a
print(a, b)

실행 결과

15 -10
줄 실행한 코드 a b
1 a = 3 3 없음
2 b = a + 2 3 5
3 a = a * b 15 5
4 b = b - a 15 -10

이렇게 표로 따라가는 것을 추적이라고 합니다. 코드가 왜 그런 결과를 내는지 모를 때 가장 먼저 해 볼 방법입니다.

5. 여러 변수에 한 번에 대입하기

쉼표로 나누어 쓰면 여러 변수에 한꺼번에 값을 넣을 수 있습니다. 왼쪽과 오른쪽의 개수가 같아야 합니다.

x, y, z = 1, 2, 3
print(x, y, z)
a = b = 0
print(a, b)

실행 결과

1 2 3
0 0

a = b = 0 은 a와 b에 모두 0을 넣습니다. 합계와 개수를 0으로 시작할 때 쓰기 좋습니다.

개수가 맞지 않으면 오류가 납니다.

x, y = 1, 2, 3

실행 결과

ValueError: too many values to unpack (expected 2)

6. 두 변수의 값 바꾸기

물이 든 컵 두 개의 물을 서로 바꾸려면 빈 컵이 하나 더 필요합니다. 다음 코드는 왜 원하는 대로 되지 않을까요?

x = 3
y = 5
x = y
y = x
print(x, y)

실행 결과

5 5

x = y 를 실행하는 순간 x에 있던 3은 사라집니다. 그래서 임시 변수(빈 컵)에 먼저 옮겨 두어야 합니다.

x = 3
y = 5
temp = x
x = y
y = temp
print(x, y)

실행 결과

5 3

파이썬에서는 한 줄로도 바꿀 수 있습니다. 오른쪽 y, x 를 먼저 다 읽어 둔 뒤 왼쪽에 넣기 때문입니다.

x, y = 3, 5
x, y = y, x
print(x, y)

실행 결과

5 3

한 줄로 쓰는 방법이 편하지만, 임시 변수를 쓰는 방법의 순서를 이해해 두면 다른 언어에서도, 더 복잡한 문제에서도 쓸 수 있습니다.

7. 변수 이름 짓기

꼭 지켜야 하는 규칙

  • 영어, 한글, 숫자, 밑줄(_)을 쓸 수 있습니다.
  • 숫자로 시작할 수 없습니다.
  • 띄어쓰기와 -, ! 같은 기호는 쓸 수 없습니다.
  • if, for, while, def, True 처럼 파이썬이 문법으로 쓰는 단어(예약어)는 쓸 수 없습니다.
1st = 10

실행 결과

SyntaxError: invalid decimal literal

지키면 좋은 습관

  • 대문자와 소문자는 다른 이름입니다. Age 와 age 는 서로 다른 변수이므로 한 가지로 통일합니다.
  • 담긴 값이 무엇인지 알 수 있게 짓습니다. a 보다 total, score 가 읽기 쉽습니다.
  • 두 단어 이상이면 밑줄로 잇습니다. max_score, student_count
  • print, input, list, sum 처럼 이미 있는 함수 이름은 피합니다. 덮어쓰면 그 함수를 못 쓰게 됩니다.
sum = 10
print(sum([1, 2, 3]))

실행 결과

TypeError: 'int' object is not callable

sum 이라는 이름에 10을 넣는 바람에 원래 있던 합계 함수 sum 을 쓸 수 없게 되었습니다.

8. 만들지 않은 변수를 쓰면

score = 90
print(scroe)

실행 결과

NameError: name 'scroe' is not defined. Did you mean: 'score'?

NameError 는 그런 이름이 없다는 뜻입니다. 대부분 철자가 틀렸거나, 변수를 만들기 전에 사용한 경우입니다.
코드는 위에서 아래로 실행되므로, 변수는 쓰기 전에 먼저 만들어야 합니다.

9. 주석

# 뒤의 내용은 실행되지 않습니다. 코드에 설명을 적어 둘 때 씁니다.

# 시험 점수를 저장한다
score = 90   # 국어 점수
print(score)

실행 결과

90

정리

내용 예
변수 만들기(대입) age = 17
현재 값을 바꾸어 다시 저장 age = age + 1
여러 변수에 한 번에 x, y = 3, 5
여러 변수에 같은 값 a = b = 0
두 값 바꾸기 x, y = y, x 또는 임시 변수
  • = 는 오른쪽을 먼저 계산해서 왼쪽에 저장한다.
  • 헷갈리면 표를 그려 한 줄씩 추적한다.
  • 이름은 숫자로 시작할 수 없고, 예약어와 함수 이름은 피한다.

확인 문제

  1. 다음 코드를 실행하면 무엇이 출력될까요?
    a = 5
    b = a
    a = 10
    print(a, b)
  2. x = x + 1 을 수학 식이 아니라 파이썬 명령으로 읽으면 어떤 뜻인가요?
  3. 다음 중 변수 이름으로 쓸 수 없는 것을 모두 고르세요. my_score, 2nd, 점수, for, total-count

연습해 보기

확인 문제 정답

  1. 10 5 : b에는 a가 5일 때의 값이 저장되었고, 그 뒤에 a만 10으로 바뀌었습니다.
  2. 지금 x 값에 1을 더한 결과를 다시 x에 저장하라는 뜻입니다.
  3. 2nd(숫자로 시작), for(예약어), total-count(기호 -)

댓글 0

로그인하면 댓글을 쓸 수 있습니다.