2009-12-16 75 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中调用它(这是一个无操作)。