Python

[Python] __future__ (import __future__)

프로그래밍 공부를 하다보니 종종 다른 사람들의 코드에서 아래와 같은 구문을 보게 된다

from __future__ import absolute_import, division, print_function, unicode_literals

__future__라는 임포트 형식인데, 도대체 이걸 왜 쓰는 것일까??

프로그래밍 언어들은 사용자들의 피드백에 따라서 그 언어 고유의 내장 기능을 추가하고 수정한다. 파이썬도 그렇게 기능들이 진화하며 버전업을 해간다.  파이썬의 공식 홈페이지 (https://www.python.org/downloads/)에서 여러 버전을 확인 할 수 있다. 파이썬3버전을 쓴다면 문제가 없겠지만 2세대와 3세대는 차이가 꽤 크며, 3버전의 많은 기능들을 2버전에서는 호환하여 사용할 수가 없다. 대표적인 예시로는 absolute_import, division, print_function, nested_scopes, generators, with_statement, unicode_literals, generator_stop, annotations 등의 기능들이 있다. 

만약 우리가 새로운 버전으로 업데이트를 해주지 않았거나 특별한 이유로 인하여 구버전의 언어를 써야할 때, 최신 파이썬 버전의 기능을 쓰고 싶은 상황이 있을 수 있다. 예를 들어 내가 사용하는 라이브러리는 파이썬 2를 사용해야 하는데, 나는 파이썬의 3버전의 어떠한 기능을 사용해야하는 경우를 말한다. 이러한 상황을 위해 상위버전의 기능을 사용할 수 있도록 지원하는 모듈이 __future__ 모듈이다.

from __future__ import absolute_import, division, print_function, nested_scopes, generators, with_statement, unicode_literals, generator_stop, annotations

이렇게 해주면 구버전에서도 미래 버전(상위 버전)의 기능들을 자유자재로 사용 가능하다.