• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

详解Python的装饰器、迭代器&生成器、re正则表达式、字符串格式化

python 搞代码 4年前 (2022-01-09) 22次浏览 已收录 0个评论

本章内容:

装饰器

迭代器 & 生成器

re 正则表达式

字符串格式化

装饰器

 装饰器是一个很著名的设计模式,经常被用于有切面需求的场景,较为经典的有插入日志、性能测试、事务处理等。装饰器是解决这类问题的绝佳设计,有了装饰器,我们就可以抽离出大量函数中与函数功能本身无关的雷同代码并继续重用。概括的讲,装饰器的作用就是为已经存在的对象添加额外的功能。

先定义一个基本的装饰器:

########## 基本装饰器 ##########def orter(func):    #定义装饰器    def inner():        print("This is inner before.")        s = func()    #调用原传入参数函数执行        print("This is inner after.")        return s        #return原函数返回值    return inner      #将inner函数return给name函数 @orter    #调用装饰器(将函数name当参数传入orter装饰器)def name():    print("This is name.")    return True        #name原函数return True  ret = name()print(ret) 输出结果:This is inner before.This is name.This is inner after.True

给装饰器传参数:

############ 装饰器传参数 ###########def orter(func):    def inner(a,b):      #接收传入的2个参数        print("This is inner before.")        s = func(a,b)    #接收传入的原函数2个参数        print("This is inner after.")        return s    return inner @orterdef name(a,b):    #接收传入的2个参数,并name整体函数当参数传入orter装饰器    print("This is name.%s,%s"%(a,b))    return True ret = name('nick','jenny')    #传入2个参数print(ret) 输出结果:This is inner before.This is name.nick,jennyThis is inner after.True

给装饰器传万能参数:

########## 万能参数装饰器 ########## def orter(func):    def inner(*args,**kwargs):        #万能参数接收多个参数        print<strong style="color:transparent">本文来源gao@daima#com搞(%代@#码@网&</strong>("This is inner before.")        s = func(*args,**kwargs)       #万能参数接收多个参数        print("This is inner after.")        return s    return inner @orterdef name(a,b,c,k1='nick'):        #接受传入的多个参数    print("This is name.%s,%s"%(a,b))    return True ret = name('nick','jenny','car')print(ret) 输出结果:This is inner before.This is name.nick,jennyThis is inner after.True

一个函数应用多个装饰器方法:

########### 一个函数应用多个装饰器 ######### def orter(func):    def inner(*args,**kwargs):        print("This is inner one before.")        print("This is inner one before angin.")        s = func(*args,**kwargs)        print("This is inner one after.")        print("This is inner one after angin.")        return s    return inner def orter_2(func):    def inner(*args,**kwargs):        print("This is inner two before.")        print("This is inner two before angin.")        s = func(*args,**kwargs)        print("This is inner two after.")        print("This is inner two after angin.")        return s    return inner @orter            #将以下函数整体当参数传入orter装饰器  @orter_2          #将以下函数当参数传入orter_2装饰器  def name(a,b,c,k1='nick'):    print("This is name.%s and %s."%(a,b))    return True ret = name('nick','jenny','car')print(ret) 输出结果:This is inner one before.This is inner one before angin.This is inner two before.This is inner two before angin.This is name.nick and jenny.This is inner two after.This is inner two after angin.This is inner one after.This is inner one after angin.True

搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:详解Python的装饰器、迭代器&生成器、re正则表达式、字符串格式化

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址