관리 메뉴

클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

파이썬 날아오르기 4 - 파이썬 타입 어노테이션 본문

프로그래밍 언어/파이썬

파이썬 날아오르기 4 - 파이썬 타입 어노테이션

huenuri 2024. 10. 5. 10:16

파이썬 3.5 버전부터 변수와 함께 함수에 타입을 지정할 수 있는 타입 어노테이션 기능이 추가되었다.


 

 

 

 

동적 언어와 정적 언어

a 변수에 숫자 1을 대입하고 type 함수를 실행해 보자.

 

a 변수의 타입은 int형이다. 변수에 문자열 "1"을 대입하고 실행해 보자.

 

 

a의 변수 타입이 str형으로 바뀌었다. 이렇게 프로그램 실행 중에 변수의 타입을 동적으로 바꿀 수 있으므로 파이썬을 동적 프로그래밍 언어라고 한다.

파이썬과 달리 자바는 정수형 변수 a에 숫자 1을 대입하고 다시 문자열 "1"을 대입하려 할 때 컴파일 오류가 발생한다. 자바는 한 번 변수에 타입을 지정하면 지정한 타입 외에 다른 타입은 사용할 수 없으므로 정적 프로그래밍 언어라고 한다.


 

 

 

동적 언어의 장단점

파이썬과 같은 동적 언어는 타입에 자유로원 유연한 코딩이 가능하므로 쉽고 빠르게 프로그램을 만들 수 있다. 타입 체크를 위한 코드가 없으므로 비교적 깔끔한 소스 코드를 생성할 수 있다. 하지만 프로젝트의 규모가 커질수록 타입을 잘못 사용해 버그가 생길 확률도 높아진다.


 

 

 

파이썬 타입 어노테이션

파이썬은 동적 언의 단점을 극복하기 위해 3.5 번전부터 타입 어노테이션 기능을 지원하기 시작했다. 다만 정적 언어에서와 같은 적극적인 타입 체크가 아니라 타입에 대한 힌트를 알려주는 정도의 기능만 지원한다. 동적 언어의 장점을 잃지 않고 기존에 작성된 코드와의 호완성을 생각한 것이다.

타입 어노테이션은 다음과 같이 사용한다.

 

 

변수 이름 바로 뒤에 :int와 같이 사용해 num 변수가 int형이라는 것을 명시한다.

 

함수의 매개변수에도 같은 규칙을 적용하여 매개변수의 타입을 명시할 수 있다. ->int처럼 사용해 리턴값의 타입을 명시할 수 있다.


 

 

 

mypy

파이썬은 타입 어노테이션으로 매개변수의 타입을 명시하더라도 다음과 같은 다른 타입의 연수를 입력할 수 있다.

 

 

add 함수의 b 매개변수는 int 형이지만, 3.4와 같은 float 형 데이터를 사용해도 이 코드는 문제없이 돌아간다. 파이썬 타입 어노테이션은 체크가 아닌 힌트이기 때문이다.

더 적극적으로 파이썬 어노테이션을 활용하려면 mypy를 사용하는 것이 좋다. mypy는 파이썬 표준 라이브러리가 아니므로 다음과 같이 설치한 후에 사용할 수 있다.

 

 

 

하지만 파일을 확인하면 타입이 맞지 않는다는 오류가 뜬다. 다음과 같이 코드를 수정해 보았다.


 

 

 

 

 

int 형으로 맞게 고치자 오류가 뜨지 않고 성공적으로 출력이 된다.

 


 

 

 

 

 

학습을 마치고

 

이제 파이썬 날아오르기 단원 학습은 모두 마쳤다. 이제 정규 표현식 공부만 하고 파이썬 학습을 마치려고 한다. 어노테이션을 비롯해 여러 가지 많은 것들을 배웠다.