• 技术文章 >后端开发 >Python教程

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

    PHP中文网PHP中文网2016-06-06 16:11:06原创599
    用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()
    {'a': 1, 'do_test': <function do_test at 0x7fab08be8410>, 'c': [], 'b': 'abc', '__built
    ins__': <module '__builtin__' (built-in)>, '__package__': None, '__name__': '__main__', '__doc__': 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
    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:Python
    上一篇:只会 Python 但有算法/数学背景,如何快速进修学习成为 C++ 程序员? 下一篇:Python 项目的部署,目前互联网公司有哪些成熟的方案?
    VIP课程(WEB全栈开发)

    相关文章推荐

    • 【腾讯云】年中优惠,「专享618元」优惠券!• 归纳总结Python函数进阶的使用方法• Python接口自动化测试必备基础之http协议详解• Python 3.11中的最佳新功能和功能修复• 实例详解Python面向对象的四大特征• Python数据分析之concat与merge函数(实例详解)
    1/1

    PHP中文网