본문 바로가기

Programming/Python

[Python] Function Annotation (':', '->' 이란?)

728x90
반응형

project_azua github 코드를 분석하던 중 함수에서 -> symbol을 만나게 되었다.

예전에는 그냥 무심코 지나갔었는데 코드를 하나하나 분석하다보니 궁금증이 생겼다.

 

파이썬은 다른 언어에 비해 문법의 제약이 적은 편이다.

이로인해 유연성이 높고 쉬운 반면 작성된 코드를 봤을 때 해석하기에 비교적 모호할 수가 있다.

예를 들면 파이썬에서는 함수를 선언 할 때 파라미터의 타입을 따로 지정할 필요가 없어 개발자는 신경 쓸 부분이 훨씬 적다.

그러나 코드 작성자가 아닌 다른 개발자는 코드를 봤을 때 어떤 타입형이 들어가야 직관적으로 알기 힘들다.

 

따라서 이런 문제를 해결해주기 위해 사용하는 기능이 바로 "Function Annotation"이다. (Type hints)

 

 

공식 문서의 예시를 통해서 function annotation이 무엇인지 한 번 살펴보자. 

 

def sum_two_numbers(a: int, b: int) -> int:
   return a + b

 

함수를 보면 입력 인자에 a : int, b : int라고 적혀있는 것을 볼 수 있다.

이는 바로 입력 인자에 들어와야 할 타입형이 무엇인지를 사용자에게 알려주는 것이다!

 

-> int의 경우에는 return되는 값의 타입형을 알려주는 것이다!

 

 

그러나 Function Annotation은 말그대로 정보를 전달해주는 역할이다.

따라서 강제성이 전혀 없다!

지정되어있는 타입형이 아니더라도 코드 상 오류가 나지 않으면 문제가 없이 돌아간다.

말그대로 함수를 설명해주는 주석이라고 생각하면 될 것 같다.

 

 

 

 

 

 

 

 

What’s this weird arrow notation in Python?

Find out how Python 3’s function annotations can help you write clearer, more human-friendly code.

medium.com

 

 

Glossary — Python 3.10.2 documentation

The implicit conversion of an instance of one type to another during an operation which involves two arguments of the same type. For example, int(3.15) converts the floating point number to the integer 3, but in 3+4.5, each argument is of a different type

docs.python.org

728x90
반응형