如何理解装饰器

python 学习遇到的第一个难点是装饰器。装饰器的作用是不大规模改动代码的情况下,增加功能。

作用:为已经存在的对象添加额外的功能

特点:不需要对对象做任何的代码上的变动。

以一个例子来讲装饰器

import time

def timer(func):

def deco():

start_time=time.time()

func()

stop_time=time.time()

print("run time is %s"%(stop_time-start_time))

return deco

@timer

def test1():

time.sleep(3)

print("in the test1")

@timer

def test2():

time.sleep(3)

print("in the test2")

test1( )

test2( )

例子是在网上找到的,简单的说就是通过 @timer 对进行了函数进行了改造,在很少的代码量的情况下记录了执行时间。

一般在程序中主要是进行日志记录。

python怎么装饰_如何理解python装饰器相关推荐

  1. python语句解释_深入理解python with 语句

    深入理解python with 语句 python中with 语句作为try/finally 编码范式的一种替代, 适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的" ...

  2. python with关键字_完全理解Python关键字with与上下文管理器

    如果你有阅读源码的习惯,可能会看到一些优秀的代码经常出现带有 "with" 关键字的语句,它通常用在什么场景呢?今天就来说说 with 和 上下文管理器. 对于系统资源如文件.数据 ...

  3. python iterable对象_如何理解Python中的iterable对象

    转载请注明出处:https://www.jianshu.com/u/5e6f798c903a [^*] 表示注脚,在文末可以查看对应连接,但简书不支持该语法. 首先,容器和 iterable 间没有必 ...

  4. python参数传递方法_深入理解python中函数传递参数是值传递还是引用传递

    python 的 深入理解python中函数传递参数是值传递还是引用传递 目前网络上大部分博客的结论都是这样的: Python不允许程序员选择采用传值还是传 引用.Python参数传递采用的肯定是&q ...

  5. 完全理解python迭代对象_完全理解Python迭代对象、迭代器、生成器

    1.assert:python assert断言是声明其布尔值必须为真的判定,如果发生异常就说明表达示为假.可以理解assert断言语句为raise-if-not,用来测试表示式,其返回值为假,就会触 ...

  6. python赋值语句对错_深入理解Python中变量赋值的问题

    前言 在Python中变量名规则与其他大多数高级语言一样,都是受C语言影响的,另外变量名是大小写敏感的. Python是动态类型语言,也就是说不需要预先声明变量类型,变量的类型和值在赋值那一刻被初始化 ...

  7. 深入理解python异步编程_深入理解Python异步编程

    1 什么是异步编程 1.1 阻塞程序未得到所需计算资源时被挂起的状态. 程序在等待某个操作完成期间,自身无法继续干别的事情,则称该程序在该操作上是阻塞的. 常见的阻塞形式有:网络I/O阻塞.磁盘I/O ...

  8. python select模块_深入理解python中的select模块

    简介 Python中的select模块专注于I/O多路复用,提供了select  poll  epoll三个方法(其中后两个在Linux中可用,windows仅支持select),另外也提供了kque ...

  9. python sorted原理_深入理解Python的sorted

    1. 简介 sorted的派排序功能真强大,从前一直使用C++.Java以为其功能很强大了,但与Python一比,真的要差一些. 2. 函数定义 sorted(iterable, cmp=None, ...

最新文章

  1. 结构之美——优先队列基本结构(四)——二叉堆、d堆、左式堆
  2. miui11禁止更新方法
  3. wxWidgets:wxTreeEvent类用法
  4. Laravel核心解读--路由(Route)
  5. Android应用开发(7)---Unicode和国际化支持
  6. 计算机科学 高中研究项目,高中信息科技教学中渗透计算机科学史的实践研究...
  7. 为你的Web程序加个启动画面
  8. C++Primer 学习笔记之关联容器
  9. ubuntu16下安装mongodb 3.6
  10. WinForm后台任务(定时任务)传递消息给主窗体并更新主窗体文本框内容
  11. C#:$符号和@符号的用法介绍
  12. 公式法求主合取范式和主析取范式的一种思路
  13. python函数的位置参数(Positional)和关键字参数(keyword)
  14. 图书isbn批量生成一维条码
  15. 软件测试的常用的面试题【带答案】
  16. 顺丰终端服务器断网,顺丰手持终端第六代,实现收派件智能化操作
  17. Oracle-Spatial空间数据库基础
  18. C/C++ fstream
  19. 线性回归算法梳理——Test1
  20. IAR集成开发环境---ewdewpeww文件介绍

热门文章

  1. 解决原子性问题?你首先需要的是宏观理解
  2. 阿里云有史以来最大的一次优惠,爆款限时抢,至少省10000+
  3. Spring Boot 2.x基础教程:快速入门
  4. 微服务2017年度报告出炉:4大客户画像,15%传统企业已领跑
  5. python曲线拟合笔记
  6. 反函数计算 python
  7. efficientdet
  8. reid 数据集 行人重拾别
  9. from torch._C import * ImportError: DLL load failed: 找不到指定的模块。
  10. TypeError: unhashable type: 'dict'