[Python] Dynamic & Strong Typing한 파이썬의 특징 알아보기

HAHAHELLO·2025년 8월 6일

파이썬

목록 보기
50/50

Dynamic Typing (동적 타이핑)

변수의 타입을 명시하지 않아도 되고, 런타임에 타입이 결정된다.
즉, 변수를 선언할 때 타입을 지정할 필요가 없다.

값(value)에는 타입이 있지만, 변수(variable)에는 타입이 없다.
따라서 아래의 예시처럼 변수 x는 정수 → 문자열 → 리스트로 타입이 계속 바뀌어도 문제가 없다.

x = 10       # int
x = 'hello'  # str
x = [1, 2, 3]  # list

Strong Typing (강한 타이핑)

타입 간의 자동 변환(coercion)을 허용하지 않으며, 명시적인 변환이 필요하다.
타입이 다르면 연산을 강제로 수행하지 않고, 에러가 발생한다.

아래의 예시처럼 문자열 '10'과 숫자 5를 더하려고 하면 TypeError가 발생하게 된다.

x = '10'
y = 5
print(x + y)  # TypeError!

타입의 명시적 변환

print(int(x) + y)  # 15 (문자열 → 정수로 변환)

하지만 약한 타이핑(Weak Typing) 언어(JavaScript, PHP 등)는 자동으로 변환해 줄 수도 있다.

참고로, Java는 정적 + 비교적 강한 타이핑 언어이기 때문에 문자열과 정수는 자동 변환하지 않으며, 서로 다른 타입을 대입하려고 하면 컴파일 시점에 에러가 발생한다.

// static typing 예시 (Java)
public class HelloTypes {
    public static void main(String[] args) {
        String thing;
        thing = "Hello World";

        thing = 42; // 컴파일 에러: int를 String에 대입할 수 없음

        System.out.println(thing);
    }
}

// $ javac HelloTypes.java
// HelloTypes.java:8: error: incompatible types: int cannot be converted to String
//     thing = 42;
// 1 error
profile
데이터 엔지니어가 되어 봅시다 🌈

0개의 댓글