others - Python里,什么是__future__,如何使用它

用例子说明它?

时间:

使用它,你可以慢慢地习惯那些不兼容的更改,或引入新关键字的。

比如,为了使用上下文管理器,你必须from __future__ import with_statement因为关键字是新的,不应该再使用变量名称,

另一个例子是


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

如果没有__future__内容,print语句将打印1

内部差异是,没有导入,/映射到__div__()方法,而使用了__truediv__() ,(在情况下,//都调用__floordiv__() 。),

所以这是另一种方法。


>>> print

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

当你做


from __future__ import whatever

你实际上没有使用 import 语句,而是 future语句 。 你正在读取错误的文档,因为你实际上没有导入该模块。

将来的语句是特殊的--它们改变了你的python 模块的解析方式,这就是为什么必须在文件的顶部 它们给你的文件中的单词或者符号赋予新的--或者不同的--含义。 从文档:

将来的语句是对编译的指令,它使用语法或者语义编译特定模块,这些语法或者语义将在指定的将来版本中可用。 将来的语句旨在简化迁移到将来版本的python,该版本引入对语言的不兼容更改。 它允许在发布功能成为标准之前在per-module基础上使用新特性。

如果你真的想要导入 __future__ 模块,只需

 
import __future__

 

然后像往常一样访问它。

在旧版本Python中使用在新版本中出现的功能。

例如


>>> from __future__ import print_function

将允许你将print用作函数:


>>> print('# of entries', len(dictionary), file=sys.stderr)

还是喜欢说"因为这是 python v2.7,使用不同的'打印功能,还添加了 python v2.7,后加入 python 3 。 所以我的'打印'不再是语句( 如打印"消息"),而是函数( 例如打印("消息",选项) 。 当我的代码在 python 3中运行时,'打印'不会中断。"


from __future__ import print_statement

print_statement是包含'打印'的新实现的模块,根据它在 python v3中的行为。

这有更多的解释:http://python3porting.com/noconv.html

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

...