Python의 __future__

Hemank Mehtani 2023년10월10일
  1. Python에서print_function__future__사용
  2. Python에서unicode_laterals__future__사용
  3. Python에서 나누기에__future__사용
  4. Python에서absolute_import__future__사용
  5. Python에서주석__future__사용
  6. 중첩 된 범위에__future__사용
  7. Python 생성기에__future__사용
  8. with문에__future__사용
Python의 __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를 사용하면uu로 처리하기 위해 모든 문자열에 접두사를 붙일 필요가 없습니다.

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()