Python 中的装饰器

本文介绍了Python装饰器的基本概念和使用方法,包括如何使用装饰器增强原有函数的功能而不修改其源代码,以及如何创建带有参数的装饰器以实现更灵活的功能定制。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

装饰器的作用:

  使用装饰器模式进行代码设计的好处在于,我可以对原来的功能不进行修改,只需要重新写一个新函数对原来的功能进行封装,增加代码的可复用性。

Python中的装饰器:

  Python中实现装饰器是十分容易的,因为所有的方法在Python中都被视为一个变量,函数可以进行参数性的传递。接下来通过一个例子来实现Python中的装饰器的使用

  我想实现一个基本的功能,即:得到 this is somebody home page的语句

  def my_view(name):

    return "this is %s home page" %s name
  print my_view("my") #this is my home page
  1)装饰器的基本用法:
    我想利用HTML标签语言对这句话进行修改,令它能够在前台界面上加粗,那么只要:
    def bold(func):
      def wapper(*args, **kwargs):
        return "{tag_prefix}{content}{tag_suffix}".format(tag_prefix="<b>",content=func(*args, **kwargs),tag_suffix="</b>")
    
    @bold
    def my_view(name):
      return "this is %s home page" %s
    print my_view(name) #<b>this is my home page</b>
 
 
    简要分析一下以上代码,@bold在Python中会被解释为:bold(my_view),就是将my_view函数当做一个函数参数传入了bold方法中,并且,在bold方法中,定义了一个wapper函数,在这个方法中,将my_view函数的返回值进行装饰放入到wapper函数的返回值中,从而达到了装饰器的作用。
  2)带参数的装饰器:
    如果,我想要有一个更有意思的功能,我想给这句话加上任意的标签,比如说<h1>或者是<p>,具体代码如下: 
    def tag_decorate(tag_prefix_str, tag_suffix_str):#这个是使用装饰器时的参数
      def tag(func)#获得函数
        def warpper(*func_args, **func_kargs):被装饰函数的参数列表
          return "{tag_prefix}{content}{tag_suffix}".format(tag_prefix=tag_prefix_str,content=func(*args, **kwargs),tag_suffix=tag_suffix_str)
      return func
    
    @tag_decorate("<h1>", "</h2>)
    def my_view(name):
      return "this is %s home page" %s
    
    print my_view("my")#<h1>this is my home page</h1>
    简要分析一下以上的代码,在tag_decorate函数中,定义了了tag函数,在tag函数和上面一样。在tag_decorate函数中能够获得到<h1>和</h1>这个参数,而tag函数也是获得到了my_view这个函数

转载于:https://www.cnblogs.com/Rubick7/p/6475038.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值