2-1 변수 선언과 할당: 데이터 저장의 기본

2-1 변수 선언과 할당: 데이터 저장의 기본

← 목차로 돌아가기

썸네일

프로그래밍에서 데이터를 다루는 것은 마치 물건을 정리하는 것과 같습니다. 수많은 정보들을 어디에, 어떻게 보관해야 효율적일까요? 이번 장에서는 이 질문에 대한 파이썬의 답, 즉 ‘변수’에 대해 자세히 알아보겠습니다. 변수를 이해하면 데이터를 저장하고 관리하는 코딩의 첫걸음을 떼게 됩니다.

변수란 무엇이며 왜 필요할까요?

변수는 컴퓨터 메모리에 값을 저장하고, 그 값을 이름으로 참조할 수 있게 해주는 ‘이름표’입니다. 코딩을 처음 배울 때 저는 변수를 ‘데이터를 담는 상자’ 같다고 느꼈습니다. 상자에 이름을 붙여두면 나중에 그 상자 안의 물건을 쉽게 찾아 쓸 수 있듯이, 변수도 특정 데이터를 저장하고 필요할 때 그 이름을 불러 데이터를 사용하는 방식입니다. 파이썬은 이러한 변수를 통해 숫자, 문자열, 리스트 등 다양한 형태의 데이터를 유연하게 처리합니다. 예를 들어, 게임에서 플레이어의 점수를 저장하거나, 웹사이트에서 사용자의 이름을 기억하는 모든 과정에 변수가 사용됩니다. 변수가 없다면 우리는 데이터를 사용할 때마다 그 데이터가 저장된 메모리 주소를 직접 찾아가야 할 것이고, 이는 상상조차 하기 싫은 비효율적인 작업이 될 것입니다. 제가 취미로 파이썬을 독학할 때 가장 먼저 배운 개념 중 하나가 바로 이 변수였고, 변수를 이해하는 순간 코드가 ‘살아있는’ 느낌을 받았습니다.

파이썬에서 변수는 어떻게 선언하고 할당하나요?

파이썬에서 변수는 `변수명 = 값` 형태로 간결하게 선언하고 할당합니다. 다른 프로그래밍 언어와 달리 파이썬은 변수의 ‘타입’을 미리 지정할 필요가 없습니다. 이는 파이썬의 동적 타이핑(dynamic typing) 특징 덕분입니다. 예를 들어, `age = 30`이라고 작성하면 `age`라는 변수에 정수 `30`이 저장되고, `name = “파이썬”`이라고 하면 `name`이라는 변수에 문자열 `”파이썬”`이 저장됩니다. `age` 변수는 숫자 데이터를, `name` 변수는 문자 데이터를 담고 있는 것입니다. 파이썬 인터프리터가 이 코드를 실행하는 순간, 변수의 타입이 자동으로 결정됩니다. 나중에 필요하다면 데이터 타입 변환을 통해 변수의 타입을 변경할 수도 있습니다.

다음은 변수를 선언하고 값을 할당하는 간단한 예제 코드입니다.

# 사용자의 이름을 저장하는 변수 선언 및 할당
user_name = "김파이"

# 사용자의 나이를 저장하는 변수 선언 및 할당
user_age = 25

# 원주율 값을 저장하는 변수 선언 및 할당 (실수형 데이터)
pi_value = 3.14159

# 변수에 저장된 값을 출력하여 확인
print(user_name)
print(user_age)
print(pi_value)

이 코드를 실행하면 `user_name`, `user_age`, `pi_value` 변수에 할당된 값이 각각 출력되는 것을 볼 수 있습니다. 이처럼 변수를 사용하면 코드를 더 읽기 쉽고 관리하기 편하게 만들 수 있습니다. 특히 데이터 분석 작업을 할 때, 수많은 데이터를 임시로 저장하고 처리해야 할 때 변수는 필수적인 요소입니다.

변수 이름 규칙과 권장 사항

가독성을 높이는 변수 이름은 코드 유지보수에 필수적입니다. 변수 이름을 지을 때는 몇 가지 규칙과 권장 사항을 따르는 것이 좋습니다.

  • 변수 이름은 알파벳, 숫자, 언더스코어(_)로 구성될 수 있습니다.
  • 변수 이름은 숫자로 시작할 수 없습니다. (예: `1st_name`은 불가능하지만 `first_name1`은 가능합니다.)
  • 변수 이름은 대소문자를 구분합니다. (`myVar`와 `myvar`는 다른 변수로 인식됩니다.)
  • 파이썬의 예약어(키워드)는 변수 이름으로 사용할 수 없습니다. (`if`, `for`, `while`, `print` 등)
  • 권장 사항: 파이썬에서는 일반적으로 변수 이름을 스네이크 케이스(snake_case)로 작성하는 것을 권장합니다. 모든 단어를 소문자로 쓰고 단어 사이를 언더스코어(_)로 연결하는 방식입니다. (예: `user_score`, `total_count`).

변수 이름을 의미 있게 짓는 것은 좋은 코드를 작성하는 중요한 습관입니다. 제 경험상, 변수 이름을 대충 지으면 몇 주 뒤에 코드를 다시 봤을 때 제가 뭘 하려 했는지조차 기억나지 않아 시간을 낭비하는 경우가 많았습니다. 따라서 처음부터 명확한 이름을 붙이는 연습을 하는 것이 좋습니다. 이는 특히 여러 사람이 함께 작업하는 프로젝트에서 코드의 가독성을 높이는 데 결정적인 역할을 합니다.

변수 값 변경 및 재할당

변수는 필요에 따라 언제든 새로운 값을 가질 수 있습니다. 변수에 일단 값을 할당했다고 해서 그 값이 영원히 고정되는 것은 아닙니다. 프로그램이 실행되는 동안 변수의 값은 얼마든지 변경될 수 있습니다. 새로운 값을 할당하면 이전에 저장되어 있던 값은 사라지고, 새로운 값으로 대체됩니다. 이는 변수가 ‘가변적(mutable)’이라는 의미를 내포합니다.

예를 들어, 게임에서 플레이어의 점수를 나타내는 변수가 있다고 가정해봅시다.

# 초기 점수 할당
score = 100
print(f"현재 점수: {score}점") # 출력: 현재 점수: 100점

# 아이템 획득으로 점수 증가
score = score + 50 # 또는 score += 50
print(f"아이템 획득 후 점수: {score}점") # 출력: 아이템 획득 후 점수: 150점

# 레벨 업 보너스 점수 추가
score += 200
print(f"레벨 업 후 점수: {score}점") # 출력: 레벨 업 후 점수: 350점

# 변수에 다른 타입의 값을 재할당
score = "점수 계산 완료"
print(score) # 출력: 점수 계산 완료

위 코드에서 보듯이, `score` 변수의 값은 프로그램 진행에 따라 `100`에서 `150`, 그리고 `350`으로 계속 변경됩니다. 심지어 마지막에는 문자열로 재할당될 수도 있습니다. 파이썬의 이러한 유연성은 개발자가 다양한 상황에 맞춰 데이터를 다루기 편하게 해줍니다. 하지만 너무 무분별한 재할당은 코드의 혼란을 야기할 수 있으므로 주의해야 합니다.

여러 변수에 동시에 값 할당하기

파이썬은 여러 변수에 동시에 값을 할당하는 편리한 문법을 제공합니다. 이는 코드를 더 간결하게 만들 수 있는 유용한 기능입니다. 두 가지 주요 방식이 있습니다.

1. 여러 변수에 각각 다른 값 할당하기:

쉼표(`,`)를 사용하여 여러 변수와 값을 나열하는 방식입니다. 주로 두 변수의 값을 교환할 때 유용하게 쓰입니다.

# x, y 변수에 각각 10과 20을 할당
x, y = 10, 20
print(f"x: {x}, y: {y}") # 출력: x: 10, y: 20

# x와 y의 값을 서로 교환
x, y = y, x
print(f"값 교환 후 -> x: {x}, y: {y}") # 출력: x: 20, y: 10

다른 언어에서는 임시 변수를 사용해야 하는 값을 교환하는 작업이 파이썬에서는 한 줄로 깔끔하게 처리됩니다. 이 기능을 처음 접했을 때 저는 파이썬의 간결함에 크게 감탄했습니다.

2. 여러 변수에 동일한 값 할당하기:

동일한 값을 여러 변수에 할당하고 싶을 때는 `x = y = z = 값` 형태로 연결하여 할당할 수 있습니다.

# a, b, c 변수에 모두 100 할당
a = b = c = 100
print(f"a: {a}, b: {b}, c: {c}") # 출력: a: 100, b: 100, c: 100

이는 여러 변수를 동일한 값으로 초기화할 때 특히 유용합니다.

변수 사용의 흔한 실수와 주의할 점

변수 이름 오타와 초기화 누락은 초보자가 자주 겪는 문제입니다. 파이썬은 매우 유연한 언어이지만, 기본적인 실수로 인해 프로그램이 예상대로 동작하지 않을 수 있습니다. 제가 현업에서 3년간 파이썬을 사용하며 가장 많이 본 초보자 실수는 다음과 같습니다.

  • `NameError` 발생: 존재하지 않는 변수 이름(오타)을 사용하거나, 변수를 선언하기 전에 사용하려고 할 때 발생합니다. 예를 들어 `my_variable`을 정의하고 `my_varialbe`로 호출하면 파이썬은 이 변수를 찾을 수 없어 에러를 발생시킵니다. 저도 `my_variable`을 `my_varialbe`로 잘못 입력해서 밤새 디버깅한 적이 있습니다.
  • 예약어 사용: `class`, `def`, `if` 등 파이썬 예약어를 변수 이름으로 사용하면 문법 에러가 발생합니다.
  • 대소문자 혼동: `userName`과 `username`을 같은 변수로 착각하는 경우입니다. 파이썬은 대소문자를 엄격히 구분하므로 주의해야 합니다.
  • 의미 없는 변수 이름: `a`, `b`, `c`와 같이 의미를 알 수 없는 변수 이름은 나중에 코드를 이해하고 유지보수하는 데 큰 어려움을 줍니다. 제가 과거에 작성했던 자동화 스크립트 중 일부가 이런 변수 이름 때문에 현재는 저조차도 이해하기 어려운 ‘레거시 코드’가 되어버렸습니다.

이러한 실수를 줄이기 위해서는 변수 이름을 신중하게 짓고, 코드를 작성한 후에는 반드시 실행하여 예상대로 동작하는지 확인하는 습관을 들이는 것이 중요합니다. 통합 개발 환경(IDE)을 사용하면 이러한 오류를 실시간으로 감지하여 도움을 받을 수 있습니다. 통합 개발 환경(IDE) 선택과 설정 챕터에서 더 자세한 정보를 얻을 수 있습니다.

마무리하며: 변수는 코딩의 기초 체력입니다

이번 챕터에서는 파이썬에서 데이터를 저장하는 가장 기본적이면서도 중요한 개념인 변수에 대해 알아보았습니다. 변수를 통해 우리는 숫자, 문자열 등 다양한 형태의 데이터를 이름으로 관리하고, 프로그램의 필요에 따라 값을 변경할 수 있습니다. 변수의 개념은 모든 프로그래밍 언어의 핵심이며, 이를 제대로 이해하는 것은 파이썬 프로그래밍의 기초 체력을 단단히 다지는 것과 같습니다. 다음 챕터에서는 파이썬이 다루는 숫자형 데이터(정수와 실수)문자열을 좀 더 깊이 있게 살펴보겠습니다. 앞으로 배우게 될 모든 복잡한 로직과 데이터 구조 역시 변수 위에서 작동하므로, 오늘 배운 내용을 충분히 연습하시길 바랍니다.

참고 자료

  1. [1] Python 공식 튜토리얼 — 파이썬 훑어보기 — https://docs.python.org/ko/3/tutorial/introduction.html
  2. [2] Python 용어집 — https://docs.python.org/ko/3/glossary.html

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다