python - Python数据结构性能: define inside or outside method?

标签 python scope interpreter

我有一个方法,它依赖于存储在字典中的一些值。也许这是一个微观优化,但是在方法内部定义字典更好还是在外部定义字典更好?或者这真的很重要吗?

示例代码:

_values = {'a': 2, 'b': 3}

def add_1(val):
    return _values[val] + 1

或者:

def add_1(val):
    _values = {'a': 2, 'b': 3}

    return _values[val] + 1

然后代码将被导入并在其他地方使用(即不同的文件)〜frommethodsimport*

解释器在每种情况下尝试查找字典时所采取的路径是什么?我的理解是,在方法范围之外查找字典的成本稍微高一些。

最佳答案

第一个版本速度更快。每次调用第二个版本时,它都会从头开始创建一个新字典。这是一个很小的额外时间,但仍然是额外时间:

In [20]: v1 = {'a': 2, 'b': 3}

In [21]: def add_1(val):
    ...:     return v1[val] + 1

In [22]: %timeit add_1('a')
128 ns ± 0.989 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each)

In [23]: def add_2(val):
    ...:     v2 = {'a': 2, 'b': 3}
    ...:     return v2[val] + 1

In [24]: %timeit add_2('b')
206 ns ± 3.15 ns per loop (mean ± std. dev. of 7 runs, 1000000 loops each)

关于python - Python数据结构性能: define inside or outside method?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53069532/

相关文章:

python - 使用计数器和条件结束循环

python - 使用 pandas python reshape 为二进制变量

javascript - 防止在 Javascript 中自动创建全局变量

c - AST 或字节码。哪个更容易优化?

php - 输出 PHP 分隔符 (<?php, ?>),PHP 不解释分隔符

python - Tkinter 改变按钮的坐标和大小

python - 将新计算合并回原始 pandas 数据框中

c - 局部变量的自动初始化

Extjs View 别名/xtype 未在 Controller 中定义

Python函数调用顺序