前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >装饰器

装饰器

作者头像
IT人一直在路上
发布2019-09-18 11:00:34
3400
发布2019-09-18 11:00:34
举报
def fun():
    def fun1(num):
        return num+1
    return fun1

c = fun()
print(c(1))
在主函数中不能直接调用嵌套函数里的子函数如:fun1(num),需要先调用嵌套中的母函数如:fun(),然后把fun()函数中的子函数fun1()的地址传递给一个变量,然后才可以直接调用子函数fun1
一下是装饰器函数的标准模式,可以采用断点debug来一步步运行深入理解函数执行步骤
装饰器编码思路:将新的函数地址赋值给旧的函数,调用旧函数时实际运行的是新函数,新函数中又会运行旧函数,从而达到装饰的作用
import time
def timer(func):
    def dec(*args,**kwargs):
        time_start = time.time()
        func(*args,**kwargs)
        time_stop = time.time()
        print(time_stop-time_start)
    return dec
@timer#test1 = timer(test1)此时test1已经盖头换面成dec函数,dec函数内存地址给了test1
def test1():
    time.sleep(3)
    print("test1")
@timer
def test2(name,age):
    print("test2",name,age)
test1()#实际运行的是dec函数
test2("zita",24)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-09-25 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档