python中只有一个“未来”的宇宙吗?

正如另一篇文章(https://stackoverflow.com/a/7075121/2706606)所解释的那样,在python中你可以从未来导入东西。python中只有一个“未来”的宇宙吗?

例如2/4评估为0(因为它是一个整数除法)。

>>>print 2/4 

0

但是如果你从未来导入“师”,其值为0.5

>>> from __future__ import division 

>>> print 2/4

0.5

我从链接后不解的是,解析器不同的解析代码,当您使用未来的进口。

而我的问题是,是否只有一个单一的,独特的“未来”环境,所有这些未来的进口是从哪里取得的?

我们如何保证将来的导入将与未来版本的python编译器向前兼容?

是否有可能在“更遥远的将来”2/4会评估其他价值?

回答:

如果您查看导入__future__,有一个名为all_feature_names的列表,您可以使用它查看Python解释器可用的功能。

import __future__ 

print(__future__.all_feature_names)

在我的机器上,哪一个会在Python 2.7.12上返回以下内容。

['nested_scopes', 'generators', 'division', 'absolute_import', 

'with_statement', 'print_function', 'unicode_literals']

并与Python 3.5.2。

['nested_scopes', 'generators', 'division', 'absolute_import', 

'with_statement', 'print_function', 'unicode_literals',

'barry_as_FLUFL', 'generator_stop']

然而有不能保证你正在运行将具有相同的功能可用,进口可能无法在一些实现甚至还存在,但假设功能是可用的Python解释器的实现应该保持不变,只要它是根据PEP(例如PEP-0238)实现的,大多数Python解释器都应该这样做。

回答:

来自未来的特征不会改变意义。这是保证from __future__ import x有以下三种行为:

  1. 在一个版本的Python定义未来的行为之前,抛出一个异常指示代码不兼容
  2. 在一个Python版本的行为变得之前在默认情况下,它使行为
  3. 在一个Python版本的行为变得之后,默认情况下,进口是公认的,但忽略

他们不会重用一个名字的意思是别的东西以后(因为会vi提出了#3的“认可但忽视”规则)。如果他们决定再次更改division,则需要使用新名称,例如为了使其截至零分而不是分区划分,他们可能会导入一个名为truncating_division的导入__future__。但他们不会删除division,永远,只要Python的存在,他们也将改变含义,:

无特征描述将永远不会从__future__删除。

以上是 python中只有一个“未来”的宇宙吗? 的全部内容, 来源链接: utcz.com/qa/261102.html

回到顶部