> 백엔드 개발 > 파이썬 튜토리얼 > Python 中,代码放在函数中运行为什么比放在全局中运行快?

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

PHP中文网
풀어 주다: 2016-06-06 16:11:06
원래의
1202명이 탐색했습니다.

用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으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿