변수는 이름이에요
파이썬에서 변수는 어떤 값에 붙여 두는 이름이에요. 이름을 쓰고, =을 쓰고, 값을 씁니다:
변수 세 개, 값 세 개, 타입 세 개. 파이썬은 이것들을 나란히 담아주는 데 아무 불만이 없어요. 여러분도 그 값이 어떤 종류인지 따로 알려줄 필요가 없었고요. 값은 =의 오른쪽에, 이름은 왼쪽에 옵니다.
변수가 한 번 생기면, 값 자체를 쓰는 자리라면 어디서든 그 이름을 쓸 수 있어요:
이름 덕분에 끝에서 두 번째 줄이 스스로를 설명해줍니다. 좋은 변수 이름이 주는 진짜 효용은 바로 그거예요 — 코드가 설명문처럼 읽히는 거요.
할당은 수학이 아니에요
수학 시간에서 넘어온 사람들이 자주 걸려 넘어지는 부분이에요. 파이썬의 =은 "같다"가 아니에요. "할당한다"예요. "=의 오른쪽 값을 가져와서, 왼쪽 이름에 붙인다"는 뜻입니다. 파이썬은 오른쪽 값을 먼저 평가하고, 그 다음 할당을 합니다.
그래서 이런 게 문제없이 돌아가요:
count = count + 1이라는 줄은 "count가 count 더하기 1이다"(수학적으로 불가능한 주장) 라고 말하는 게 아니에요. 계산해라 count + 1을, 그런 다음 그 결과를 다시 count에 할당해라, 라는 거예요. 파이썬이 표현식을 먼저 평가하고(0 + 1 → 1), 그 다음에야 변수를 갱신합니다.
count = count + 1은 자주 쓰이니까 파이썬이 줄임 표기도 준비해 뒀어요: count += 1이 같은 일을 합니다.
재할당은 라벨을 옮기는 거지 값을 바꾸는 게 아니에요
변수는 원할 때마다 다른 값을 가리킬 수 있어요. 예전 값이 수정되는 게 아니라, 변수가 그냥 다른 걸 가리키기 시작하는 거예요:
마지막 줄을 보세요. mood는 두 줄 동안 문자열을 담고 있다가, 갑자기 정수를 담게 돼요. 파이썬은 아무 불만도 없어요. 이게 바로 동적 타이핑(dynamic typing) 이에요 — 변수에는 고정된 타입이 없고, 값에만 타입이 있어요. 이 유연함은 프로토타이핑할 때는 도움이 되지만, 함수 안에서 변수의 의미가 슬쩍 바뀌어 버리는 상황에선 고통이 됩니다. 안전한 습관은 — 값이 의미하는 바에 맞는 이름을 고르고, 그 변수가 살아 있는 동안 계속 그 한 가지만 담게 두는 거예요.
변수 이름 규칙
파이썬은 다음 조건을 만족하는 이름을 받아줍니다:
- 영문자나 밑줄(
_)로 시작해야 해요. - 영문자, 숫자, 밑줄로 구성돼야 하고요.
- 예약어(
if,for,class,return등 수십 개)여서는 안 됩니다.
그래서 이런 이름들은 유효해요:
그리고 이런 건 안 됩니다:
2nd_user— 숫자로 시작할 수 없어요.user-name— 하이픈은 안 돼요 (파이썬은 이걸 뺄셈으로 읽어요).class— 예약어.user name— 이름에 공백은 못 들어가요.
그리고 이미 아시다시피 대소문자를 구분하니까 total, Total, TOTAL은 서로 다른 세 개의 변수예요. 파이썬이 오타를 대신 잡아주지는 않아요.
이름 짓기 컨벤션
하드 규칙 말고도, 파이썬 커뮤니티에는 관례가 있어요 — 인터프리터가 강제하지는 않지만, 생태계 전체에서 공통적으로 지켜지는 것들입니다:
lower_snake_case— 일반 변수와 함수:retry_count,fetch_profile.UPPER_SNAKE_CASE— 상수:MAX_RETRIES = 5.PascalCase— 클래스 이름 (뒤에서 다룹니다).- 밑줄로 시작(
_something) — 내부용으로 쓸 거라는 힌트. 강제는 아니고 관례일 뿐이에요. - 밑줄로 끝(
class_) — 원래는 예약어와 부딪힐 이름을 쓸 수 있게 해줍니다.
이걸 지키면 다른 사람들이 쓴 파이썬 코드와 비슷한 모양의 코드가 돼요.
이름은 의미를 드러내야 해요
변수 이름은 타이핑에는 돈이 안 들지만 읽을 때는 비싸요. 한두 글자 더 써서라도 값의 의미를 실제로 드러내는 이름을 고르면, 미래에 읽게 될 사람(보통은 미래의 자신)이 눈을 찡그릴 일이 훨씬 줄어듭니다.
비교해 볼까요:
같은 코드, 같은 결과 — 그런데 두 번째 버전만 무슨 일이 벌어지고 있는지 알려줘요. 짧은 이름(i, n, x)은 반복 카운터처럼 아주 좁은 범위에서는 괜찮지만, 그 밖에서는 풀어서 쓰는 게 좋아요.
다중 할당 (아껴 쓰세요)
파이썬에서는 한 줄에 여러 변수에 같은 값을 할당할 수 있어요:
아니면 여러 값을 한 번에 풀어 담을 수도 있고요:
둘 다 코드를 더 명확하게 만들어 주는 경우(예: 함수의 반환값을 풀어 담을 때)라면 괜찮아요. 다만 첫 번째 형태 — = = =로 이어진 체인 — 는 조금 조심할 필요가 있어요. 세 변수 모두 _같은 객체_를 가리키게 되거든요. 리스트 같은 가변 타입에서는 이게 문제가 될 수 있어요 (이 얘기는 뒤에서 더 다룹니다).
정리하자면
name = value로 변수를 만들어요.- 타입은 변수가 아니라 값이 가집니다.
- 이름에는 몇 가지 하드 규칙과 많은 소프트 관례가 있는데, 둘 다 지킬 만해요.
- 설명력 있는 이름은 가장 값싼 문서화예요.
다음은 파이썬이 실제로 지원하는 값의 종류들이에요 — 정수, 실수, 문자열, 불리언. 그리고 어느 게 뭔지 알아두는 게 왜 도움이 되는지도 함께요.
자주 묻는 질문
파이썬에서 변수는 어떻게 만들어요?
이름을 정하고, 그 뒤에 =을 넣고, 오른쪽에 값을 씁니다. age = 30이라고 하면 값이 30인 age 변수가 만들어져요. 타입은 파이썬이 알아서 판단합니다 — 따로 선언하지 않아요.
파이썬 변수 이름 규칙은 어떻게 되나요?
이름에는 영문자, 숫자, 밑줄을 쓸 수 있는데 숫자로 시작할 수는 없어요. if나 class 같은 파이썬 예약어는 이름으로 쓸 수 없습니다. 대소문자를 구분해서 total, Total, TOTAL은 서로 다른 세 개의 변수예요. 커뮤니티 관례는 lower_snake_case입니다.
파이썬 변수는 타입이 바뀔 수 있나요?
네, 바뀔 수 있어요. 파이썬은 동적 타입 언어라서 방금 숫자를 담고 있던 변수가 바로 다음 줄에서 문자열을 담을 수도 있어요. 그 유연함은 편리하지만 놀라움의 원인이 되기도 해요 — 함수 중간에서 변수의 의미가 바뀐다면, 보통은 새 이름을 쓸 때라는 신호예요.