변수(Variable)의 모든 것: 파이썬 프로그래밍의 기본 빌딩 블록
1. 서론: 데이터를 담는 그릇, 변수
프로그래밍의 세계에서 ‘데이터’는 모든 것의 핵심입니다. 우리는 데이터를 처리하고, 저장하고, 조작하여 원하는 결과를 얻습니다. 이때 데이터를 임시로 저장하고 관리하는 데 사용되는 가장 기본적인 도구가 바로 ‘변수(Variable)’입니다. 변수는 마치 데이터를 담는 이름표가 붙은 상자와 같습니다. 상자에 어떤 물건을 넣든, 우리는 이름표만 보고 그 상자 안에 무엇이 들어있는지 알 수 있습니다. 파이썬에서 변수는 이러한 데이터 상자의 역할을 하며, 프로그램이 실행되는 동안 필요한 값들을 저장하고 참조할 수 있게 해줍니다. 이 챕터에서는 파이썬에서 변수가 무엇인지, 어떻게 변수를 만들고 값을 할당하는지, 그리고 변수 이름을 지을 때 지켜야 할 규칙과 권장 사항에 대해 깊이 있게 알아보겠습니다. 변수를 제대로 이해하는 것은 파이썬 프로그래밍의 견고한 기초를 다지는 첫걸음이 될 것입니다.
2. 변수(Variable)란 무엇인가?
파이썬에서 변수는 데이터를 저장하는 ‘이름이 붙은 저장 공간’입니다. 컴퓨터의 메모리 어딘가에 특정 값을 저장하고, 그 값에 접근하기 위한 식별자(이름)를 부여하는 것이죠. 예를 들어, age = 30이라는 코드는 30이라는 숫자 값을 age라는 이름의 변수에 저장하겠다는 의미입니다. 이제 우리는 age라는 이름을 통해 30이라는 값에 접근하고, 필요에 따라 이 값을 변경하거나 다른 연산에 사용할 수 있습니다.
2.1. 변수의 특징
- 가변성 (Mutable): 변수에 저장된 값은 프로그램 실행 중에 언제든지 변경될 수 있습니다. 그래서 ‘변수(Variable)’라고 불립니다.
- 동적 타이핑 (Dynamic Typing): 파이썬은 변수를 선언할 때 자료형(예: 정수, 문자열)을 명시할 필요가 없습니다. 변수에 어떤 값을 할당하느냐에 따라 파이썬 인터프리터가 자동으로 자료형을 결정합니다. 예를 들어,
x = 10이라고 하면x는 정수형이 되고,x = "hello"라고 하면x는 문자열형이 됩니다. - 객체 참조: 파이썬에서 변수는 실제 값을 직접 저장하는 것이 아니라, 값이 저장된 메모리 공간의 ‘주소’를 참조합니다. 즉, 변수는 객체를 가리키는 이름표와 같습니다. 이 개념은 파이썬의 메모리 관리와 깊은 관련이 있습니다.
3. 변수 선언과 값 할당하기
파이썬에서 변수를 선언하고 값을 할당하는 방법은 매우 간단합니다. = (할당 연산자)를 사용합니다.
# 변수 선언과 값 할당의 기본 형태
변수이름 = 값
예시:
# 정수형 변수
my_age = 25
print(my_age) # 출력: 25
# 실수형 변수
pi = 3.14159
print(pi) # 출력: 3.14159
# 문자열 변수
my_name = "Alice"
print(my_name) # 출력: Alice
# 불리언 변수
is_active = True
print(is_active) # 출력: True
# 변수의 값 변경
my_age = 26 # my_age의 값이 25에서 26으로 변경됩니다.
print(my_age) # 출력: 26
# 다른 자료형의 값 할당
my_variable = 100
print(my_variable) # 출력: 100
my_variable = "Hello, Python!" # 이제 my_variable은 문자열을 참조합니다.
print(my_variable) # 출력: Hello, Python!
3.1. 여러 변수에 동시에 값 할당하기
파이썬은 여러 변수에 동시에 값을 할당하는 편리한 기능을 제공합니다.
# 여러 변수에 동일한 값 할당
x = y = z = 100
print(x) # 출력: 100
print(y) # 출력: 100
print(z) # 출력: 100
# 여러 변수에 서로 다른 값 할당 (튜플 언패킹과 유사)
a, b, c = 10, 20, 30
print(a) # 출력: 10
print(b) # 출력: 20
print(c) # 출력: 30
# 변수 값 교환 (임시 변수 없이)
var1 = 10
var2 = 20
print(f"교환 전: var1 = {var1}, var2 = {var2}") # 출력: 교환 전: var1 = 10, var2 = 20
var1, var2 = var2, var1 # var1과 var2의 값이 교환됩니다.
print(f"교환 후: var1 = {var1}, var2 = {var2}") # 출력: 교환 후: var1 = 20, var2 = 10
4. 변수 이름 규칙과 권장 사항
변수 이름은 코드를 읽는 사람이 변수가 어떤 값을 저장하고 있는지 쉽게 이해할 수 있도록 의미 있게 짓는 것이 중요합니다. 파이썬에서 변수 이름을 지을 때는 다음과 같은 규칙과 권장 사항을 따라야 합니다.
4.1. 변수 이름 규칙 (필수)
이 규칙들을 지키지 않으면 파이썬 인터프리터가 오류를 발생시킵니다.
-
문자, 숫자, 밑줄(
_)만 사용 가능: 변수 이름은 영문 대소문자(a-z, A-Z), 숫자(0-9), 그리고 밑줄(_)로만 구성될 수 있습니다.- 허용:
my_variable,name1,_count,total_sum - 불가:
my-variable(하이픈 사용 불가),1st_name(숫자로 시작 불가),total sum(공백 사용 불가)
- 허용:
-
숫자로 시작할 수 없음: 변수 이름은 숫자로 시작할 수 없습니다.
- 허용:
value1,_2nd_try - 불가:
1value,2total
- 허용:
-
예약어(Keyword) 사용 불가: 파이썬에서 특별한 의미를 가지는 예약어(키워드)는 변수 이름으로 사용할 수 없습니다. 예약어는
False,None,True,and,as,assert,async,await,break,class,continue,def,del,elif,else,except,finally,for,from,global,if,import,in,is,lambda,nonlocal,not,or,pass,raise,return,try,while,with,yield등입니다. 이들은 파이썬의 문법을 구성하는 중요한 요소이므로 변수 이름으로 사용하면 안 됩니다.- 허용:
my_class,for_loop - 불가:
class,for
- 허용:
-
대소문자 구분: 파이썬은 대소문자를 구분합니다.
my_variable과My_Variable은 서로 다른 변수로 인식됩니다.age = 20Age = 30- 위 두 변수는 서로 다른 변수입니다.
4.2. 변수 이름 권장 사항 (PEP 8)
이 권장 사항들은 필수는 아니지만, 파이썬 커뮤니티에서 널리 받아들여지는 코딩 스타일 가이드인 PEP 8(Python Enhancement Proposal 8)을 따르는 것입니다. 이를 지키면 코드가 더 일관되고 가독성이 높아져 다른 개발자와의 협업에 유리합니다.
-
소문자와 밑줄 사용 (snake_case): 변수 이름은 소문자로 작성하고, 여러 단어로 구성될 경우 단어 사이에 밑줄(
_)을 사용하여 구분하는 것이 일반적입니다. 이를 ‘스네이크 케이스(snake_case)’라고 합니다.- 권장:
first_name,total_score,is_valid - 비권장:
firstName(camelCase),TotalScore(PascalCase)
- 권장:
-
의미 있는 이름 사용: 변수가 어떤 데이터를 저장하는지 명확하게 알 수 있도록 의미 있는 이름을 사용합니다. 짧고 간결하면서도 의미를 전달할 수 있는 이름이 좋습니다.
- 권장:
user_age,product_price,student_count - 비권장:
x,y,a1(의미를 알 수 없는 이름)
- 권장:
-
약어 사용 자제: 너무 많은 약어는 코드의 가독성을 떨어뜨릴 수 있습니다. 일반적으로 통용되는 약어(예:
id,url)가 아니라면 풀어서 쓰는 것이 좋습니다. -
상수는 대문자와 밑줄 사용 (SCREAMING_SNAKE_CASE): 프로그램 실행 중에 값이 변하지 않는 상수(Constant)는 모든 글자를 대문자로 작성하고, 단어 사이에 밑줄을 사용하여 구분하는 것이 관례입니다. 이는 변수와 상수를 시각적으로 구분하는 데 도움이 됩니다.
- 예시:
MAX_CONNECTIONS = 100,PI = 3.141592
- 예시:
5. 변수의 메모리 주소 확인하기 (id() 함수)
파이썬에서 변수는 값을 직접 저장하는 것이 아니라, 값이 저장된 메모리 공간의 주소를 참조한다고 했습니다. 이를 확인하기 위해 id() 함수를 사용할 수 있습니다. id() 함수는 객체의 고유한 식별자(메모리 주소)를 반환합니다.
num1 = 10
num2 = 10
num3 = 20
print(f"num1의 값: {num1}, id: {id(num1)}")
print(f"num2의 값: {num2}, id: {id(num2)}")
print(f"num3의 값: {num3}, id: {id(num3)}")
# num1과 num2는 같은 값을 참조하므로 id가 같습니다.
# num3은 다른 값을 참조하므로 id가 다릅니다.
text1 = "hello"
text2 = "hello"
text3 = "world"
print(f"text1의 값: {text1}, id: {id(text1)}")
print(f"text2의 값: {text2}, id: {id(text2)}")
print(f"text3의 값: {text3}, id: {id(text3)}")
# 문자열도 동일한 값을 참조할 경우 id가 같을 수 있습니다.
참고: 파이썬은 메모리 효율성을 위해 작은 정수나 짧은 문자열과 같이 자주 사용되는 불변(immutable) 객체에 대해서는 동일한 값을 가진 변수들이 같은 메모리 주소를 참조하도록 최적화되어 있습니다. 따라서 num1과 num2의 id가 같게 나오는 것은 정상적인 동작입니다.
6. 결론: 변수, 프로그래밍의 시작이자 핵심
이 챕터를 통해 여러분은 파이썬 변수의 개념, 선언 및 할당 방법, 그리고 변수 이름 규칙과 권장 사항에 대해 자세히 알아보았습니다. 변수는 데이터를 저장하고 조작하는 프로그래밍의 가장 기본적인 빌딩 블록이며, 변수를 제대로 이해하고 활용하는 것은 효율적이고 가독성 높은 코드를 작성하는 데 필수적입니다.
파이썬의 동적 타이핑과 객체 참조 방식은 다른 언어와는 다른 독특한 특징을 가지므로, 충분히 이해하고 익숙해지는 것이 중요합니다. 또한, PEP 8과 같은 코딩 스타일 가이드를 따르는 습관을 들이면 여러분의 코드가 더욱 전문적이고 협업에 용이해질 것입니다.
이제 여러분은 데이터를 다루는 첫 번째 도구인 변수를 손에 넣었습니다. 다음 챕터에서는 파이썬에서 숫자를 어떻게 표현하고, 어떤 종류의 숫자를 다룰 수 있으며, 기본적인 사칙연산을 어떻게 수행하는지에 대해 자세히 알아보겠습니다. 변수와 숫자는 모든 프로그래밍의 기본이 되는 요소이므로, 꾸준히 연습하여 여러분의 파이썬 실력을 더욱 단단하게 다지세요!
