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

标签 python python-2.x

__future__ 经常出现在 Python 模块中。即使在阅读 the Python's __future__ doc 之后,我也不明白 __future__ 的用途以及如何/何时使用它.

谁能举例说明?

我收到的一些关于 __future__ 基本用法的答案似乎是正确的。

但是,关于 __future__ 的工作原理,我还需要了解一件事:

对我来说最令人困惑的概念是当前的 python 版本如何包含 future 版本的功能,以及使用 future 版本的功能的程序如何在当前版本的 Python 中成功编译。

我猜测当前版本包含了 future 的潜在功能。但是,这些功能只能通过使用 __future__ 获得,因为它们不是当前标准。让我知道我是否正确。

最佳答案

随着 __future__ 模块的加入,您可以慢慢习惯不兼容的更改或引入新关键字的更改。

例如,为了使用上下文管理器,您必须在 2.5 中执行 from __future__ import with_statement,因为 with 关键字是新的,不应用作变量名不再。为了在 Python 2.5 或更早版本中使用 with 作为 Python 关键字,您需要使用上述导入。

另一个例子是

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

没有 __future__ 的东西,两个 print 语句都会打印 1

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

恰本地 print:print 在 3.x 中变成了一个函数,失去了它作为关键字的特殊属性。所以情况正好相反。

>>> print

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

关于python - Python 中的 __future__ 用于什么以及如何/何时使用它,以及它是如何工作的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7075082/

相关文章:

python - write() 与 writelines() 和连接字符串

python - 如何在Python 2中实现中缀运算符矩阵乘法?

python - 如何测试 LT 代码的实现?

python - 如何使用 pyspark 为非 pairwiseRDDs 正确 groupByKey

Pythonnet异常: "The ' ExeConfigFilename' argument cannot be null"

python - 在 Python 类中将函数作为属性访问

python-如何反转负整数或非整数

python - Python 中非本地语句的语法错误

python - Python 3 中的 Unicode 正则表达式(来自 Python 2 代码)

python - 如何在读取文件时删除 "\n"字符,但删除一个变量然后替换它