齐齐哈尔建设局网站首页,惠州网站建设点,青岛搭建公司,小程序和公众号的区别和优势http://www.cnblogs.com/nepaul/archive/2012/07/15/2592179.html 为什么Python程序在函数内执行得更快#xff1f;#xff08;来源StackOverflow#xff09; 考虑下面的代码#xff0c;一个在函数体内#xff0c;一个是全局的代码。 函数内的代码执行效率为 1.8s 1234def…http://www.cnblogs.com/nepaul/archive/2012/07/15/2592179.html 为什么Python程序在函数内执行得更快来源StackOverflow 考虑下面的代码一个在函数体内一个是全局的代码。 函数内的代码执行效率为 1.8s 1 2 3 4 def main(): for i in xrange(10**8): pass main() 函数体外的代码执行效率为 4.5s 1 2 for i in xrange(10**8): pass 不用太纠结时间只是一个示例我们可以看到效率查得很多。为什么会这样呢我们使用 dis module 反汇编函数体内的bytecode 代码使用 compile builtin 反汇编全局bytecode我们可以看到下面的反汇编注意我高亮的地方 Main函数反汇编 1 2 3 13 FOR_ITER 6 (to 22) 16 STORE_FAST 1 (i) 19 JUMP_ABSOLUTE 13 全局代码 1 2 3 13 FOR_ITER 6 (to 22) 16 STORE_NAME 1 (i) 19 JUMP_ABSOLUTE 13 我们可以看到差别就是 STORE_FAST 和 STORE_NAME前者比后者快很多。所以在全局代码中变量i成了一个全局变量而函数中的i是放在本地变量表中所以在全局变量表中查找变量就慢很多。如果你在main函数中声明global i 那么效率也就下来了。原因是本地变量是存在一个数组中直到用一个整型常量去访问而全局变量存在一个dictionary中查询很慢。 注在C/C中这个不是一个问题转载于:https://www.cnblogs.com/lvxiuquan/archive/2013/05/15/3079546.html