-
Notifications
You must be signed in to change notification settings - Fork 1
2.18. 내용정리: 19일차
흔한 찐따 edited this page Apr 7, 2022
·
1 revision
파이썬 공식 문서의 duck-typing 문서에는 다음과 같이 정의하고 있다.
- 올바른 인터페이스를 가졌는지 판단하는데 객체의 형을 보지 않는 프로그래밍 스타일을 의미한다.
- 대신, 단순히 메서드나 어트리뷰트가 호출되거나 사용된다.
- 오리처럼 보이고 오리처럼 꽥꽥댄다면, 그것은 오리다.
- 특정한 형 대신에 인터페이스를 강조함으로써, 잘 설계된 코드는 다형적인 치환을 허락함으로써 유연성을 개선할 수 있다.
- 덕 타이핑은
type()이나isinstance()을 사용한 검사를 피한다.- 하지만, 덕 타이핑이 추상 베이스 클래스 로 보완될 수 있음에 유의해야 한다.
- 대신에,
hasattr()검사나EAFP프로그래밍을 사용한다.
즉 덕 타이핑이란, 파이썬과 같은 스크립트 언어에서 데이터의 타입을 명시하지 않아도 프로그램 실행 도중(런타임)에 타입이 동적으로 바뀌는 것을 의미한다.
파이썬 공식 문서의 어노테이션(annotation) 문서에 따르면 다음과 같이 정의하고 있다.
- 관습에 따라 형 힌트로 사용되는 변수, 클래스 어트리뷰트 또는 함수 매개 변수나 반환 값과 연결된 레이블이다.
- 지역 변수의 어노테이션은 실행 시간에 액세스할 수 없지만, 전역 변수, 클래스 속성 및 함수의 어노테이션은 각각 모듈, 클래스, 함수의
__annotations__특수 어트리뷰트에 저장된다.
즉, 파이썬에서는 프로그램이 동작하는 동안 변수에 어떤 타입이 들어가는지 알 수 없기 때문에 명시할 수단이 필요한데, 이를 지원하는 것이 바로 어노테이션이다.
파이썬 공식 문서의 type-hint 문서에 따르면 다음과 같이 정의하고 있다.
- 변수, 클래스 어트리뷰트 및 함수 매개 변수 나 반환 값의 기대되는 형을 지정하는 어노테이션이다.
- 형 힌트(type-hint)는 선택 사항이며 파이썬에서 강제되지는 않는다.
- 하지만, 정적 형 분석 도구에 유용하며 IDE의 코드 완성 및 리팩토링을 돕는다.
공식문서의 설명만으로는 잘 이해가 안 갔기 때문에 계속 읽어보면서 이해해본 결과는 다음과 같다.
- 파이썬은 런타임 도중 타입이 바뀔 수 있는 덕 타이핑이 가능한 언어이기 때문에 타입을 명시해줄 수단이 필요하다.
- 그래서 파이썬에 새롭게 추가되어 등장한 것이 바로 타입에 대한 힌트를 주는 타입 힌트이다.
- 타입 힌트는 타입 힌팅(type-hinting)이라고 많이 불리며, 파이썬에서 지원하는 문법의 일종이다.
- 파이썬에서 타입 힌트의 매커니즘은 어노테이션으로 정의된다.
- 어노테이션이란, 변수나 함수, 클래스, 더 나아가 모듈에 힌트를 줄 수 있는 문법적인 요소이다.
- 어노테이션은 각 모듈이나 클래스, 함수에 매직 메서드인
__annotations__에 저장된다. - 타입 힌트를 사용하는 방법은 아래의 예시와 같다.
- 변수의 경우,
변수 :타입 = 값와 같이 표현한다.
num :int = 1- 함수나 메서드의 경우,
def 함수명(매개 변수 :타입) -> 반환 타입와 같이 표현한다.
def f(x: int, y: int) -> int:
return x + y-
typing모듈은 보다 다양한 타입 어노테이션을 위해 사용하는 모듈이다. - 파이썬 공식 문서의 typing 문서를 참고하면 된다.
from typing import List
def f(x: List[int]) -> int:
return sum(x)
y = f([1, 2, 3, 4, 5])
print(y)