![](/img/trans.png)
[英]Simple HTTP response: why does this work with Python2 but not with Python3
[英]Python3: Why does __spec__ work?
变量__spec__
来自哪里?
$ brew install python3
$ python3
Python 3.4.2 (default, Jan 5 2015, 11:57:21)
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.56)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
# Under Python 2.7.x this gives a NameError
>>> None is __spec__
True
从Python语言参考,第5部分:导入系统 (强调我的):
__spec__
属性必须设置为导入模块时使用的模块规范。 这主要用于内省和重新加载。 适当地设置__spec__
同样适用于在解释器启动期间初始化的模块 。 一个例外是__main__
,其中__spec__
在某些情况下设置为None 。版本3.4中的新功能。
根据Python 3 文档 ,如果您使用交互式promt,则__spec__
始终为None
:
当使用-m选项启动Python时,
__spec__
将设置为相应模块或包的模块规范。 当__main__
模块作为执行目录,zipfile或其他sys.path条目的一部分加载时,也会填充__spec__
。在其余情况下,
__main__.__spec__
设置为None ,因为用于填充__main__
的代码与可导入模块不直接对应:
- 互动提示
- -c开关
- 从stdin运行
- 直接从源或字节码文件运行
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.