伍佰目录 短网址
  当前位置:海洋目录网 » 站长资讯 » 站长资讯 » 文章详细 订阅RssFeed

20210108 装饰器详解

来源:本站原创 浏览:108次 时间:2022-03-17
装饰器:定义:本质是函数,功能是用来装饰其他函数,就是为其他函数添加附加功能(器是函数的意思,本质是用来装饰的)原则:1. 不能修改被装饰的函数的源代码2. 不能修改被装饰的函数的调用方式# 装饰器,对被装饰的函数是完全透明的1-1def test1():    passdef test2():    passtest1()test2()test1 和 test2 都有自己要完成的功能,现在要把 test1 和 test2 新增加一个记录日志的功能应该如何操作?1-1-1以前的做法,把代码一段一段的加进去def test1():    pass    print('logging')def test2():    pass    print('logging')test1()test2()1-1-2学了函数之后,高级了一些;单独定义一个函数def logger():    print('logging')def test1():    pass    logger()def test2():    pass    logger()test1()test2()1-1-3假���,�Ӷ�如有 100 个函数,已经运行在生产环境当中有一天产品经理说,要对app新增一个功能,应该怎么做?找到100个函数,每一个都加上去?但是你的程序已经运行了,这种修改源代码的操作,意味着会有风险发生所以,新增一个功能,不能够修改函数的源代码,函数一旦写好了,原则上是不能动源代码的因此,函数的调用方式也不能修改
实现装饰器知识储备:1. 函数即“变量”2. 高阶函数3. 嵌套函数高阶函数+嵌套函数 => 装饰器1-1# 一个统计函数运行时间的装饰器import timedef test1():    time.sleep(3)    print('in the test1')test1()1-2# 现在写一个装饰器# 一个统计函数运行时间的装饰器import timedef timmer(func):    def warpper(*args,**kwargs):        start_time=time.time()        func()        stop_time=time.time()        print('the func run time is %s'%(stop_time-start_time))    return warpper# 装饰器本质就是一个函数# 那么装饰器怎么用?@timmerdef test1():    time.sleep(3)    print('in the test1')test1()--->in the test1the func run time is 3.0002810955047607# 对 test1 来说,是完全感知不到 timmer 的存在的
1-1# 什么是嵌套函数?# 在函数体内在用 def 定义另外一个函数def foo():    print('in the foo')    def bar():        print('in the bar')    bar()foo()--->in the fooin the bar# bar() 是一个局部变量,存在于过程或者函数中;函数即变量# 局部变量不能在外面调用,只能在内部调用# 所以,如果要调用 bar(),应该写在内部
1-1-1# 以下情况是函数嵌套吗?# 如果 test2 存在,这种方式叫函数嵌套吗?# 这叫函数调用,不是嵌套def test1():    test2()test1()# 装饰器是由嵌套函数和高阶函数组成
2-1局部作用域和全局作用域的访问顺序 x=0 def grandpa():    # x=1     def dad():        x=2         def son():             x=3             print(x)        son()     dad() grandpa() # grandpa 函数中 套了两个函数,如果想运行 son;一定要通过 dad 进行调用# 所以写 dad()调用的目的,是为了运行 son()# 如果不写 dad(),调用 grandpa() 时,会有什么效果?# 遇到 def 相当于定义一个变量,如果没有调用 dad(),后面相当于没有变量,相当于什么事情都没有做# 作用域一层一层,从内向外寻找

  推荐站点

  • At-lib分类目录At-lib分类目录

    At-lib网站分类目录汇集全国所有高质量网站,是中国权威的中文网站分类目录,给站长提供免费网址目录提交收录和推荐最新最全的优秀网站大全是名站导航之家

    www.at-lib.cn
  • 中国链接目录中国链接目录

    中国链接目录简称链接目录,是收录优秀网站和淘宝网店的网站分类目录,为您提供优质的网址导航服务,也是网店进行收录推广,站长免费推广网站、加快百度收录、增加友情链接和网站外链的平台。

    www.cnlink.org
  • 35目录网35目录网

    35目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向35目录推荐、提交优秀网站。

    www.35mulu.com
  • 就要爱网站目录就要爱网站目录

    就要爱网站目录,按主题和类别列出网站。所有提交的网站都经过人工审查,确保质量和无垃圾邮件的结果。

    www.912219.com
  • 伍佰目录伍佰目录

    伍佰网站目录免费收录各类优秀网站,全力打造互动式网站目录,提供网站分类目录检索,关键字搜索功能。欢迎您向伍佰目录推荐、提交优秀网站。

    www.wbwb.net