정수는 크기 제한을 거의 의식하지 않아도 돼
Python의 int는 메모리가 허락하는 범위에서 커져. 2진수·8진수·16진수 표기와 자릿수 구분용 밑줄도 지원해. 나눗셈 /은 실수를, 몫 연산 //은 바닥 나눗셈 결과를 준다는 차이도 기억해.
실수는 십진수를 정확히 저장하지 못할 수 있어
float는 IEEE 754 이진 부동소수점이야. 그래서 0.1 + 0.2가 정확히 0.3이 아니라 0.30000000000000004가 될 수 있어. 근삿값 비교에는 math.isclose를 쓰고, 통화처럼 십진 정확성이 계약이라면 문자열에서 만든 Decimal을 써.
bool과 None
bool은 True와 False를 나타내며 정수 계층과도 연결돼 있어. None은 0이나 빈 문자열이 아니라 “값이 없음”을 뜻하는 하나뿐인 객체야. 조건식에서는 0, 빈 문자열, 빈 컨테이너, None이 거짓으로 평가되고 나머지 대부분은 참으로 평가돼.
변환은 실패할 수 있어
int, float, str, bool로 값을 바꿀 수 있지만, 의미가 맞지 않으면 예외가 나. 특히 bool('False')가 참인 이유는 글자의 뜻이 아니라 “비어 있지 않은 문자열”이기 때문이야.
원칙: 숫자 타입은 계산 영역의 계약으로 골라. 빠른 근삿값이면 float, 정확한 십진값이면 Decimal이야.