看到一篇文章,发现函数带来的提速,于是测试了下:
t0 = time()
for i in range(100000000):
a = 1
print(time() - t0) # 花费 5.7 秒
def main():
t0 = time()
for i in range(100000000):
a = 1
print(time() - t0)
if __name__ == '__main__':
main() # 花费 2.6 秒
快了一倍! 散列表比起数组来还是很花费时间:
变量取决于如何定义, 解释器花费或多或少的时间尝试计算出它们的值. Python在尝试判定变量名时利用动态作用域规则进行处理.当它在代码中找到一个变量时,首先通过查看局部名空间字典考察该变量是不是一个局部变量.如果找到该变量,就抓取该变量的值.否则再在全局名字空间字典中进行搜索,如果需要, 还会搜索内置名字空间.
因此,局部变量比其他类型变量的搜索速度要快得多,因而获得它们的值也要快得多.局部变量搜索速度快是因为它们对应于数组中的下标 操作,而全局变量搜索则对应于散列表搜索.一个良好的优化方法是:如果在函数中使用了很多全局变量,把它们的值赋给局部变量可能会有很大帮助.