isinstance() 함수로 문자열 여부 확인하기
Python에서 변수가 문자열인지 확인하려면 isinstance(var, class) 함수를 사용하는 것이 가장 좋습니다. 이 함수는 첫 번째 인자로 전달된 변수가 두 번째 인자로 지정한 클래스의 인스턴스인지 검사하고, 그 결과를 True 또는 False로 반환합니다.
Python 2.x에서의 사용 방법
Python 2.x에서는 str과 unicode의 공통 기반 클래스가 basestring입니다. 따라서 일반 문자열과 유니코드 문자열을 모두 한 번에 검사할 수 있습니다.
>>> s = 'A string'
>>> isinstance(s, basestring)
True
>>> isinstance(s, str)
True
>>> isinstance(10, basestring)
False
위 예제에서 볼 수 있듯이, 문자열 변수 s는 basestring과 str 모두에 대해 True를 반환하지만, 정수 10은 False를 반환합니다.
Python 3.x에서의 사용 방법
주의할 점은 Python 3.x에서는 basestring이 더 이상 정의되어 있지 않다는 것입니다. Python 3부터는 모든 문자열이 기본적으로 유니코드이므로, 대신 str을 직접 사용해야 합니다.
>>> s = 'A string'
>>> isinstance(s, str)
True
>>> isinstance(10, str)
False
type() 함수와의 차이점
변수 타입을 확인하는 또 다른 방법으로 type() 함수가 있습니다. 하지만 type()은 상속 관계까지 고려하지 않는 반면, isinstance()는 서브클래스도 올바르게 인식합니다. 따라서 타입 검사에는 일반적으로 isinstance()를 사용하는 것이 권장됩니다.
>>> type(s) == str
True
>>> type(10) == str
False
정리
- 문자열 여부 확인에는
isinstance(변수, str)을 사용하세요. - Python 2.x에서는
basestring, Python 3.x에서는str을 사용합니다. - 상속된 클래스까지 고려하려면
type()보다isinstance()가 더 안전합니다.