我有一个方法,它依赖于存储在字典中的一些值。也许这是一个微观优化,但是在方法内部定义字典更好还是在外部定义字典更好?或者这真的很重要吗?
示例代码:
_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/