【发布时间】:2020-06-21 17:55:22
【问题描述】:
我已经回答了有关 future 模块如何工作的问题。
What is __future__ in Python used for and how/when to use it, and how it works
和
How __future__ imports work under the hood .
但我仍然不明白的是,今天创建的解释器如何知道作为未来版本一部分的代码的语法。
我的想法是,当他们为 2.7 版本创建 Python 解释器时,他们构建代码并创建可执行文件,而不是触摸或修改它,用户将下载并使用它。假设 python 2.7 可执行文件是在 2009 年创建的。
而python 3.7可执行文件是在2017创建的,python 2.7在导入print_function的时候怎么知道要编译什么代码呢? python 2.7 解释器如何知道 print_function 的代码是什么,将在解释器创建后引入。
我的看法是正确的还是完全错误的?
有人可以解开这个谜吗。
【问题讨论】:
-
__future__模块包含“向后移植”到 python2 的方法,解释器不需要知道任何未来的发展。 -
Python 解析器可以使用运行时操作进行配置。
-
您链接的两个问题提到了这是如何完成的,例如告诉 Python 解释器 Python
print不是特殊关键字。这允许它被定义为模块中的一个函数。 -
没有什么比说“我这周五午餐要吃鸡肉三明治”更“神秘”了。对更高版本语言的计划进行了布局、实施,有时还作为“选择加入”未来声明在当前版本中提供(以简化版本之间的转换)。
标签: python python-3.x python-2.7 interpreter