2009-12-16 7 views
4

with 문을 Python 2.5에서 일부 프로덕션 코드로 사용하고 싶습니다. 어떤 문제 (예 : 다른 컴퓨터/기타의 가용성/호환성)를 예상해야합니까? with 문 - 파이썬 2.5 백 포트

파이썬 2.6와 호환이 코드

from __future__ import with_statement 

인가?

답변

3

with_statement는 포팅되지 않았지만 Python 2.5에서 구현되었습니다. 새 키워드 또는 구문을 추가하면 기존 응용 프로그램이 손상 될 수 있습니다. 파이썬을 사용하여 이것을 처리하기로 결정한 방식으로 사람들이 이러한 기능을 일찍 옵트 인 (opt-in)하여 코드를 천천히 전환 할 수 있습니다. http://python.org/doc/2.5.2/ref/future.html

미래의 문에서

는 특정 모듈 은 구문이나 파이썬의 지정된 릴리스에서 사용할 수 의미를 사용하여 컴파일해야 컴파일러에 지시합니다. 향후 진술은 호환되지 않는 언어를 변경하는 Python에 대한 향후 버전으로의 마이그레이션을 용이하게하기위한 것입니다. 기능이 표준이되기 전에 모듈 당 단위로 새로운 기능 중 을 사용할 수 있습니다.

당신은 실제로 가져 오기가 더 이상 필요하지 않을 때 첫째, 지원시기에 대한 정보를 얻기 위해 미래를 검사 할 수 있습니다

Python 2.5.1 (r251:54863, Apr 18 2007, 08:51:08) [MSC v.1310 32 bit (Intel)] on win32 
Type "help", "copyright", "credits" or "license" for more information. 
>>> import __future__ 
>>> dir(__future__) 
['CO_FUTURE_ABSOLUTE_IMPORT', 'CO_FUTURE_DIVISION', 'CO_FUTURE_WITH_STATEMENT', 'CO_GENERATOR_ALLOWED', 'CO_NESTED', '_Feature', '__all__', '__builtins__', 
__doc__', '__file__', '__name__', 'absolute_import', 'all_feature_names', 'division', 'generators', 'nested_scopes', 'with_statement'] 
>>> __future__.with_statement 
_Feature((2, 5, 0, 'alpha', 1), (2, 6, 0, 'alpha', 0), 32768) 
>>> 
제가 개인적으로 많이 잘 파이썬 2.5에서는 with_statement을 사용하고있다

1 년 넘게 문제가 없었습니다. 또한 Python 2.6을 사용하여이 코드를 투명하게 실행합니다. 언어를 정리할 때 사용한 몇 가지 이상한 구석이 있습니다. 대부분 문장을 포함하여 깔끔하게 올바르게 압축되었습니다.

+1

향후 진술에 대한 일부 메타 정보를 검사하는 좋은 점. – gorsky

7

그렇습니다.이 문은 Python 2.6에서 작동하지 않으므로 자유롭게 사용할 수 있습니다. 따라서은 2.5에서 코드의 작동에 영향을주지 않고 자유롭게 사용할 수 있습니다. 이것은 사실 파이썬에서 "미래로부터 가져 오기"의 일반적인 디자인 의도입니다!

4

파이썬 2.6과 3.0/1에서는 문제없이 이것을 호출 할 수 있습니다 (거기에는 아무런 문제가 없습니다).