Python

[[OZ코딩스쿨] 초격차 캠프 - 10일차 (함수) Chapter 6-12. 타입 어노테이션과 힌트

Chansman 2025. 3. 13. 12:28

📌 Python 함수 심화 – Chapter 6-12. 타입 어노테이션과 힌트


✅ 1. 파이썬의 동적 프로그래밍

  • 파이썬은 동적 프로그래밍 언어로, 인터프리터가 실행 시 타입을 추론.
  • 변수의 타입을 자유롭게 변경할 수 있음.
num = 10
print(type(num))

num = "10"
print(type(num))
  • 출력 결과
<class 'int'>
<class 'str'>
  • 설명: 파이썬은 타입을 고정하지 않기 때문에 값에 따라 타입이 자유롭게 변경됨.

❗ 대규모 프로젝트에서는 이러한 유연성이 버그로 이어질 수 있어, 타입 힌팅을 통해 명시적으로 타입을 지정하는 것이 좋음.


✅ 2. 타입 힌팅 (주석 방식)

def oz(x, y, h):
    # type: (int, int, int) -> int
    return x * y * h

oz(10, 10, 10)
  • 출력 결과
1000
  • 설명: 주석을 통해 타입 정보를 제공했지만, 코드 가독성이 떨어지는 단점이 있음.

✅ 3. 타입 어노테이션 (표준 방식)

  • 타입 어노테이션을 사용하여 코드에 타입 정보를 명시적으로 작성.
def oz(x: int, y: int, h: int) -> int:
    return x * y * h

oz(10, 10, 10)
  • 출력 결과
1000
  • 장점:
    • 코드의 가독성정확성이 향상.
    • 코드 자동 완성정적 타입 체크가 가능해짐.

⚠️ 주의: 타입 힌팅은 강제성이 없기 때문에, 잘못된 타입을 입력해도 오류는 발생하지 않음.


✅ 4. 변수 타입 어노테이션

my_dog: str = "hunt"
my_dog_age: int = 7
dogs: list[str] = ["닥스훈트", "시바견", "웰시코기", "이탈리안그레이하운드"]
dogs_age: dict[str, int] = {
    "닥스훈트": 7,
    "시바견": 5,
    "웰시코기": 6,
    "이탈리안그레이하운드": 3,
}

print(my_dog)
  • 출력 결과
hunt
  • 설명: 변수 선언 시 타입을 명시하여 가독성을 향상시킬 수 있음.

✅ 5. 함수 타입 어노테이션

  • 함수의 인자 타입반환 타입을 명시하여 코드의 명확성을 강화.
def hunt(name: str) -> str:
    return name[0]

def hunt_info(name: str, age: int = 7) -> str:
    return name + str(age)

def hunt_happy_time(name: str) -> None:
    print("간식줄게 " + name)

def hunt_bow(message: str, time: int = 10) -> list[str]:
    return [message] * time
  • 설명:
    • -> str: 반환 타입이 문자열.
    • -> None: 반환값이 없음.
    • -> list[str]: 문자열을 원소로 가지는 리스트 반환.

Tip: 팀 프로젝트에서 타입 힌트를 적용할 때는, 팀원과의 사전 합의가 중요.


✅ 이해도 체크리스트

  1. 타입 힌팅과 타입 어노테이션의 차이점은?
    • 타입 힌팅: 주석을 통해 타입 정보를 제공.
    • 타입 어노테이션: 변수나 함수 정의 시 타입 정보를 명시적으로 제공.
  2. 변수에 타입 어노테이션을 사용하는 방법은?
x: int = 10
y: str = "Python"
  1. 함수에 타입 어노테이션을 적용하는 방법은?
def add(x: int, y: int) -> int:
    return x + y
  1. 타입 힌팅을 사용하면 얻을 수 있는 이점은?
    • 코드의 가독성명확성이 향상됨.
    • 정적 타입 체크와 자동 완성 기능을 제공해 코드 오류를 사전 예방할 수 있음.

이 정리된 내용을 통해 타입 어노테이션과 힌트의 개념을 확실히 익히고, 실무에서도 깔끔하고 명확한 코드를 작성해 보세요! 🚀