Python/파이선과 친해지기

[Python] - Python과 매우 친해지기-type annotation

Python과 다른 언어와의 큰 차이점을 두자면(요즈음 들어서는 많은 언어가 지원하기에 퇴색된 기능이지만) Type으로부터의 자유로움을 손에 꼽을 수 있다.

>>> a=1 >>> b="heyhey" >>> type(a) <class 'int'> >>> type(b) <class 'str'>

위와 같이 다른 언어에서의 변수 선언 시 type을 같이 지정해 주어야 하는 재래식 언어와는 많은 차별점을 둔다.

다만 이런 Python의 장점은 코드의 규모가 커지고 방대해질 수록 많은 문제를 야기하며, 프로그램의 동작상에서 동작하는 Runtime level의 문제라기보다는, 프로그래머 사이 작성되는 코드 혹은 과거의 나와 싸우고 있는 프로그래머들에게 Type의 힌트를 줄 필요성이 생겼다.

<최솟값을 찾는 함수 : JAVA의 경우>

// 최소값을 찾는 JAVA함수, int를 반환하고 ArrayList<int>를 받는다는 것을 함수에서 알 수 있다. public int findMinimumNumber(ArrayList<int> arr){ int result = arr[0]; for(int a : arr) if(result > a) result=a; return result; }

<최솟값을 찾는 함수 : Python의 경우>

### 내장함수 min에 의해 처리될 수 있는 value를 입력으로 받고 그의 원소값을 반환 ### 어떤형의 parameter를 받고 반환하는지 알 수 없다. def find_minimum(value) : return min(value)

위와 같은 문제들을 해결하기 위해 함수에 주석을 달거나 하는 프로그래머 개개인의 노력을 이용했다.

### param : list ret : int def find_minimum(value) : return min(value)

Python도 이 문제를 인식한 듯 Type Annotation을 제공한다. 다음과 같다.

def find_minimum(value : list) -> int : return min(value)

사용법은 간단한다.

  • 변수명 뒤 콜론(:)을 붙이고 type명을 기술 type명에는 클래스도 들어갈 수 있다.
  • 함수의 반환은 화살표(->)을 붙이고 type명을 기술 당연하게도 여기도 클래스가 들어갈 수 있다.

단! 이렇게 적는 type annotation은 주석의 확장으로 밖에 여겨지지 않으며, 인터프리터는 해석 시 type annotation을 염두하지 않는다.