Python中的__future__是什么,以及如何/何时使用它以及如何工作

包括我在内的人都知道Python __future__中有一个叫做“东西”的东西,它出现在我阅读的很多模块中。而且,即使在阅读Python的__future__文档之后,像我这样的乏味的人也不知道为什么会有它,以及如何/何时使用它。


因此,有没有任何示例解释说明?


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


但是,为了进一步了解其__future__工作原理,请执行以下操作:


当我试图理解它时,我刚刚意识到一个使我感到困惑的关键事情,即当前的python版本如何包含将在将来的版本中发布的内容?以及如何在当前python版本中成功编译在未来python版本中使用新功能的程序?


所以,现在我想,当前版本已经打包了一些潜在功能,这些功能将包含在将来的版本中-对吗?但是这些功能仅在之前可用__future__,这是因为它尚未成为标准功能-是吗?


精慕HU
浏览 788回答 3
3回答

千巷猫影

通过__future__包含模块,您可以逐渐习惯于不兼容的更改或引入新关键字的更改。例如,对于使用上下文管理器,您必须from __future__ import with_statement在2.5中进行操作,因为with关键字是new,并且不再用作变量名。为了with在Python 2.5或更早版本中用作Python关键字,您将需要使用上面的import。另一个例子是from __future__ import divisionprint 8/7&nbsp; # prints 1.1428571428571428print 8//7 # prints 1没有这些__future__东西,两个print语句都将打印出来1。内部差异在于没有导入时,/映射到__div__()方法,而使用导入__truediv__()。(无论如何,请//致电__floordiv__()。)Apropos 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__模块并评估其变量,您可以看到何时将新功能首次添加到语言中以及何时将其成为默认功能:&nbsp; >>> import __future__&nbsp; >>> __future__.division&nbsp; _Feature((2, 2, 0, 'alpha', 2), (3, 0, 0, 'alpha', 0), 8192)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python