Python의 __future__
-
Python에서
print_function
에__future__
사용 -
Python에서
unicode_laterals
에__future__
사용 -
Python에서 나누기에
__future__
사용 -
Python에서
absolute_import
에__future__
사용 -
Python에서
주석
에__future__
사용 -
중첩 된 범위에
__future__
사용 -
Python 생성기에
__future__
사용 -
with
문에__future__
사용
__future__
는 Python 2.1에서 도입되었으며 해당 명령문은 Python이 코드를 해석하는 방식을 변경합니다. 인터프리터에게 향후 Python 버전에서 사용할 수있는 명령문으로 일부 명령문을 컴파일하도록 지시합니다. 즉, Python은from __future__ import feature
를 사용하여 상위 Python 버전의 기능을 현재 인터프리터로 백 포트합니다.
from __future__ import
가 표시 될 때마다 최신 또는 예정된 Python 릴리스의 기능이 이전 버전으로 백 포트되었음을 의미합니다.
이 자습서에서는__future__
를 사용하여 이전 버전의 Python에서 Python 3에서 이미 활성화 된 기능에 대해 설명합니다.
Python에서print_function
에__future__
사용
명령문 대신 print 키워드를 함수로 사용하면 많은 유연성이 제공되어print
키워드의 기능을 확장하는 데 도움이됩니다. from __future__ import print_function
의 주요 기능은 Python 3의print
함수를 Python 2로 가져 오는 것입니다.
예를 들면
from __future__ import print_function
for x in range(0, 10):
print(x, sep=" ", end="")
출력:
0123456789
여기서print
는 이전에 Python 2.x에서 명령문으로 사용되었던 함수로 사용됩니다.
Python에서unicode_laterals
에__future__
사용
이를 통해 문자열 리터럴 유형을 변경할 수 있습니다.
문자열 리터럴은 기본적으로 Python 2에서 ‘str’이지만from __future__ import unicode_literals
를 사용하면 문자열 리터럴 유형이Unicode
로 변경됩니다.
예를 들면
type("h")
출력:
<type 'str'>
그러나from __future__ import unicode_literals
를 사용하면 다음과 같은 출력을 얻을 수 있습니다.
from __future__ import unicode_literals
type("h")
출력:
<type 'unicode'>
from __future__ import
를 사용하면u
를u
로 처리하기 위해 모든 문자열에 접두사를 붙일 필요가 없습니다.
Python에서 나누기에__future__
사용
Python 2.x 버전에서는 클래식 디비전이 사용됩니다.
print(8 / 7)
출력:
0
8을 7로 간단히 나누면 Python 2.x에서 0이 반환됩니다.
from __future__ import division
을 사용하면 Python 2 프로그램에서__truediv__()
를 사용할 수 있습니다.
예를 들면
from __future__ import division
print(8 / 7)
출력:
1.1428571428571428
Python에서absolute_import
에__future__
사용
Python 2에서는 암시 적 상대 가져 오기만 가질 수있는 반면 Python 3에서는 명시 적 가져 오기 또는 절대 가져 오기를 가질 수 있습니다. __future__ import absolute_import
를 사용하면 괄호 안에 여러 개의 import 문을 괄호로 묶을 수 있습니다.
예를 들면
from Tkinter import Tk, Frame, Button, Entry, Canvas, Text, LEFT, DISABLED, NORMAL, END
__future__ import absolute_import
기능이 없으면 여러import
문을 한 줄의 코드로 묶을 수 없습니다.
Python에서주석
에__future__
사용
주석은 함수의 다른 부분과 관련된 Python 표현식입니다.
여기에서from __future__ import annotations
를 사용하면 Python 모듈에서 주석 유형을 평가하는 방법이 변경됩니다. 주석 평가를 연기하고 모든 주석을 다른 주석으로 마술처럼 취급합니다.
예를 들면
from __future__ import annotations
class C:
@classmethod
def make(cls) -> C:
return cls
위 코드는 코드 상단에__future__ import
가 작성된 경우에만 작동합니다. Python이 코드를 해석하는 방식을 변경하기 때문입니다. 즉, 주석을 개별 문자열로 취급합니다.
중첩 된 범위에__future__
사용
__future__ import nested_scopes
가 추가되면서 정적으로 중첩 된 범위가 Python에 도입되었습니다. 오류를 반환하지 않고 다음 유형의 코드를 실행할 수 있습니다.
def h():
...
def m(value):
...
return m(value - 1) + 1
...
위의 코드는 Python 2.1 이전에 NameError를 발생 시켰을 것입니다.
Python 생성기에__future__
사용
생성기는 일반 함수로 정의 된 Python의 함수입니다. 그래도 특정 값을 생성해야 할 때마다 return 대신 “yield"키워드를 사용합니다.
여기에서from __future__ import generators
를 사용하여 연속적인 함수 호출 사이의 상태를 저장하기 위해 생성기 함수가 도입되었습니다.
예를 들면
def gen():
c, d = 0, 1
while 1:
yield d
c, d = d, c + d
with
문에__future__
사용
이렇게하면 Python에서with
문을 키워드로 추가하여try...except
문을 사용하지 않아도됩니다. 아래 예제와 같이 주로 파일 I / O를 수행 할 때 사용됩니다.
with open("workfile", "h") as a:
read_data = a.read()