发布于2020-03-09 15:53 阅读(1662) 评论(0) 点赞(22) 收藏(4)
装饰器本质就是函数,功能是为其他函数添加附加功能
原则:
1)不修改被修饰函数的源代码
2)不修改被修饰函数的调用方式
装饰器 = 高阶函数 + 函数嵌套 + 闭包
函数接受的参数是一个函数名
函数的返回值是一个函数名
满足上述条件任意一个都可以称之为高阶函数
import time
def foo():
time.sleep(1)
print('你好刘亦菲')
def test(func):
print(func)
start_time = time.time()
func()
stop_time = time.time()
print('函数运行时间是 %s' % (stop_time - start_time))
foo()
test(foo)
可以看到foo函数又在test函数中执行了一遍
作用:在不修改函数源代码的前提下,为函数添加新功能
不足:会改变函数的调用方式
作用:不修改函数的调用方式
不足:不能添加新功能
函数嵌套就是在函数里面在定义函数
def func():
pass
def func1():
pass
def func2():
pass
pass
在一个外函数中定义了一个内函数,内函数里运用了外函数的临时变量,并且外函数的返回值是内函数的引用。这样就构成了一个闭包
例子
def func(a):
aa=11
def func1():
c=a+aa
print(c)
return func1
使用闭包的过程中,一旦外函数被调用一次返回了内函数的引用,虽然每次调用内函数,是开启一个函数执行过后消亡,但是闭包变量实际上只有一份,每次开启内函数都在使用同一份闭包变量
def outer(x):
def inner(y):
nonlocal x
x+=y
return x
return inner
a=outer(100)
print(a(50))
print(a(100))
作者:我是小白兔
链接:https://www.pythonheidong.com/blog/article/248815/28e753bf458374a2c2a0/
来源:python黑洞网
任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任
昵称:
评论内容:(最多支持255个字符)
---无人问津也好,技不如人也罢,你都要试着安静下来,去做自己该做的事,而不是让内心的烦躁、焦虑,坏掉你本来就不多的热情和定力
Copyright © 2018-2021 python黑洞网 All Rights Reserved 版权所有,并保留所有权利。 京ICP备18063182号-1
投诉与举报,广告合作请联系vgs_info@163.com或QQ3083709327
免责声明:网站文章均由用户上传,仅供读者学习交流使用,禁止用做商业用途。若文章涉及色情,反动,侵权等违法信息,请向我们举报,一经核实我们会立即删除!