我在想,究竟是哪段代码在执行以下命令:
>>> from __future__ import braces
SyntaxError: not a chance
由于Python是开源的,我打开了C:\Python27\Lib\__future__.py
并查看了一下。
令人惊讶的是,我发现那里没有处理导入braces
模块的代码。
所以,我的问题是,处理这个的代码在哪里?当我运行该命令时会发生什么?
我在想,究竟是哪段代码在执行以下命令:
>>> from __future__ import braces
SyntaxError: not a chance
由于Python是开源的,我打开了C:\Python27\Lib\__future__.py
并查看了一下。
令人惊讶的是,我发现那里没有处理导入braces
模块的代码。
所以,我的问题是,处理这个的代码在哪里?当我运行该命令时会发生什么?
from __future__ import foo
不是一个导入语句,而是一个未来语句。CPython编译器通过首先从future.c
调用适当的代码,然后再将其视为一个import
语句来处理它。其他编译器也会做类似的事情。 - abarnertfrom __future__ import braces
(或包括braces
的逗号分隔列表)时会特别处理,在执行正常的future
语句代码之前,在codegen.PythonCodeGenerator.visit_ImportFrom
中。 - abarnert