문제

사용하고 싶습니다 with 일부 생산 코드에서 Python 2.5의 진술. 백 포트가 있었는데, 어떤 문제도 예상해야합니까 (예 : 다른 기계 등에 대한 가용성/호환성이있는)?

이 코드입니다

from __future__ import with_statement

Python 2.6과 호환됩니까?

도움이 되었습니까?

해결책

with_statement는 다시 포팅되지 않았지만 Python 2.5에서 구현되었습니다. 새 키워드 또는 구문을 추가하면 기존 응용 프로그램이 중단 될 수 있습니다. Python을 사용하면 이것을 처리하기로 결정한 방식은 사람들이 해당 기능을 조기에 선택할 수 있도록하여 코드를 천천히 전환 할 수 있습니다.

에서 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)
>>>

나는 개인적으로 Python 2.5의 with_statement를 1 년 넘게 많이 사용해 왔으며 문제가 없었습니다. 또한 Python 2.6으로 그 코드를 투명하게 실행합니다. 그들이 언어로 청소하는 데 일한 이상한 코너 케이스가 있으며, 대부분 진술이 중첩 된 깨끗하고 정확하게 압축하는 것과 관련이 있습니다.

다른 팁

예, 그 진술은 Python 2.6의 수확 없음이므로 자유롭게 사용할 수 있습니다. with 2.6의 코드 작업에 영향을 미치지 않고 2.5 코드의 키워드. 이것은 실제로 Python에서 "미래에서 수입"이라는 일반적인 설계 의도입니다!

이것을 문제없이 Python 2.6 및 3.0/1에서 호출 할 수 있습니다 (No-Op입니다).

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top