여기서는 변수를 "타입 칸"보다 값에 붙는 이름으로 먼저 봅니다.
Python에서는 이름이 어떤 값을 가리키는지가 핵심이고, 타입은 변수 선언이 아니라 현재 값의 성질에서 따라옵니다.
숏컷 코드
name = "Mina" # str
age = 26 # int
ratio = 3.14 # float
is_ready = True # bool
result = None # None
value = 10
value = "ten" # 같은 이름을 다른 값에 다시 바인딩문법
기본형은 대입, 재바인딩, 기본 타입 값, 변환, None 검사까지 같이 보면 됩니다.
name = "Mina"
count = 3
ratio = 3.14
is_ready = True
result = None
value = 10
value = "ten"
count = int("10")
ratio = float("3.14")
text = str(10)
if value is None:
...int, float, str, bool, None은 입문 단계에서 가장 자주 다시 보는 기본값입니다.
중요한 것은 정의를 외우는 것보다, 이 값이 코드에서 어떤 역할을 맡는지 같이 읽는 것입니다.
바인딩
변수는 값에 붙는 이름이고, 같은 이름이 다른 값을 다시 가리킬 수 있다
Python은 선언문에서 타입을 먼저 박아 두지 않습니다.
값을 대입하면 그 이름이 현재 그 객체를 가리키게 됩니다.
count = 3
label = "three"
count = "done"문법은 단순하지만, 한 이름에 전혀 다른 성격의 값을 자주 다시 넣으면 읽는 사람이 코드를 추적하기 어려워집니다. 그래서 Python도 동적 타이핑이 편하다고 이름을 막 바꾸는 코드를 권장하진 않습니다.
기본 타입
int, float, str, bool, None은 값의 역할을 보여 준다
입문 단계에서 가장 자주 보는 타입은 int, float, str, bool, NoneType입니다.
중요한 건 정의를 외우는 것보다 이 값으로 무슨 일을 하려는가를 같이 보는 겁니다.
lives = 3 # int: 개수, 횟수, 인덱스
price = 19.99 # float: 소수점 수치
username = "mina" # str: 텍스트
is_admin = False # bool: 참/거짓 상태
result = None # NoneType: 아직 값이 없음int: 개수, 횟수, 인덱스float: 소수점 계산str: 텍스트와 출력bool: 조건 분기와 상태 표현None: 아직 값이 없다는 신호
변환
문자열 입력을 숫자나 텍스트 역할로 바꿀 때 변환 함수를 쓴다
Python에서는 입력이나 파일 값이 문자열로 들어오는 경우가 많습니다.
그래서 int(), float(), str(), bool() 같은 변환 함수를 자주 보게 됩니다.
age_text = "26"
age = int(age_text)
price_text = "19.99"
price = float(price_text)값의 겉모양과 실제 쓰임이 다를 때 "언제 변환하느냐"가 중요한 판단이 됩니다.
raw = "0"
if raw:
print("문자열은 비어 있지 않다")
count = int(raw)
if count == 0:
print("숫자로 바꾸면 0이다")즉 문자열 "0"과 숫자 0은 모양도 역할도 다릅니다. 입력값은 필요한 순간에만 변환하는 편이 흐름을 읽기 쉽습니다.
text = "3.14"
count = int("3")
ratio = float(text)
name = str(123)즉 int()와 float()는 "계산 가능한 값으로 바꾸기", str()은 "출력 가능한 텍스트로 바꾸기"라는 차이로 읽으면 됩니다.
count = int("10") # 10
ratio = float("10") # 10.0
text = str(10) # "10"
flag = bool("10") # True겉보기 입력이 같아도 결과 역할은 다릅니다. bool()은 문자열 내용을 읽어 "true"/"false"를 판정하는 함수가 아니라, 비어 있는가 아닌가를 기준으로 참/거짓을 만듭니다.
조건 읽기
truthy와 falsy를 알면 조건문이 짧아진다
Python은 많은 값을 조건식에서 자동으로 참/거짓처럼 읽습니다.
빈 문자열, 빈 리스트, 0, None은 보통 거짓처럼 취급됩니다.
name = ""
items = []
count = 0
if not name:
print("이름이 비어 있음")
if not items:
print("목록이 비어 있음")이 규칙을 알면 len(items) == 0 같은 장황한 표현을 줄일 수 있습니다.
다만 "비어 있음"과 "None"을 구분해야 할 때는 is None을 따로 써야 합니다.
주의할 점
if not value:와 is None은 같은 뜻이 아닙니다. None은 값 비교보다 동일성 비교로 읽는 것이 Python 관용구에 가깝습니다.
# ❌ 빈 문자열, 0, None이 모두 같은 쪽으로 들어감
if not value:
print("값 없음")
# ✅ 정말 None 여부를 직접 확인
if value is None:
print("값 없음")# ❌ 문자열 "False"를 bool로 바꾸면 기대와 다를 수 있다
print(bool("False")) # True
print(bool("0")) # True
# ✅ 문자열을 직접 비교하거나 별도 파싱 규칙을 둔다
text = "false"
is_ready = text.lower() == "true"참고 링크
2 sources