Python 객체 비교의 기본 규칙
Python에서 서로 다른 타입의 객체를 비교할 때는 몇 가지 규칙이 적용됩니다. 숫자를 제외한 서로 다른 타입의 객체들은 타입 이름을 기준으로 정렬되며, 올바른 비교 연산을 지원하지 않는 같은 타입의 객체들은 메모리 주소를 기준으로 정렬됩니다.
같은 타입끼리의 비교
두 문자열을 비교하거나 두 숫자 타입을 비교할 때는 예상한 대로 동작합니다. 문자열은 사전순(lexicographic order)으로 비교되고, 정수와 같은 숫자 타입은 수치적 크기를 기준으로 비교됩니다.
다른 타입끼리의 비교
숫자 타입과 숫자가 아닌 타입을 비교할 때는 숫자 타입이 항상 먼저 옵니다. 즉, 숫자 타입이 더 작다고 간주됩니다.
문자열에 담긴 숫자를 변환하여 비교하기
문자열(str) 객체에 숫자가 저장되어 있는 경우에는 int() 또는 float() 생성자를 사용해 손쉽게 숫자 타입으로 변환한 뒤 비교할 수 있습니다. 다음 예제를 살펴보세요.
i = 100 j = "12" int_j = int(j) print(int_j < i)
위 코드는 문자열 "12"를 정수 12로 변환한 후, 100과 비교합니다. 실행 결과는 다음과 같습니다.
True
참고: Python 3에서의 주의사항
위에서 설명한 '숫자 타입이 항상 먼저 온다'는 규칙은 Python 2의 동작 방식입니다. Python 3에서는 숫자와 문자열처럼 호환되지 않는 타입을 직접 비교하면 TypeError가 발생하므로, 반드시 위 예제처럼 int()나 float()로 타입을 변환한 후 비교해야 합니다.