首页 > 后端开发 > Python教程 > Python 中,代码放在函数中运行为什么比放在全局中运行快?

Python 中,代码放在函数中运行为什么比放在全局中运行快?

PHP中文网
发布: 2016-06-06 16:11:06
原创
1192 人浏览过

用dis.dis查看函数,局部变量是LOAD_FAST,要比LOAD_GLOBAL要快

============
猜想一下,在函数内部执行的时候,查询变量所用的字典,比全局情况下要小,所以更快;或者另一个原因,可能函数内部时使用变量的字典,可能在内存排列上有更好的局部性,也能更快。

>>> def do_test():
...     a = 1
...     b = 'abc'
...     c = []
...     print locals()
... 
>>> do_test()
{'a': 1, 'c': [], 'b': 'abc'}

>>> 
>>> a = 1
>>> b = 'abc'
>>> c = []
>>> print locals()
{&#39;a&#39;: 1, &#39;do_test&#39;: <function do_test at 0x7fab08be8410>, &#39;c&#39;: [], &#39;b&#39;: &#39;abc&#39;, &#39;__built
ins__&#39;: <module &#39;__builtin__&#39; (built-in)>, &#39;__package__&#39;: None, &#39;__name__&#39;: &#39;__main__&#39;, &#39;__doc__&#39;: None}
登录后复制

另外,关于dict占用内存,和节点数量相关

>>> a = {}
>>> for idx in range(50):
...     print idx, sys.getsizeof(a)
...     a[idx] = idx
... 
0 280
1 280
2 280
3 280
4 280
5 280
6 1048
7 1048
8 1048
9 1048
10 1048
11 1048
12 1048
13 1048
14 1048
15 1048
16 1048
17 1048
18 1048
19 1048
20 1048
21 1048
22 3352
23 3352
24 3352
25 3352
26 3352
27 3352
28 3352
29 3352
30 3352
31 3352
32 3352
33 3352
34 3352
35 3352
36 3352
37 3352
38 3352
39 3352
40 3352
41 3352
42 3352
43 3352
44 3352
45 3352
46 3352
47 3352
48 3352
49 3352
登录后复制


相关标签:
来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板