Python源码之初始化(五)-initmain()
来源:互联网 发布:物理地址和mac地址 编辑:程序博客网 时间:2024/05/16 02:12
初始化执行到initmain()的时候
PyImport_GetModuleDict() 返回的是interp->modules, 是一个dict
包含了 sys, _codecs, builtins, zipimport等
接着PyModule_New("__main__"), 创建一个__main__ module,
并在__main__ module的dict里面加入 __name__, __doc__, __package__ 三个key,这和所有module的创建一样
然后把这个__main__ 模块加入到interp->modules
在退出initmain()之前,系统把 __builtins__模块加入__main__模块的dict
static voidinitmain(void){ PyObject *m, *d; m = PyImport_AddModule("__main__"); if (m == NULL) Py_FatalError("can't create __main__ module"); d = PyModule_GetDict(m); if (PyDict_GetItemString(d, "__builtins__") == NULL) { PyObject *bimod = PyImport_ImportModule("builtins"); if (bimod == NULL || PyDict_SetItemString(d, "__builtins__", bimod) != 0) Py_FatalError("can't add __builtins__ to __main__"); Py_DECREF(bimod); }}
- Python源码之初始化(五)-initmain()
- Python源码学习之初始化(二)
- Python源码学习之初始化(三)-PyDictObject的初始化
- Nouveau源码分析(五):NVIDIA设备初始化之nouveau_drm_load (2)
- Nouveau源码分析(五):NVIDIA设备初始化之nouveau_drm_load (2)
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- spring源码学习之路---IOC容器初始化要义之bean定义载入(五)
- GDAL源码剖析(五)之Python命令行程序
- GDAL源码剖析(五)之Python命令行程序
- Spring 源码阅读五 IOC容器初始化之bean定义载入
- 《python源码剖析》笔记 python环境初始化
- velocity源码分析:初始化之指令初始化
- Spring源码解析之初始化
- MEMCACHED源码之main初始化
- Realm源码分析之初始化
- Python之旅 五
- 五.Python之切片
- Python源码入门学习心得-初始化(一)
- 20131001安博培训第二十三天
- windows创建.htaccess文件的种方法
- python字典 switch语句
- oracle各版本 官网下载网址
- Hibernate继承映射
- Python源码之初始化(五)-initmain()
- 最新简单标签JSP页面控制详解
- offer比较
- 简单的选股指标公式
- Github快速入门手册
- 各种查找、排序的时间复杂度
- 木块砌墙
- 如何设置/配置 SunPinYin
- 螺旋数组