在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__()
。)
关键字print
: print
在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?