在Python中用于和如何/何时使用它,以及它是如何工作的

包括我在内的人知道Python中有一些名为__future__东西,它出现在我阅读的很多模块中。 像我这样沉闷的人不知道为什么它在那里,以及如何/何时使用它,即使在阅读了Python的__future__ doc之后。

那么有没有用示例解释来证明它呢?

我很快就得到了一些答案,就基本用法而言,这看起来都是正确的。

但是,也为了进一步了解__future__如何工作:

当我试图理解它的时候,我刚刚意识到一件令人困惑的事情,那就是,当前的Python版本如何包含将在未来版本中发布的内容? 以及在当前的python版本中如何使用未来python版本中的新功能编译成功?

所以,现在我想,目前的版本已经打​​包了一些潜在的功能,这些功能将包含在未来的版本中 - 这是正确的吗? 但是这些功能只能由__future__ ,这是因为它还没有成为标准 - 我是对的吗?


通过添加__future__模块,您可以慢慢适应不兼容的变化或者引入新关键字的变化。

例如,对于使用上下文管理器,您必须from __future__ import with_statement 2.5中的from __future__ import with_statement执行操作,因为with关键字是新的,不应再作为变量名称使用。 为了能够使用使用名为with变量的程序,需要上述导入语句。

另一个例子是

from __future__ import division
print 8/7  # prints 1.1428571428571428
print 8//7 # prints 1

没有__future__东西,这两个print语句将打印1

内部的区别在于没有那个导入, /被映射到__div__()方法,而使用__truediv__()被使用。 (无论如何, //调用__floordiv__() 。)

关键字printprint在3.x中成为函数,失去了作为关键字的特殊属性。 所以这是相反的。

>>> print

>>> from __future__ import print_function
>>> print
<built-in function print>
>>>

当你这样做

from __future__ import whatever

您实际上并未使用import声明,而是未来声明。 您正在阅读错误的文档,因为您实际上并未导入该模块。

未来的语句是特殊的 - 它们改变了你的Python模块的解析方式,这就是为什么它们必须位于文件的顶部。 它们赋予新的或不同的含义 - 意思是文件中的文字或符号。 从文档:

未来的声明是编译器的一个指示,即应该使用将在未来特定版本的Python中提供的语法或语义来编译特定模块。 未来的声明旨在简化向未来版本的Python的迁移,从而引入对语言不兼容的更改。 它允许在功能成为标准的版本之前,在每个模块的基础上使用新功能。

如果你真的想要导入__future__模块,就这样做

import __future__

然后像往常一样访问它。


__future__ 是一个伪模块,程序员可以使用它来启用与当前解释器不兼容的新语言功能 。 例如,表达式11/4当前评估为2 。 如果执行它的模块已启用真分区,

from __future__ import division

表达式11/4将评估为2.75 。 通过导入__future__模块并评估其变量,您可以看到何时首次将新功能添加到该语言以及何时将成为默认值:

  >>> import __future__
  >>> __future__.division
  _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
链接地址: http://www.djcxy.com/p/80677.html

上一篇: in Python used for and how/when to use it, and how it works

下一篇: What is the maximum recursion depth in Python, and how to increase it?