본문 바로가기
실버를 위한 코딩/파이썬

[파이썬] 파이썬은 '동적 타입 언어'이면서 '강한 타입 언어'

by forSilver 2024. 5. 27.
반응형

파이썬은 '동적 타입 언어'이면서 '강한 타입 언어'

파이썬은 '동적 타입 언어'이면서 '강한 타입 언어'입니다. 이 두 가지 개념은 파이썬의 타입 시스템을 이해하는 데 중요한 요소입니다. 각각에 대해 설명드리겠습니다.

동적 타입 언어 (Dynamically Typed Language)

동적 타입 언어는 변수의 타입이 런타임(프로그램이 실행되는 동안)에 결정되는 언어를 의미합니다. 즉, 변수의 타입을 명시적으로 선언할 필요가 없고, 변수에 어떤 값을 할당하느냐에 따라 타입이 동적으로 결정됩니다.

특징:

  1. 타입 선언 필요 없음:
    • 변수 선언 시 타입을 명시할 필요가 없습니다.
      x = 10       # 정수형
      y = "hello"  # 문자열
      z = 3.14     # 실수형
  2. 유연성:
    • 변수의 타입을 자유롭게 변경할 수 있습니다.
      x = 10
      x = "now I'm a string"  # 정수에서 문자열로 타입 변경
  3. 런타임 에러:
    • 타입 관련 에러는 프로그램 실행 중에 발생할 수 있습니다.
      x = 10
      print(x + "hello")  # 정수와 문자열을 더할 수 없어 런타임 에러 발생

강한 타입 언어 (Strongly Typed Language)

강한 타입 언어는 변수의 타입이 엄격하게 유지되는 언어를 의미합니다. 즉, 한 타입의 값을 다른 타입으로 암묵적으로 변환하지 않으며, 타입 간의 불일치가 있을 경우 에러가 발생합니다.

특징:

  1. 엄격한 타입 변환:
    • 파이썬에서는 명시적으로 타입 변환을 하지 않으면 서로 다른 타입 간의 연산이 허용되지 않습니다.
      x = 10
      y = "20"
      # print(x + y)  # 타입 에러 발생
      print(x + int(y))  # 타입을 맞춘 후 연산 수행
  2. 타입 안정성:
    • 타입이 강하게 유지되므로 의도하지 않은 타입 변환으로 인한 오류를 방지할 수 있습니다.
      x = 10
      y = "20"
      # 자동 타입 변환을 하지 않으므로 타입 에러를 통해 문제를 조기에 발견 가능
  3. 명시적 타입 변환 필요:
    • 서로 다른 타입 간의 연산을 하려면 명시적으로 타입을 변환해야 합니다.
      x = 10
      y = "20"
      y_as_int = int(y)  # 문자열을 정수로 명시적 변환
      print(x + y_as_int)  # 30 출력

파이썬의 동적 타입과 강한 타입 결합 예시

파이썬은 동적 타입이면서 강한 타입이기 때문에 다음과 같은 코드 동작을 관찰할 수 있습니다:

# 동적 타입의 예
x = 10       # x는 정수형
print(x)     # 출력: 10

x = "hello"  # x는 이제 문자열형
print(x)     # 출력: hello

# 강한 타입의 예
a = 5
b = "10"
# print(a + b)  # 타입 에러 발생: 정수와 문자열은 더할 수 없음

# 명시적 타입 변환
b_int = int(b)
print(a + b_int)  # 출력: 15

주피터 노트북에서 실행

결론

파이썬은 동적 타입 언어로, 변수의 타입을 미리 선언하지 않아도 되며, 변수의 타입은 프로그램이 실행되는 동안 동적으로 결정됩니다. 또한, 파이썬은 강한 타입 언어로, 타입 간의 불일치가 있을 경우 자동으로 변환하지 않으며, 명시적인 타입 변환이 필요합니다. 이러한 특성으로 인해 파이썬은 유연하면서도 타입 관련 오류를 방지할 수 있는 안정성을 제공합니다.