闭包
如果一个函数反复调用,会造成内存消耗,闭包的特性就是当调用外部函数的变量的时候,运行结束后再内存中不会释放,反复调用就不会对内存造成消耗
闭包的定义:当内部函数使用了外部函数的变量(注意不是全局变量)的时候,称这种方式为闭包
def f1(a):
def f2():
print(a)
return a
return f2
概念
如果想在某个函数的之前或是之后增加一些操作,比如验证登陆、写日志、性能测试等等,这些代码可能是临时的,如果直接在源代码中修改,会造成程序整体的破坏,产生BUG,甚至造成程序的崩溃,此时就需要装饰器这个神器了。
详解
由于文字的方式不够直观,所以就直接上图吧
上面的还不是完整的装饰器,装饰器的最终形态是这样的
def zhuangshiqi(tem_func):
def inner(*args, **kwargs):
print("函数前面执行的")
ret = tem_func(*args, **kwargs)
print("函数后面执行的")
return ret
return inner
@zhuangshiqi
def func(s):
print("s:%s" % s)
return s
func("hahaha")
装饰器的样式
def wrapper(func):
def inner(*args,**kwargs):
"""被装饰函数执行之前要添加的代码"""
ret = func(*args,**kwargs)
"""被装饰函数执行之后要添加的代码"""
return ret
return inner
本文详细解释了闭包的概念及其如何减少内存消耗,并通过实例介绍了装饰器的作用及其实现方式,帮助读者更好地理解这两种Python高级特性。
2484

被折叠的 条评论
为什么被折叠?



