Python에서 변수(Variable)는 데이터를 저장하는 데 사용되는 이름이 부여된 메모리 공간입니다. 프로그래밍에서 변수는 데이터를 저장하고, 수정하며, 재사용할 수 있도록 하는 핵심 개념입니다. Python은 변수의 선언과 사용이 간단하며, 동적 타이핑(dynamic typing)을 지원하여 높은 유연성을 제공합니다. 이 장에서는 변수를 심도 있게 이해하기 위해 선언, 할당, 사용법, 그리고 메모리 구조와 연관된 동작을 자세히 살펴봅니다.
1. 변수란?
변수(Variable)는 데이터 값을 저장하기 위한 이름입니다. 프로그래머는 변수를 사용해 메모리의 특정 위치에 데이터를 저장하고, 그 데이터를 코드에서 재사용합니다.
변수의 역할
• 데이터 저장: 데이터를 임시로 저장하여 연산이나 출력에서 사용.
• 가독성 향상: 의미 있는 이름을 통해 코드의 의도를 명확히 표현.
• 재사용성: 값을 반복적으로 사용하거나 업데이트 가능.
2. Python에서 변수 선언과 할당
Python에서는 변수 선언과 할당이 매우 간단하며, 명시적인 선언 키워드가 필요 없습니다. 변수는 값을 처음 할당할 때 생성됩니다.
변수의 선언과 할당
변수를 선언하려면 = 연산자를 사용하여 변수 이름에 값을 할당합니다.
문법
변수이름 = 값
예제
x = 10 # 정수 할당
y = 3.14 # 실수 할당
name = "Alice" # 문자열 할당
Python의 변수 선언 특성
• 타입 지정 불필요: Python은 변수의 데이터 타입을 명시적으로 지정하지 않습니다.
• 동적 타이핑: 동일한 변수에 서로 다른 타입의 값을 할당할 수 있습니다.
예제: 동적 타이핑
x = 10 # x는 정수
x = "Python" # x는 문자열로 변경
변수 이름 규칙
변수 이름은 다음과 같은 규칙을 따라야 합니다:
1. 알파벳, 숫자, 밑줄(_)로 구성:
• 숫자로 시작할 수 없습니다.
• 예: valid_name, name123, _hidden_variable
2. 대소문자 구분:
• 예: Name과 name은 다른 변수.
3. 예약어 사용 금지:
• Python 키워드(if, while, def 등)는 변수로 사용할 수 없습니다.
• 확인: import keyword; print(keyword.kwlist)
잘못된 변수 이름
2variable = 10 # 숫자로 시작
for = "loop" # 예약어 사용
my-variable = 5 # 하이픈 사용
3. 변수의 동작: 선언과 할당
변수 선언
Python은 명시적 선언 없이 변수를 사용할 수 있습니다. 변수에 값을 할당하면 자동으로 선언됩니다.
예제
x = 42 # 변수 선언 및 할당
print(x) # 출력: 42
다중 변수 할당
Python은 한 줄에서 여러 변수를 선언하고 값을 할당하는 기능을 제공합니다.
동일한 값 할당
a = b = c = 0
print(a, b, c) # 출력: 0 0 0
다른 값 동시 할당
x, y, z = 1, 2, 3
print(x, y, z) # 출력: 1 2 3
변수 값 변경
Python 변수는 값을 재할당할 수 있습니다. 이전 값은 더 이상 사용되지 않고, 새 값이 변수에 저장됩니다.
예제
x = 5
x = 10 # x의 값이 10으로 변경
print(x) # 출력: 10
변수 삭제
Python의 del 키워드를 사용하여 변수를 삭제할 수 있습니다. 삭제된 변수는 더 이상 접근할 수 없습니다.
예제
x = 100
del x
print(x) # 오류: NameError
4. 변수와 메모리
Python에서 변수는 값 자체가 아니라 객체의 참조를 저장합니다.
Python의 모든 데이터는 객체로 구현되며, 변수는 객체를 참조하는 이름표 역할을 합니다.
객체와 참조
변수는 객체의 메모리 주소를 참조합니다.
예제
x = [1, 2, 3]
y = x # y는 x가 참조하는 동일한 객체를 참조
x.append(4)
print(y) # 출력: [1, 2, 3, 4]
변수의 값 복사와 참조
• 불변 객체(Immutable): 값이 변경되지 않습니다. 새로운 값 할당 시 새로운 객체 생성.
• 예: int, float, str, tuple.
• 가변 객체(Mutable): 값이 변경되면 동일한 객체에 변경 사항 반영.
• 예: list, dict, set.
불변 객체 예제
a = 10
b = a
a = 20
print(a, b) # 출력: 20 10 (다른 객체 참조)
가변 객체 예제
x = [1, 2, 3]
y = x
x.append(4)
print(x, y) # 출력: [1, 2, 3, 4] (같은 객체 참조)
5. 변수의 스코프(Scope)
변수의 스코프(Scope)는 변수가 유효한 코드의 범위를 의미합니다.
지역 변수(Local Variable)
함수 내부에서 선언된 변수로, 함수가 종료되면 사라집니다.
예제
def my_function():
local_var = 10
print(local_var)
my_function()
# print(local_var) # 오류: NameError
전역 변수(Global Variable)
함수 외부에서 선언된 변수로, 프로그램 전체에서 접근 가능합니다.
예제
global_var = 20
def my_function():
print(global_var) # 전역 변수 접근
my_function()
전역 변수 수정
함수 내부에서 전역 변수를 수정하려면 global 키워드를 사용해야 합니다.
예제
x = 5
def modify_global():
global x
x = 10
modify_global()
print(x) # 출력: 10
6. 변수 사용 시 유의사항
1. 의미 있는 이름 사용:
• 변수 이름은 데이터의 목적을 명확히 나타내야 합니다.
score = 95 # 의미 있는 이름
x = 95 # 의미가 불분명
2. 타입 안정성 확인:
• 동적 타이핑은 유연성을 제공하지만, 예상치 못한 동작을 초래할 수 있습니다.
x = "10"
y = 5
print(x + y) # 오류 발생
3. 메모리 관리:
• Python의 Garbage Collector가 사용되지 않는 객체를 자동으로 삭제하지만, 객체 참조 관리에 유의해야 합니다.
7. 요약
• 변수는 데이터를 저장하고 재사용하기 위해 메모리 주소를 참조하는 이름표입니다.
• Python은 동적 타이핑을 지원하여 유연하지만, 데이터 타입 관리에 주의해야 합니다.
• 불변 객체와 가변 객체의 동작 차이를 이해하면 효율적인 코드를 작성할 수 있습니다.
'코딩교육 > Python 초등교육에서 전문가까지' 카테고리의 다른 글
2단계 : 1. 변수와 자료형 (feat. 자료형 소개와 특징) (0) | 2025.02.13 |
---|---|
2단계 : 1. 변수와 자료형 (feat. Python의 동적 타이핑 특성) (1) | 2025.02.12 |
1단계 : 10. Python 으로 간단한 프로젝트 만들기 (feat. 간단한 텍스트 기반 게임 - 숫자 맞추기) (0) | 2025.02.10 |
1단계 : 10. Python 으로 간단한 프로젝트 만들기 (feat. 로또 번호 생성기) (0) | 2025.02.08 |
1단계 : 10. Python 으로 간단한 프로젝트 만들기 (feat. 기본 계산기 만들기 - 덧셈, 뺄셈, 곱셈, 나눗셈 기능) (0) | 2025.02.07 |