Skip to content

2.18. 내용정리: 19일차

흔한 찐따 edited this page Apr 7, 2022 · 1 revision

덕 타이핑 (Duck-Typing)

파이썬 공식 문서의 duck-typing 문서에는 다음과 같이 정의하고 있다.

  • 올바른 인터페이스를 가졌는지 판단하는데 객체의 형을 보지 않는 프로그래밍 스타일을 의미한다.
    • 대신, 단순히 메서드나 어트리뷰트가 호출되거나 사용된다.
    • 오리처럼 보이고 오리처럼 꽥꽥댄다면, 그것은 오리다.
  • 특정한 형 대신에 인터페이스를 강조함으로써, 잘 설계된 코드는 다형적인 치환을 허락함으로써 유연성을 개선할 수 있다.
  • 덕 타이핑은 type() 이나 isinstance() 을 사용한 검사를 피한다.
    • 하지만, 덕 타이핑이 추상 베이스 클래스 로 보완될 수 있음에 유의해야 한다.
  • 대신에, hasattr() 검사나 EAFP 프로그래밍을 사용한다.

덕 타이핑이란, 파이썬과 같은 스크립트 언어에서 데이터의 타입을 명시하지 않아도 프로그램 실행 도중(런타임)에 타입이 동적으로 바뀌는 것을 의미한다.

어노테이션 (Annotation)

파이썬 공식 문서의 어노테이션(annotation) 문서에 따르면 다음과 같이 정의하고 있다.

  • 관습에 따라 형 힌트로 사용되는 변수, 클래스 어트리뷰트 또는 함수 매개 변수나 반환 값과 연결된 레이블이다.
  • 지역 변수의 어노테이션은 실행 시간에 액세스할 수 없지만, 전역 변수, 클래스 속성 및 함수의 어노테이션은 각각 모듈, 클래스, 함수의 __annotations__ 특수 어트리뷰트에 저장된다.

즉, 파이썬에서는 프로그램이 동작하는 동안 변수에 어떤 타입이 들어가는지 알 수 없기 때문에 명시할 수단이 필요한데, 이를 지원하는 것이 바로 어노테이션이다.

타입 힌트 (Type-Hint)

파이썬 공식 문서의 type-hint 문서에 따르면 다음과 같이 정의하고 있다.

  • 변수, 클래스 어트리뷰트 및 함수 매개 변수 나 반환 값의 기대되는 형을 지정하는 어노테이션이다.
  • 형 힌트(type-hint)는 선택 사항이며 파이썬에서 강제되지는 않는다.
  • 하지만, 정적 형 분석 도구에 유용하며 IDE의 코드 완성 및 리팩토링을 돕는다.

요약

공식문서의 설명만으로는 잘 이해가 안 갔기 때문에 계속 읽어보면서 이해해본 결과는 다음과 같다.

  • 파이썬은 런타임 도중 타입이 바뀔 수 있는 덕 타이핑이 가능한 언어이기 때문에 타입을 명시해줄 수단이 필요하다.
  • 그래서 파이썬에 새롭게 추가되어 등장한 것이 바로 타입에 대한 힌트를 주는 타입 힌트이다.
  • 타입 힌트는 타입 힌팅(type-hinting)이라고 많이 불리며, 파이썬에서 지원하는 문법의 일종이다.
  • 파이썬에서 타입 힌트의 매커니즘은 어노테이션으로 정의된다.
  • 어노테이션이란, 변수나 함수, 클래스, 더 나아가 모듈에 힌트를 줄 수 있는 문법적인 요소이다.
  • 어노테이션은 각 모듈이나 클래스, 함수에 매직 메서드인 __annotations__ 에 저장된다.
  • 타입 힌트를 사용하는 방법은 아래의 예시와 같다.

예시

  • 변수의 경우, 변수 :타입 = 값 와 같이 표현한다.
num :int = 1
  • 함수나 메서드의 경우, def 함수명(매개 변수 :타입) -> 반환 타입 와 같이 표현한다.
def f(x: int, y: int) -> int:
    return x + y

typing

  • typing 모듈은 보다 다양한 타입 어노테이션을 위해 사용하는 모듈이다.
  • 파이썬 공식 문서의 typing 문서를 참고하면 된다.
from typing import List

def f(x: List[int]) -> int:
    return sum(x)

y = f([1, 2, 3, 4, 5])
print(y)

흔한 찐따

안녕하세요, 흔한 찐따 입니다.

Clone this wiki locally