質問

私はいくつかの製品コードではPython 2.5でwithステートメントを使用したいと思います。これは、バックポート、私は何の問題(例えば、他のマシンの/ etc上の利用可能性/互換性)を期待すべきでしたか?

このコードは

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 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を使用しているとの問題を持っていませんでした。私はまた、透過的にはPython 2.6でそのコードを実行します。彼らは主にきれいにし、正しく文を使用して、ネストされた圧縮に関連し、言語にクリーンアップで働いてきたいくつかの奇妙なコーナーケースがあります。

他のヒント

はい、その文は、Python 2.6で何も操作されていないので、あなたは自由に2.6でコードの動作に影響を与えることなく、同様にあなたの2.5のコードでwithキーワードを作るためにそれを使用することができます。これは、実際にはPythonで「未来からのインポート」の一般的な設計意図です!

あなたは(それがそこには-OPません)問題なくPythonの2.6および3.0 / 1でこれを呼び出すことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top