변수와 타입
모든 프로그램은 무언가를 기억해야 합니다. 퀴즈는 플레이어의 이름이 필요하고, 게임은 현재 점수가 필요하며, 날씨 스크립트는 확인하려는 도시가 필요합니다. Python은 이를 위해 변수를 사용합니다. 변수는 값에 붙이는 이름으로, 프로그램 전체에서 해당 값을 사용할 수 있게 해줍니다.
player_name = "지민"
score = 0
city = "서울"세 줄. Python이 이제 기억하는 세 가지입니다. 나중에 그 이름 중 하나를 사용하면 Python이 해당 값을 돌려줍니다.
값 저장하기
= 기호는 수학 시간에 배운 것과 달라 거의 모든 사람이 처음에 혼란스러워합니다. Python에서 =는 "같다"를 의미하지 않습니다. 이 이름으로 이 값을 저장하라는 의미입니다. 왼쪽에서 오른쪽으로 읽어보세요:
city = "서울"city가 "서울"을 받습니다. Python에게 이렇게 말하는 겁니다: "서울"을 기억하고 city라고 이름 붙여라.
언제든지 변수의 값을 바꿀 수 있습니다. Python은 가장 최근 값을 사용합니다:
score = 0
score = 10 # score는 이제 10
score = 15 # score는 이제 15변수 이름 짓기
이름은 여러분이 선택합니다. Python에는 몇 가지 엄격한 규칙이 있고, 커뮤니티는 처음부터 따를 가치가 있는 관례를 따릅니다. 명확한 이름은 몇 주 후에도 코드를 읽기 쉽게 만듭니다. 모호한 이름은 고통을 유발합니다.
Python이 강제하는 규칙:
- 문자, 숫자, 밑줄만 사용 가능. 공백이나 하이픈 불가.
- 문자나 밑줄로 시작해야 하며, 숫자로 시작 불가
- 대소문자 구분:
score,Score,SCORE는 세 개의 별개 변수
모든 사람이 따르는 관례 (PEP 8):
| 대상 | 스타일 | 예시 |
|---|---|---|
| 변수와 함수 | snake_case | user_name, total_price |
| 상수 | UPPER_SNAKE_CASE | MAX_RETRIES, BASE_URL |
| 클래스 | PascalCase | UserAccount, DataLoader |
# 명확한 이름, 한눈에 읽기 쉬움
user_name = "지민"
total_price = 49.99
is_logged_in = True
MAX_RETRIES = 3
# 한 시간 안에 후회하게 될 이름들
x = "지민"
tp = 49.99
b = True초반에 알아둘 가치 있는 한 가지 함정: list, input, type, print와 같은 Python 내장 함수 이름으로 변수를 만들지 마세요. Python은 허용하지만, 해당 스코프의 나머지 부분에서 내장 함수가 조용히 망가지고 그로 인한 오류는 추적하기 어렵습니다.
저장할 수 있는 것
Python에는 거의 모든 프로그램에서 사용하게 될 네 가지 타입이 있습니다. Python은 값을 작성하는 방식에서 어떤 타입인지 파악합니다. 타입을 명시적으로 선언할 필요가 없습니다.
텍스트 (str)
모든 텍스트는 작은따옴표나 큰따옴표 안에 넣습니다. 따옴표는 Python에게 변수 이름이 아닌 리터럴 문자를 의미한다고 알려줍니다. 한번 생성된 문자열은 제자리에서 변경할 수 없습니다. 문자열 챕터에서 문자열로 할 수 있는 모든 것을 다룹니다.
player_name = "지민"
city = "서울"
message = '게임 오버'텍스트에 아포스트로피가 포함된 경우, 이스케이프를 피하기 위해 큰따옴표를 사용하세요:
note = "It's a great day"
note = 'It\'s a great day' # 이스케이프를 사용한 동일한 결과정수 (int)
정수는 따옴표나 소수점 없이 입력합니다. Python은 이를 **정수(integer)**라고 합니다. 얼마든지 크게 만들 수 있습니다. Python은 특별한 노력 없이 임의로 큰 숫자를 처리합니다.
score = 0
age = 28
population = 8_100_000_000 # 밑줄은 가독성을 위한 것소수 (float)
소수점이 있는 모든 숫자는 float입니다. 대부분의 계산에서 예상대로 작동합니다. 알아둘 점: 일부 소수 값은 이진수로 정확하게 저장할 수 없어 아주 작은 반올림 오류가 발생할 수 있습니다:
price = 4.99
temperature = 36.6
0.1 + 0.2 # 0.30000000000000004일상적인 작업에서는 거의 문제가 되지 않습니다. 몇 분의 일 센트까지 중요한 금융 계산에서는 Python의 decimal 모듈이 올바르게 처리합니다. 이는 숫자 챕터에서 다룹니다.
참 또는 거짓 (bool)
어떤 것들은 단순히 켜져 있거나 꺼져 있습니다. Python은 이를 위해 **불리언(boolean)**을 사용합니다: 정확히 두 가지 값, True와 False. 이 단계에서는 사소해 보이지만, 프로그램의 모든 조건과 분기는 불리언으로 작동합니다.
is_logged_in = True
has_errors = FalsePython은 또한 조건에서 사용될 때 특정 값을 False처럼 취급합니다: 0, 0.0, "", 그리고 None("여기에 값 없음"을 뜻하는 Python의 표현)은 모두 False처럼 동작합니다. 다른 모든 것은 True처럼 동작합니다. 이는 제어 흐름 챕터에서 유용해집니다.
타입 확인과 변환
값의 타입이 확실하지 않을 때 type()이 알려줍니다. 값이 특정 타입인지 확인하려면 isinstance()가 더 신뢰할 수 있는 도구입니다:
print(type("hello")) # <class 'str'>
print(type(42)) # <class 'int'>
print(type(3.14)) # <class 'float'>
print(type(True)) # <class 'bool'>
isinstance(42, int) # True
isinstance("hi", str) # TruePython은 타입을 자동으로 혼합하지 않습니다. 문자열과 숫자를 연결하면 TypeError가 발생합니다:
score = 42
print("Your score is " + score) # TypeError
print("Your score is " + str(score)) # 작동함타입 이름을 함수로 사용해 명시적으로 변환하세요:
| 호출 | 결과 |
|---|---|
str(42) | "42" |
int(3.9) | 3 (잘림, 반올림 아님) |
float("3.14") | 3.14 |
int("3.14") | ValueError: 소수 문자열을 int로 직접 변환 불가 |
int(float("3.14")) | 3 (먼저 float로 변환 후 int로 변환) |
bool(0) / bool("") | False |
실제 활용
네 가지 타입이 모두 함께 작동하는 간단한 스크립트입니다. 출력 줄은 f-문자열을 사용해 텍스트에 값을 삽입합니다: 여는 따옴표 앞에 f를 붙이고 {}로 변수를 감쌉니다. Python이 실제 변수 값으로 대체합니다. 다음 챕터에서 제대로 배우게 됩니다.
player_name = "지민"
level = 3
accuracy = 0.94
is_premium = True
print(f"{player_name}은 레벨 {level}에서 정확도 {accuracy:.0%}입니다.")
print(f"프리미엄 계정: {is_premium}")타입이 중요한 이유는 level + 1은 작동하지만 player_name + 1은 작동하지 않기 때문입니다. 각 변수는 정확히 한 종류의 값을 담으며, Python은 조용히 그것들을 혼합하지 않습니다.

