Python은 동적 타입(Dynamic Typing) 언어입니다
네, 맞습니다. Python은 동적 타입 언어입니다. 그렇다면 '동적'이라는 것은 정확히 무엇을 의미할까요?
Python에서는 변수에 값을 할당할 때 해당 변수의 타입을 미리 선언할 필요가 없습니다. 반면 C, C++, Java와 같은 정적 타입 언어에서는 값을 할당하기 전에 반드시 변수의 타입을 명시적으로 선언해야 합니다.
Python은 변수 타입을 선언하지 않아도 전혀 문제가 되지 않습니다. 대신 프로그램이 실행되는 런타임(runtime) 시점에 변수의 타입을 자동으로 판단합니다. 이러한 특성 때문에 Python을 동적 타입 언어라고 부르는 것입니다.
예제 코드
실제 예제를 통해 동적 타이핑이 어떻게 작동하는지 확인해 보겠습니다.
## 변수에 값 할당
x = [1, 2, 3]
## 이 시점에서 x는 리스트(list) 타입입니다
print(type(x))
## 같은 변수 x에 다른 타입의 값 재할당
x = True
## 이제 x는 불리언(bool) 타입입니다
print(type(x))
위 프로그램을 실행하면 다음과 같은 결과가 출력됩니다.
실행 결과
<class 'list'>
<class 'bool'>
출력 결과에서 볼 수 있듯이, 동일한 변수 x에 처음에는 리스트를 할당했고, 이후에는 불리언 값을 재할당했습니다. Python은 각 시점에서 변수에 담긴 값의 타입을 유연하게 인식합니다.
동적 타입 언어의 장단점
장점
- 빠른 개발 속도: 타입 선언 없이 바로 코드를 작성할 수 있어 생산성이 높습니다.
- 유연성: 하나의 변수에 다양한 타입의 값을 자유롭게 할당할 수 있습니다.
- 간결한 문법: 코드가 짧고 읽기 쉬워 초보자에게 적합합니다.
단점
- 런타임 오류 가능성: 타입 관련 오류가 실행 시점에야 발견될 수 있습니다.
- 디버깅 어려움: 대규모 프로젝트에서 타입 추적이 까다로울 수 있습니다.
참고로 Python 3.5부터는 타입 힌트(type hints) 기능이 도입되어, 필요하다면 선택적으로 타입을 명시할 수도 있습니다. 이를 통해 동적 타이핑의 유연함은 유지하면서 코드의 가독성과 안정성을 높일 수 있습니다.