Deep_Learning

import __future__ 구문의 의미

MoonLight314 2024. 1. 11. 17:10
728x90

안녕하세요, MoonLight입니다.

이번 Post에서는 Python Code보면 가끔 보이는 "import __future__ ~~~" 이 문구가 무엇을 의미하는지 한 번 알아보도록 하겠습니다.

0. __future__의 의미가 뭐지?

__future__ Module은 현재 Python Version에서는 지원하지 않지만, 상위 Version의 Python에서는 지원하는 기능을 사용할 수 있도록 해준다고 하네요.

즉, 미래 Version에서는 이미 사용할 수 있지만, 현재 Python Version에서는 지원하지 않는 기능을 현재 Python Version에서 지원해 준다는 의미인데,

제가 처음 이 설명을 봤을 때는 언뜻 와닿지는 않는 설명이었습니다.

예를 들면, Python 2.x에서의 print와 3.x의 print는 사용법이 약간 다르죠?

이런 경우

from __future__ import print_function

이렇게 선언하고 나면, Python 2.x에서도 아래와 같이 print문을 3.x 처럼 사용할 수 있다는 의미입니다.

print("Hello, World!")

이런 기능을 만든 목적은 큰 변환가 있는 경우에 개발자들이 점진적으로 새로운 기능 혹은 문법에 적응할 수 있도록 도와주기 위해서 만들었습니다.

이렇게 하면 실제로 변화가 생겼을 때 좀 더 부드럽게 적응할 수 있기 때문이죠.

1. 어떻게 미래에 적용될 기능을 현재 Module에서 사용할 수 있지?

그럼 어떻게 미래에 적용될 기능을 현재에 미리 사용할 수 있을지 의문이 생기더라구요.

이렇게 사용할 수 있는 원리는 현재 Version을 Release할 때 미리 새로운 Version에 적용될 기능들을 미리 구현해서 넣어둔다는 군요.

새로운 기능들은 기본적으로 비활성화되지만, 명시적으로 요청할 경우에는 활성화가 되면서 사용할 수 있습니다.

Python이 계속해서 변화하고 진화하는 언어라서 그런지 이런 요소도 있는 것 같습니다.

2. 이미 구현된 기능을 왜 숨겨두지?

이미 기능이 구현되어 있는데, 숨겨두고 있지만 쓰고 싶다면 쓸 수 있도록 되어 있다는게 조금 이상하게 생각되더군요.

이렇게 하는 이유는 좀 살펴보고자 합니다.

호환성

Python은 매우 다양한 환경과 Application에서 사용되고 있는 언어이기 때문에, 조그마한 변화라고 해도 즉각적으로 적용해 버릴 경우에는 기존의 수많은 Code들과 Package, Library들이 문제를 일으킬 가능성이 있습니다.

이런 경우에를 대비해서 __future__와 같은 Module을 통해서 점진적으로 Test해보고 적용하라는 의도입니다.

선행 학습

개발자들에게 앞으로 이런 기능이 추가될 예정이니 미리 한 번 사용해보고 미리 익혀두라는 의도입니다.

안정성 확보

새롭게 적용될 기능을 개발자들이 미리 조심스럽게 Test해보고 선택할 수 있는 유연성을 제공하는 목적입니다.

오늘은 Python의 __future__ Module에 대해서 알아보았습니다.

이런 깊은 뜻이 있을 줄이야.

그럼, 다음에 또 만나요~!

728x90

'Deep_Learning' 카테고리의 다른 글

TFLite File 다루기  (1) 2024.01.29
LFW(Labeled Faces in the Wild) Dataset  (0) 2024.01.17
Deep Learning Compiler 종류  (1) 2024.01.02
ONNX(Open Neural Network Exchange)  (1) 2023.12.06
Deep Learning Compiler  (1) 2023.12.02