python 学习笔记 (一)(局部变量代替模块变量的性能优化)
简介:这是我自己在看《python 核心编程(第二版)》的部分学习笔记和自己这开发使用过程中使用的小技巧
接下来会持续更新一下关于我再看这本书的时候的一些感受以及个人笔记, 大家用更好的想法可以私聊我或者直接下方评论,欢迎大家一起交流
tp: 我也是菜鸟o( ̄▽ ̄)o,只是在分享一下自己的学习笔记
好了闲唠到此结束正文开始
好的好的下手轻点这就开始 别打了{{{(>_<)}}}
一、局部变量和全局变量及变量的管理
** 1. 用局部变量代替模块变量**
大家先看一段代码
def A(fun):
def a():
start = time.time()
fun()
end = time.time()
print(fun.__name__, "运行时间:", end - start)
return a
listdir = os.listdir
@A
def B():
for i in range(3000000):
listdir
@A
def C ():
for i in range(3000000):
os.listdir
if __name__ == '__main__':
B()
C()
对一个函数也好 或者一个类 都是一个变量的引用
同样都是调用os.listdir
B函数是这个变量一个是用一个本地变量listdir指向模块变量os.listdir
C函数是直接调用模块变量os.listdir
下面我们来看一下运行结果吧
运行结果图来了 不是说好的不打我了吗 o(TヘTo)
各位老板请看运行结果图
有的老板说我不信你在来一次
好好好听老板的! 只要老板不打我就行!!
老板你看我没有骗你吧
接下来就是啰嗦的时候了, 但是这也是要划重点(敲黑板)期末要考!!
要认真听
类似于os.listdir 这样的调用模块下的某个方法或者类又或者变量 , 需要解释器做两次查询 。
第一次 :查找os 来确定他是一个模块或者确定它是一个变量。
第二次:再在os 模块下寻找 listdir这个变量。
因为模块也是全局变量, 我们多消耗了部分系统资源来查找这个os模块。
如果你在某个程序中多次的使用某个函数或者某个属性, 你就可以在本地为该属性起一个别名。这样变量的查找速度将会快很多。
在查找全局变量之前,我们的程序总是先查找局部变量。这是一个让你的程序跑的更快的小技巧。将经常使用的模块属性加上本地的引用, 不仅仅可以让你的程序跑的更快, 还可以减少变量名的长度 (嘿嘿主要是嫌弃每次都要敲那么长的变量名!!!我为了找个理由我容易吗!o( ̄▽ ̄)o)
到这里就结束了,我们下期见!
最后 不要想我呀
啊啊啊啊~~~~~ 别打我我这就去更新!