1 변수란 무엇일까?
→ 데이터를 저장하는 이름표(label)임
→ 숫자, 문자, 리스트 등 다양한 값을 저장하고, 나중에 꺼내서 사용할 수 있음
1-1 코드
name = 'Alice'
age = 20
print(name, age) # Alice 20
→ 즉, 변수는 '값을 담는 상자'라기보단 객체를 가리키는 이름표임
2 변수 선언과 할당
▼ 기본 문법
변수이름 = 값
→ 등호(=)는 '같다'가 아니라 '값을 저장한다(assign)'는 뜻임
→ 왼쪽은 변수 이름, 오른쪽은 저장할 값임
2-1 코드
x = 10
message = 'Hello'
3 변수 이름 규칙과 네이밍 팁
1) 기본 규칙
→ 사용 가능한 문자는 알파벳, 숫자, 밑줄(_)임
→ 숫자로 시작하거나 공백을 포함하는 것은 불가능함
→ 대소문자를 구분함
→ 예약어는 사용할 수 없음
→ 한글 변수도 가능하지만 영문 + snake_case를 권장함
2) 좋은 변수 이름 짓기
→ 이름만 보고 무슨 값을 담는지 알 수 있게 하기
→ 파이썬은 snake_case 스타일을 권장함
→ 불리언 변수는 질문형으로 사용하기
→ 상수는 대문자를 사용하기
4 파이썬 변수의 특징 - 동적 타이핑 & 객체 참조
→ 파이썬은 동적 타이핑 언어(Dynamic Typing) 언어라서 변수에 값을 넣을 때 자동으로 타입이 결정됨
3-1 코드
x = 10 # int
x = 'Hi' # str
x = [1, 2] # list
→ 변수는 객체(Object)를 직접 담는 것이 아니라 참조(reference)함
→ 즉, 변수는 '화살표', 값은 '진짜 객체'라고 생각하면 됨
5 타입 확인과 타입 힌트
1) 타입 확인
→ type() 함수로 자료형을 확인할 수 있음
→ 파이썬의 모든 데이터는 객체로 구성되어 있음
4-1 코드
num = 3.14
print(type(num)) # <class 'float'>
2) 타입 힌트
→ 코드 가독성이 향상되고 IDE 자동 완성에 유용함
→ 단, 실행 시에는 강제되지 않음
4-2 코드
name: str = 'Alice'
age: int = 25
6 가변(Mutable) vs 불변(Immutable)
→ 불변형에는 int, str, tuple이 있으며, 수정 시 새 객체를 생성함
→ 가변형에는 list, dict, set이 있으며, 수정 시 같은 객체의 내부를 수정함
5-1 코드
# 불변형
x = 10
y = x
y = y + 1 # x=10, y=11
# 가변형
a = [1,2]
b = a
b.append(3) # a,b 둘 다 [1,2,3]
→ 리스트나 딕셔너리는 copy()로 복사해야 안전함
7 여러 변수 한 번에 다루기
6-1 코드 : 여러 값 동시 할당
x, y, z = 10, 20, 30
6-2 코드 : 여러 변수에 같은 값
a = b = c = 0
→ 단, 리스트 같은 가변 객체는 공유되므로, 사용할 거면 6-3 코드 형태로 사용해야 함
6-3 코드
a, b = [], []
6-4 코드 : 값 교환 (Swap)
a, b = 10, 20
a, b = b, a
6-5 코드 : 언패킹 (Unpacking)
a, *b = [1, 2, 3, 4]
print(a) # 1
print(b) # [2, 3, 4]
6-6 코드 : 값 무시(_)
x, _, y = (10, 20, 30)
8 변수 삭제와 재할당
1) 변수 삭제(del)
→ del은 이름표를 제거하는 명령임
→ 객체는 남아 있을 수 있지만, 이름이 없으면 GC가 자동으로 정리함
7-1 코드
x = 10
del x
2) 변수 재할당
→ 기존 값이 수정되는 게 아니라, 새 객체로 참조가 변경됨
x = 10
x = 20 # 새 객체 20을 가리킴
9 변수 사용 시 주의사항 & 흔한 오류
1) NameError - 선언 안 된 변수
→ 변수를 먼저 선언하고 사용하면 해결할 수 있음
2) TypeError - 자료형 혼합
→ str(변수) 또는 f'{변수}' 형식에 맞춰 사용하면 해결할 수 있음
3) UnboundLocalError - 지역/전역 변수 혼동
→ 최소한으로 global을 사용하면 해결할 수 있음
4) 내장 함수/예약어 중복
→ 의미 있는 이름을 사용하여 해결할 수 있음
5) Scope 혼동(섀도잉)
→ 함수 안팎 변수 구분을 이해하면 해결할 수 있음
6) 데이터 공유 오류 (Mutable 참조)
→ .copy()로 복사하면 해결할 수 있음
7) 재할당으로 인한 데이터 손실
→ 새 변수로 결과를 저장하면 해결할 수 있음
8) 대소문자 구분
→ 일관성(snake_case)을 유지하면 해결할 수 있음
Python 변수에 대해 더 상세한 설명을 원하는 분들은 아래 사이트에 접속하기
Python 변수뿐만 아니라 다른 프로그래밍 언어에 대해 알고 싶은 분들은 아래 사이트에 접속하여 원하는 링크에 접속하기