프로그래밍 개발 공부

[Python 학습] 1-3 변수란 무엇인가? 변수를 단순한 '상자'로만 착각하면 안 되는 이유와 파이썬 등호(=)의 진짜 의미

wikys 2026. 3. 30. 14:16
파이썬 프로그래밍을 독학하며 가장 먼저 제대로 짚고 넘어가야 할 개념은 바로 '변수'였다. 지금까지 수학 시간에 배웠던 변수의 개념과 프로그래밍에서의 변수는 완전히 달랐다. 흔히 입문 단계에서는 변수를 '값을 저장하는 상자'나 '메모리 공간'이라고 쉽게 설명하지만, 파이썬을 깊이 있게 공부할수록 이 상자 비유만으로는 한계가 명확하다는 것을 깨달았다. 오늘 학습한 자료들을 바탕으로, 파이썬에서 변수란 정확히 무엇이고 왜 상자라는 비유를 넘어서야 하는지 스스로 정리해 본다.
 
 

--------------------------------------------------------------------------------

1. 변수는 프로그램이 값을 다루기 쉽게 만드는 '이름표'다
컴퓨터 프로그램은 숫자, 문자열, 계산 결과 등 끊임없이 수많은 데이터를 다루고 처리한다. 만약 이 값들에 이름이 없다면 어떨까? 복잡한 숫자나 임시 데이터들을 매번 직접 적어 넣어야 하니 코드는 끝없이 길어지고, 나중에 코드를 다시 볼 때 그 값이 어떤 의미인지 알아보기도 힘들 것이다.
 
따라서 프로그래밍에서 변수(Variable)는 값을 다루기 쉽게 붙이는 '이름표'와 같은 역할을 한다. 우리가 스마트폰 연락처에 복잡한 전화번호 11자리를 외우는 대신 친구의 이름을 붙여 저장해두고, 나중에 그 이름으로 전화를 거는 것과 완벽히 같은 원리다. 파이썬에서 변수는 단순히 데이터를 묵혀두는 보관소가 아니라, 데이터를 식별하고 다시 꺼내 쓰기 위해 만들어진 핵심 장치다.
 

--------------------------------------------------------------------------------

2. 프로그래밍에서 변수는 왜 필요한가?
직접 코드를 짜보니 변수의 필요성이 확실히 와닿았다. 사용자로부터 입력받은 값을 일시적으로 기억해야 하거나, 긴 계산의 중간 결과를 저장해두고 다음 계산에 재활용해야 할 때 변수는 필수적이었다.
 
예를 들어 price = 10000, name = "Tom", total = price * 2 처럼 값에 직관적인 이름을 붙여주면 해당 코드가 무엇을 의미하는지 단번에 이해할 수 있다. 즉, 숫자나 문자열 자체를 코드에 직접 하드코딩하는 것보다, 의미 있는 변수명으로 다루는 것이 코드의 가독성을 높이고 유지보수와 재사용에 훨씬 유리하다.
 

--------------------------------------------------------------------------------

3. 변수는 값을 저장하는 '상자'가 아니다: 이름과 값의 연결(Reference)
C언어나 자바 같은 프로그래밍 입문서에서는 보통 변수를 데이터를 담아두는 고정된 상자나 버킷으로 설명한다. 초반에는 이 비유가 이해하기 쉽지만, 파이썬의 실제 동작 방식을 살펴보면 상자 비유는 부족함을 넘어 큰 오해를 불러일으킨다.
 
파이썬에서 변수는 단순히 기호(Symbol) 혹은 라벨(Label)에 불과하며, 실제 데이터(값)는 메모리 어딘가에 객체(Object) 형태로 독립적으로 저장된다. 즉, a = 10이라고 선언하면 10이라는 값을 담은 정수 객체가 메모리 상에 먼저 생성되고, a라는 변수는 그 10이 저장된 메모리 주소를 가리키도록 연결될 뿐이다. 하나의 객체에 여러 개의 변수 이름(라벨)을 동시에 붙일 수도 있다. 이 때문에 변수를 어딘가에 값을 우겨넣는 상자라기보다는, '이름과 값의 연결(바인딩)' 이라는 참조(Reference)의 관점으로 이해하는 것이 파이썬의 동적 타입 할당을 이해하는 데 훨씬 정확하며 나중에 생길 논리 오류를 막아준다.
 

--------------------------------------------------------------------------------

4. 대입 연산자(=)의 의미: 수학의 '같다'가 아니라 프로그래밍의 '연결'이다
초보 시절 가장 크게 헷갈렸던 부분 중 하나는 파이썬 등호 기호(=)의 의미였다. 수학에서 등호는 양쪽의 수식이 서로 같다는 '관계'를 증명하는 식이지만, 프로그래밍에서는 오른쪽의 값을 왼쪽의 변수 이름에 '대입(연결)'한다는 전혀 다른 동작을 뜻한다.
 
파이썬 코드에서 x == x**2는 양변이 같은지 테스트하여 True나 False를 반환하는 논리 표현식이지만, x = x**2는 우변(오른쪽)의 연산을 먼저 수행한 후, 그 결과 값을 왼쪽 변수 x에 새롭게 연결하라는 실행(Action) 명령이다. 요컨대 대입 기호는 "x와 10은 서로 같다"고 선언하는 것이 아니라, "앞으로 이 값을 x라는 이름으로 다루겠다"고 지시하는 것이다. 그리고 변수라는 이름답게, 한 번 묶어둔 값을 영원히 고정해서 써야 하는 것은 아니다. 나중에 x = 20이라고 다시 대입 연산을 수행하면, 변수는 이전 값과의 연결을 끊고 새로운 객체 20을 가리키게 된다.
 

--------------------------------------------------------------------------------

5. 파이썬 변수명 선언 시 지켜야 할 작성 규칙
학습한 김에 파이썬 변수 선언 시 에러를 막기 위해 지켜야 할 이름 짓기 규칙도 함께 정리한다. 파이썬에서 변수명은 비교적 자유롭게 지을 수 있지만 가독성과 시스템 오류 방지를 위해 권장되는 약속이 있다. 첫 문자는 대문자(보통 클래스명에 주로 사용됨)보다는 소문자로 시작하는 것이 좋고, 파이썬 내부에서 특정 기능을 수행하도록 이미 지정된 예약어(예: if, for, print, list 등)나 내장 함수명은 변수명으로 쓰면 안 된다. 또한, 빈 공백이나 특수문자(언더바 제외)가 들어가거나, 숫자가 변수명 맨 앞에 오는 경우는 구문 에러가 발생하므로 피해야 한다. 여러 단어가 이어질 때는 단어 사이에 언더바(_)를 넣는 스네이크 표기법(예: my_name)을 활용하면 코드의 가독성이 월등히 높아진다.
 

--------------------------------------------------------------------------------

6. 마무리하며: 입문자가 자주 헷갈리는 부분과 깨달음
오늘의 파이썬 기초 학습을 통해 내가 은연중에 가지고 있었던 변수에 대한 오해들을 명확히 바로잡을 수 있었다. 첫째, 변수명 자체와 실제 데이터 값은 엄연히 다르다는 점이다. 큰따옴표가 붙은 문자열 데이터인 "name"과, 그 문자열 객체를 가리키기 위해 이름표로 사용하는 변수명 name을 더 이상 혼동하지 않게 되었다. 둘째, x = x + 1이라는 식을 처음 봤을 때는 수학적으로 성립할 수 없는 이상한 식이라고 생각했지만, 프로그래밍에서는 우변을 먼저 계산한 뒤 기존의 x라는 이름표를 떼어다가 1이 더해진 새로운 값에 다시 붙이는 매우 자연스러운 '현재 값 갱신 과정'이라는 점을 완벽히 이해했다.
 
결국 프로그램 작성은 수많은 데이터를 다루는 일의 연속이며, 변수는 그 데이터들의 흐름을 중심에서 관리하는 가장 기본적이고 훌륭한 도구다. 오늘 학습을 통해 파이썬 변수를 그저 '단순한 상자'가 아닌 '이름표가 붙은 폴더'로 확장해서 인식할 수 있게 되었다. 이 변수의 참조 구조와 대입의 개념을 단단히 다져두었으니, 앞으로 이어질 파이썬의 다양한 자료형, 조건문, 반복문 등 이후의 문법들도 훨씬 덜 헷갈리고 쉽게 응용할 수 있을 것 같다.
 

 
반응형