2009-12-16 50 views
4

我想在Python 2.5的某些產品代碼中使用with語句。它被支持,我是否應該預料到任何問題(例如,在其他機器上的可用性/兼容性等)?with statement - Python for Python 2.5

這段代碼

from __future__ import with_statement 

與Python 2.6兼容?

回答

3

with_statement未被移植,但在Python 2.5中實現。添加新的關鍵字或語法會破壞現有的應用程序使用Python,他們決定處理這個問題的方式允許人們儘早選擇這些功能,以便您可以慢慢地轉換代碼。

http://python.org/doc/2.5.2/ref/future.html

未來的語句是一個指令 一個特定的模塊 應使用語法和語義 將在Python的 指定的未來版本中提供彙編編譯器。 未來聲明旨在將 輕鬆遷移到未來版本的 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) 
>>> 
我個人一直大量使用with_statement在Python 2.5以及

一年多,並沒有問題。我也用Python 2.6透明地運行這些代碼。他們在清理語言時存在一些奇怪的角落案例,主要涉及乾淨而正確地壓縮嵌套語句。

+1

檢查關於未來陳述的一些元信息的好處。 – gorsky 2009-12-16 16:49:15

7

是的,該語句在Python 2.6中是無操作的,因此您可以自由使用它在您的2.5代碼中使用with作爲關鍵字,而不會影響您在2.6中的代碼操作。這實際上是Python中「從未來進口」的一般設計意圖!

4

你可以在沒有任何問題的情況下在Python 2.6和3.0/1中調用它(這是一個無操作)。