
Python 机制研究
文章平均质量分 72
wuChen4646
专注云计算领域
展开
-
Python程序执行原理+
1. 过程概述Python先把代码(.py文件)编译成字节码,交给字节码虚拟机,然后虚拟机一条一条执行字节码指令,从而完成程序的执行。2. 字节码字节码在Python虚拟机程序里对应的是PyCodeObject对象。.pyc文件是字节码在磁盘上的表现形式。3. pyc文件PyCodeObject对象的创建时机是模块加载的时候,即import。Python test.py转载 2015-03-30 21:28:15 · 579 阅读 · 0 评论 -
查看python字节码
1.查看python所有的字节码列表的方法 :执行这段代码就能看到字节码的列表: import opcode for op in range(len(opcode.opname)): print('0x%.2X(%.3d): %s' % (op, op, opcode.opname[op])) 既然叫“字节码”,这些操作码自然是以字节原创 2015-03-31 09:32:44 · 5659 阅读 · 0 评论 -
Python中模块的动态加载机制
Python引入了全局的module集合-sys.modules,这个集合作为module pool,保存了module的唯一映像 sys.modules 是一个字典,它包含了从Python 开始运行起,被导入的所有模块。键字就是模块名,键值就是模块对象。请注意除了你的程序导入的模块外还有其它模块。Python 在启动时先装入了一些模块,如果你在一个Python IDE原创 2015-04-20 21:35:10 · 3046 阅读 · 0 评论 -
Python虚拟机的函数机制
本文参考Pytho源码剖析第11章: python中函数就是一个对象,函数这种抽象机制是通过PyFunctionObject这个对象来实现的。 对比PyCodeObject与PyFunctionObject:前者是对一段Python源代码的静态表示,它包含了一个Code Block的静态信息,而后者是python执行def语句时动态创建的,在PyFunctionOb原创 2015-04-22 20:59:19 · 1029 阅读 · 0 评论 -
Python Import机制备忘-模块搜索路径(sys.path)、嵌套Import、package Import
最近在看《Python源码剖析》,对Python内部运行机制比以前了解的更深入了,感觉自己有机会也可以做个小型的动态脚本语言了,呵呵,当然是吹牛了。目的当然不是创造一个动态语言,目的只有一个:更好的使用Python。看到模块导入那块的时候,终于对模块导入机制比较了解了,以防忘记特记录下来。模块的搜索路径模块的搜索路径都放在了sys.path列表中,如果缺省的sys.path中没有含有自转载 2016-05-25 16:02:14 · 483 阅读 · 0 评论 -
探索 Python 代码对象
由于受到 David Beazley 在 PyCon 上的 Keynote 的启发,近来我四处学习与 Python 代码对象 (code object) 相关的内容。我并没有什么特别的利器,也没有专门的任务去解决 (至今为止?),所以请将这篇文章看做一些也许有趣的记录和随笔 (如果没意思的话,抱歉)。免责声明: 这篇文章是关于 CPython 2.7 的,虽然其中的大部分对于其他的转载 2016-05-26 09:01:29 · 1622 阅读 · 0 评论 -
Python 导入机制 - import hook
Python import hook可以翻译为Python 探针。 它的实现原理涉及了以下几个知识点: 1. Python导入协议 2. sys.meta_path一,Python导入协议 Python 中所有加载到内存的模块都放在 sys.modules。当import 一个模 块时首先会在这个列表中查找是否已经加载了此模块,如果加载了则 只是将模 块的名字加入到正在调用 im原创 2016-07-26 18:31:34 · 11640 阅读 · 1 评论 -
Python导入机制-查找模块
查找module的过程在import的第一个阶段,主要是完成了查找要引入模块的功能,这个查找的过程如下:检查 sys.modules (保存了之前import的类库的缓存),如果module被找到,则⾛到第二步。检查 sys.meta_path。meta_path 是一个 list,⾥面保存着一些 finder 对象,如果找到该module的话,就会返回一个finder对象。检查⼀些隐式的fin原创 2016-07-06 10:40:20 · 5994 阅读 · 0 评论