Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/321.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否只有一个“单一的”;“未来”;python中的宇宙?_Python - Fatal编程技术网

是否只有一个“单一的”;“未来”;python中的宇宙?

是否只有一个“单一的”;“未来”;python中的宇宙?,python,Python,正如在另一篇post()中所解释的,在python中,您可以从将来导入内容 例如,2/4的计算结果为0(因为它是整数除法) 但如果从将来导入“division”,则其计算结果为0.5 >>> from __future__ import division >>> print 2/4 0.5 我从链接文章中了解到,当您使用将来的导入时,解析器解析代码的方式不同 我的问题是,是否只有一个独特的“未来”环境,所有这些未来的导入都是从这个环境中获取的 我们如何保证将

正如在另一篇post()中所解释的,在python中,您可以从将来导入内容

例如,2/4的计算结果为0(因为它是整数除法)

但如果从将来导入“division”,则其计算结果为0.5

>>> from __future__ import division
>>> print 2/4
0.5
我从链接文章中了解到,当您使用将来的导入时,解析器解析代码的方式不同

我的问题是,是否只有一个独特的“未来”环境,所有这些未来的导入都是从这个环境中获取的

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


是否有可能在“更遥远的未来”中,2/4将评估为其他值?

如果您查看导入
\uuuuuuuuuuuuuuuuuu
有一个名为
所有特性名称的列表,您可以使用该列表查看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解释器将具有相同的可用功能,导入甚至可能不存在于某些实现中,但假设该功能可用,则实现应保持不变,只要它是根据(例如)实现的,这对于大多数Python解释器来说都是如此。

未来的特性不会改变其含义。保证来自未来导入x的
具有以下三种行为之一:

  • 在定义未来行为之前的Python版本上,会引发异常,指示代码不兼容
  • 在Python版本上,在行为成为默认行为之前,它会启用该行为
  • 在Python版本上,当行为成为默认行为后,导入被识别,但被忽略
  • 他们以后不会重复使用名称来表示其他内容(因为这将违反#3的“已识别但已忽略”规则)。如果他们决定再次更改,比如说,
    division
    ,他们需要使用一个新名称,例如,为了使其向零除法而不是地板除法截断,他们可能会进行名为
    截断除法的导入。但只要Python存在,它们就不会删除除法,也不会改变其含义:

    不会从
    \uuuu future\uuuu
    中删除任何功能描述


    \uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。将来没有人会需要这个。是的。未来的环境称为Python 3。@furas:绝对不是。它在Py3中用于新事物,甚至现在也用于
    生成器_stop
    ()。但一旦未来到来,进口国就什么都不干了;它们被识别,但被忽略(因为默认语法已经包含它们)。如果您导入的Python版本中还不存在的东西(例如,在2.4中导入带有_语句的
    ),您会得到一个异常,让您知道该代码与旧版本的Python不兼容。请注意,
    from uuu future uu导入barry FLUFL
    \uu future uu
    导入。:-)@ShadowRanger从未来导入大括号怎么样
    ['nested_scopes', 'generators', 'division', 'absolute_import', 
     'with_statement', 'print_function', 'unicode_literals', 
     'barry_as_FLUFL', 'generator_stop']