轉自 stackoverflowpython
http://stackoverflow.com/questions/11241523/why-does-python-code-run-faster-in-a-function 數組
爲何一樣的代碼在函數中就要比不在函數中快?函數
def main(): for i in xrange(10**8): pass main()
real 0m1.841s
user 0m1.828s
sys 0m0.012scode
for i in xrange(10**8): pass
real 0m4.543s
user 0m4.524s
sys 0m0.012sget
緣由是這樣的:io
i在函數中是局部變量,使用STORE_FAST指令, i不在函數中爲全局變量使用STORE_NAME指令編譯
而 STORE_FAST要比STORE_NAME快。ast
可以使用 dis模塊查看字節碼:function
import dis def a(): pass dis.dis(a) 2 0 LOAD_CONST 0 (None) 3 RETURN_VALUE
爲何 局部變量比全局變量快?class
局部變量編譯後被存爲固定大小的數組, 而全局變量是個字典。