为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

精慕HU 2019-11-04 14:43:13
包括我在内的人都知道Python __future__中有一个叫做“东西”的东西,它出现在我阅读的很多模块中。而且,即使在阅读Python的__future__文档之后,像我这样的乏味的人也不知道为什么会有它,以及如何/何时使用它。因此,有没有任何示例解释说明?就基本用法而言,我很快得到了一些答案,这些答案看起来都是正确的。但是,为了进一步了解其__future__工作原理,请执行以下操作:当我试图理解它时,我刚刚意识到一个使我感到困惑的关键事情,即当前的python版本如何包含将在将来的版本中发布的内容?以及如何在当前python版本中成功编译在未来python版本中使用新功能的程序?所以,现在我想,当前版本已经打包了一些潜在功能,这些功能将包含在将来的版本中-对吗?但是这些功能仅在之前可用__future__,这是因为它尚未成为标准功能-是吗?
查看完整描述

3 回答

?
千巷猫影

TA贡献1829条经验 获得超7个赞

通过__future__包含模块,您可以逐渐习惯于不兼容的更改或引入新关键字的更改。


例如,对于使用上下文管理器,您必须from __future__ import with_statement在2.5中进行操作,因为with关键字是new,并且不再用作变量名。为了with在Python 2.5或更早版本中用作Python关键字,您将需要使用上面的import。


另一个例子是


from __future__ import division

print 8/7  # prints 1.1428571428571428

print 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>

>>>


查看完整回答
反对 回复 2019-11-04
?
胡子哥哥

TA贡献1825条经验 获得超6个赞

当你做


from __future__ import whatever

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


以后的语句很特殊-它们更改了Python模块的解析方式,这就是为什么它们必须位于文件顶部的原因。它们为文件中的单词或符号赋予了新的(或不同的)含义。从文档:


将来的语句向编译器发出指令,指示应使用在将来指定的Python版本中可用的语法或语义来编译特定模块。将来的声明旨在简化向Python的未来版本的移植,从而对语言进行不兼容的更改。它允许在该功能成为标准版本之前,按模块使用新功能。


如果您确实要导入__future__模块,请执行


import __future__

然后照常访问它。


查看完整回答
反对 回复 2019-11-04
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

__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)


查看完整回答
反对 回复 2019-11-04
  • 3 回答
  • 0 关注
  • 787 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信