질문
__future__
는 Python 모듈에서 자주 나타납니다. Python의 __future__
문서를 읽은 후에도 __future__
가 무엇인지, 어떤 경우에 사용해야 하는지 이해하지 못했습니다.
어떤 예제와 함께 설명해주시겠어요?
기본적인 __future__
사용법에 대한 몇 가지 답변은 맞는 것 같습니다.
하지만, __future__
가 어떻게 작동하는지에 대해 더 이해해야 할 것 같습니다:
제일 혼란스러운 개념은 현재 파이썬 릴리스가 미래 릴리스를 위한 기능을 포함하고 있다는 것과, 미래 릴리스에서 가져온 기능을 사용하는 프로그램이 현재 버전의 파이썬에서 성공적으로 컴파일될 수 있다는 것입니다.
저는 현재 릴리스가 미래를 위한 가능성 있는 기능을 포함하고 있다고 추측합니다. 그러나, 이러한 기능은 현재 표준이 아니므로 __future__
를 사용해야만 사용할 수 있다는 것입니다. 제가 맞는지 알려주세요.
답변
__future__
모듈을 포함시키면 호환되지 않는 변경 사항이나 새로운 키워드를 도입하는 변경 사항에 서서히 익숙해질 수 있습니다.
예를 들어, 컨텍스트 관리자를 사용하려면 2.5에서 with
키워드가 새로 도입되었으므로 더 이상 변수 이름으로 사용할 수 없으므로 from __future__ import with_statement
을 수행해야 했습니다. Python 2.5 이하에서 with
를 Python 키워드로 사용하려면 위에서 가져와야합니다.
또 다른 예는 다음과 같습니다.
from __future__ import division
print 8/7 # prints 1.1428571428571428
print 8//7 # prints 1
__future__
없이는 두 개의 print
문 모두 1
을 출력합니다.
내부적인 차이는 그 가져옴이 없으면 /
가 __div__()
메소드로 매핑되고 가져옴이 있으면 __truediv__()
가 사용된다는 것입니다. (어떤 경우에도 //
는 __floordiv__()
를 호출합니다.)
print
와 관련하여: 3.x에서 print
는 키워드로서의 특별한 속성을 잃어버리고 함수가됩니다. 그래서 그 반대입니다.
>>> print
>>> from __future__ import print_function
>>> print
<built-in function print>
>>>
댓글