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
有以下三种行为:
- 在一个版本的Python定义未来的行为之前,抛出一个异常指示代码不兼容
- 在一个Python版本的行为变得之前在默认情况下,它使行为
- 在一个Python版本的行为变得之后,默认情况下,进口是公认的,但忽略
他们不会重用一个名字的意思是别的东西以后(因为会vi提出了#3的“认可但忽视”规则)。如果他们决定再次更改division
,则需要使用新名称,例如为了使其截至零分而不是分区划分,他们可能会导入一个名为truncating_division
的导入__future__
。但他们不会删除division
,永远,只要Python的存在,他们也将改变含义,:
无特征描述将永远不会从
__future__
删除。
以上是 python中只有一个“未来”的宇宙吗? 的全部内容, 来源链接: utcz.com/qa/261102.html