• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell
您的位置:首页 > 脚本语言 >python > python装饰器decorator介绍

python装饰器decorator介绍

作者:junjie 字体:[增加 减小] 来源:互联网

junjie 通过本文主要向大家介绍了python decorator,decorator,decorator是什么意思,decorator模式,interior decorator等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

一、装饰器decorator

decorator设计模式允许动态地对现有的对象或函数包装以至于修改现有的职责和行为,简单地讲用来动态地扩展现有的功能。其实也就是其他语言中的AOP的概念,将对象或函数的真正功能也其他辅助的功能的分离。

二、Python中的decorator

python中的decorator通常为输入一个函数,经过装饰后返回另一个函数。  比较常用的功能一般使用decorator来实现,例如python自带的staticmethod和classmethod。

装饰器有两种形式:
@A
def foo():
    pass
</div>

相当于:
def foo():
    pass
foo = A(foo)
</div>

第二种为带参数的:
@A(arg)
def foo():
    pass
</div>

则相当于:
def foo():
    pass
foo = A(arg)(foo)
</div>

可以看出第一种的装饰器是个返回函数的函数,第二种的装饰器是个返回函数的函数的函数。

python中的decorator可以多个同时使用,如下:

@A
@B
@C
def f (): pass
   
# it is same as below
def f(): pass
f = A(B(C(f)))
</div>

三、Python中常用的decorator实例

decorator通常用来在执行前进行权限认证,日志记录,甚至修改传入参数,或者在执行后对返回结果进行预处理,甚至可以截断函数的执行等等。

实例1:

from functools import wraps
def logged(func):
    @wraps(func)
    def with_logging(*args, **kwargs):
        print (func.__name__() + " was called")
        return func(*args, **kwargs)
    return with_logging

@logged
def f(x):
   """does some math"""
   return x + x * x

print (f.__name__)  # prints 'f'
print (f.__doc__)   # prints 'does some math'
</div>

注意functools.wraps()函数的作用:调用经过装饰的函数,相当于调用一个新函数,那查看函数参数,注释,甚至函数名的时候,就只能看到装饰器的相关信息,被包装函数的信息被丢掉了。而wraps则可以帮你转移这些信息,参见http://stackoverflow.com/questions/308999/what-does-functools-wraps-do

</div>

您可能想查找下面的文章:

  • 分析Python中设计模式之Decorator装饰器模式的要点
  • python装饰器decorator介绍
  • python装饰器decorator介绍
  • Python装饰器decorator用法实例
  • python self,cls,decorator的理解

相关文章

  • 在Python的Django框架中用流响应生成CSV文件的教程
  • 深入解析Python中的list列表及其切片和迭代操作
  • python从入门到精通(DAY 2)
  • 使用PyCharm配合部署Python的Django框架的配置纪实
  • Linux 发邮件磁盘空间监控(python)
  • 9种python web 程序的部署方式小结
  • python实现去除下载电影和电视剧文件名中的多余字符的方法
  • python fabric使用笔记
  • Python os模块学习笔记
  • python操作日期和时间的方法

文章分类

  • vbs
  • DOS/BAT
  • hta/htc
  • python
  • perl
  • VBA
  • ColdFusion
  • ruby
  • PowerShell
  • Lua
  • Golang
  • linux shell

最近更新的内容

    • python如何在终端里面显示一张图片
    • Python import自定义模块方法
    • 浅谈Python数据类型之间的转换
    • 以一个投票程序的实例来讲解Python的Django框架使用
    • Python实现简单状态框架的方法
    • Python实现分割文件及合并文件的方法
    • Python判断变量是否已经定义的方法
    • Python 常用的安装Module方式汇总
    • DJANGO-ALLAUTH社交用户系统的安装配置
    • Python中字符串的格式化方法小结

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有