擅长:python、mysql、java
<p>全局加载比快速加载慢得多。在</p>
<h2>地下一层</h2>
<pre><code> 5 0 LOAD_GLOBAL 0 (sum)
3 BUILD_LIST 0
6 LOAD_GLOBAL 1 (range)
9 LOAD_FAST 0 (loopcount)
12 CALL_FUNCTION 1
15 GET_ITER
>> 16 FOR_ITER 18 (to 37)
19 STORE_FAST 1 (n)
22 LOAD_GLOBAL 2 (a)
25 LOAD_FAST 1 (n)
28 CALL_FUNCTION 1
31 LIST_APPEND 2
34 JUMP_ABSOLUTE 16
>> 37 CALL_FUNCTION 1
40 RETURN_VALUE
</code></pre>
<h2>b2</h2>
^{pr2}$
<p>这种差异是否弥补了每次创建函数的不足,这取决于函数(以及使用LOAD_GLOBAL的次数)。在</p>
<p>在</p>
<p>创建全局函数的局部引用以在内部循环中使用是一种相对常见的优化:</p>
<pre><code>def a(n):
return n + 1
def b1(loopcount):
local_a = a
return sum([local_a(n) for n in range(loopcount)])
</code></pre>
<p>这应该仍然比查找全局更快,并且比嵌套函数更易于维护。在</p>