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

简单说明Python中的装饰器的用法

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

通过本文主要向大家介绍了python print用法,python class用法,python return用法,python中print的用法,python raise用法等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com

装饰器对与Python新手以至于熟悉Python的人都是一个难理解, 难写的东西. 那么今天就分享一下我对Python 装饰器的理解

所谓装饰器仅仅是一种语法糖, 可作用的对象可以是函数也可以是类, 装饰器本身是一个函数, 其主要工作方式就是将被装饰的类或者函数当作参数传递给装饰器函数, 比如定义如下装饰器

import time

def run_time(func):
  def wrapper(*args, **kwargs):
    start = time.time()
    r = func(*args, **kwargs)
    print time.time() - start
    return r
  return wrapper

</div>

我们用这个装饰器装饰一个test函数

@run_time
def test():
  print "just a test"

</div>

前面说过其实装饰器就是一个语法糖, 就是将被装饰的函数作为参数传递给装饰器函数, 所以上面可以展开为

test = run_time(test)

</div>

装饰器将在解释器运行一开始就被加载, 从而将被装饰的函数将被展开成如上方式, 因为 run_time装饰器返回wrapper函数, 所以当调用test函数时其实就是对wrapper的调用

如果你在Python shell下执行以上语句就会发现定义完test函数然后查看test时, shell所展示的是wrapper函数

201542492457922.png (502×346)

接下来说说如何编写带参数的装饰器, 大家如果细心的话就可以发现其实带参数的装饰器是经过调用"装饰器"函数返回的一个装饰器, 之所以装饰器上打引号是说明其实这个所谓的"装饰器"只不过是一个普通的函数, 但这个普通的函数返回一个装饰器, 可以参看下面例子:

import time

def route(url):
  def decorator(func):
    func.__url__ = url
    return func
  return decorator

@route(r"/")
def index():
  return "Hi"

</div>

大家可以发现在使用route装饰器时我们其实是调用了route函数, route函数返回一个decorator装饰器, 因为我们不需要在装饰器内运行函数, 所以不需要一个wrapper函数来收集参数.

以上就是全部内容, 希望对装饰器一知半解的人有些许帮助

</div>

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

  • 深入理解Python中装饰器的用法
  • Python中绑定与未绑定的类方法用法分析
  • Python中绑定与未绑定的类方法用法分析
  • 简单说明Python中的装饰器的用法
  • python复制与引用用法分析
  • python复制与引用用法分析
  • Python的print用法示例
  • Python的print用法示例
  • Python的一些用法分享
  • Python的一些用法分享

相关文章

  • python字典键值对的添加和遍历方法
  • python实现简单的TCP代理服务器
  • Python访问纯真IP数据库脚本分享
  • 详解MySQL数据类型int(M)中M的含义
  • Python网络爬虫出现乱码问题的解决方法
  • 在Python的web框架中编写创建日志的程序的教程
  • Python中对列表排序实例
  • python中执行shell命令的几个方法小结
  • 详解Python中的__getitem__方法与slice对象的切片操作
  • Python中的模块导入和读取键盘输入的方法

文章分类

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

最近更新的内容

    • Python循环语句之break与continue的用法
    • Python中的Numpy入门教程
    • python编写简单爬虫资料汇总
    • 使用Python进行二进制文件读写的简单方法(推荐)
    • python读写json文件的简单实现
    • python批量修改文件后缀示例代码分享
    • python中 ? : 三元表达式的使用介绍
    • 在Python中使用sort()方法进行排序的简单教程
    • Python实现给qq邮箱发送邮件的方法
    • 在centos7中分布式部署pyspider

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

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