Python: 装饰器和语法糖

2023-11-14

一、Python 装饰器

Python 装饰器本身就是一个函数,它的作用是装饰一个其他的函数,但是不改变原有的程序功能,还要增添新的功能,调用函数时的接口没有变化。比如,装修一个房子,如果不隔音,我在墙上加一层隔音板,却不能把墙拆了,换成隔音材质。

import time   #导入时间模块

def index():
    time.sleep(2)    #时间休眠2秒

start_time = time.time()  #time.time 是时间戳,指北京时间19700101 080000 起至现在的总毫秒数
index()
end_time = time.time()
print(end_time - start_time)    #2.0136349201202393

虽然完成了计时功能,但如果函数有非常多个,那每一个函数的计时都要定义开始时间和结束时间的变量,比较繁琐。

import time   #导入时间模块

def index():
    time.sleep(2)    #时间休眠2秒

def calculate_time(f):
    start_time = time.time()
    f()
    end_time = time.time()
    print(end_time - start_time)
calculate_time(index)            #2.0035324096679688

但装饰器不改变原有的函数调用接口,之前的函数是index 而现在要写上calculate_time(index),这样也是很不方便的。比如玩家在玩游戏时通常用WASD来控制上下

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Python: 装饰器和语法糖 的相关文章

随机推荐

  • HTTP的演变

    这个问题之前一直没有关注过 后来在面试的过程中 面试官总喜欢问http1 0和http1 1之间的区别是啥 改进是啥以及优缺点 在今天进行一个总结 Http1 0和Http1 1的对比 这里讲俩放在一起进行对比学习 相较于Http1 0而言
  • Java调用Python脚本报错cv2.error: OpenCV(4.8.0) D:\a\opencv-python\opencv-python\opencv\modules\imgproc\src

    Java调用python脚本报错cv2 error OpenCV 4 8 0 D a opencv python opencv python opencv modules imgproc src resize cpp 4062 error
  • Android开机动画

    Android开机动画 1 BootLoader开机图片 2 Kernel开机图片 3 系统启动时 BootAnimation 动画 3 1 bootanimation zip位置 3 2 bootanimation启动 3 3 Surfa
  • linux保存git用户名密码

    1 创建git credentials gt vim git credentials https username password github com gitlab或github地址 2 执行git命令 gt git config gl
  • leetcode分类刷题:二分查找(Binary Search)(四、基于值域的数组/矩阵类型)

    基于值域的二分法与基于定义域的题型不同 它的目标是从一 特殊排序序列 中确定 第k个元素值 而不像基于定义域的题型是从排序序列中找小于等于特定target值的第一个索引 同时 针对 特殊排序序列 往往需要嵌套使用双指针法进行操作 进一步增加
  • mysql数据库备份与表备份

    一 Mysql中的数据备份 Mysql中数据备份使用的命令是 mysqldump命令将数据库中的数据备份成一个文本文件 表的结构和表中的数据将存储在生成的文本文件中 mysqldump命令的 工作原理很简单 它先查出需要备份的表的结构 再在
  • 转码日记——Javascript笔记(13)修改css样式、事件冒泡和委派

    使用JS控制css样式 1 修改css样式 语法 元素 style 样式名称 样式值 样式值必须是一个字符串 修改box1的样式 box1 style width 300px 如果css中还有 如background color 这种名称在
  • 程序员修仙之路--优雅快速的统计千万级别uv(留言送书)

    菜菜 咱们网站现在有多少PV和UV了 Y总 咱们没有统计pv和uv的系统 预估大约有一千万uv吧 写一个统计uv和pv的系统吧 网上有现成的 直接接入一个不行吗 别人的不太放心 毕竟自己写的 自己拥有主动权 给你两天时间 系统性能不要太差呀
  • Head First 设计模式 C#实现

    Head First 设计模式 文章目录 Head First 设计模式 完整源码 设计模式入门 具体设计模式 策略模式 观察者模式 装饰者模式 工厂模式 抽象工厂模式 单例模式 命令模式 适配器模式 外观模式 模版方法模式 迭代器模式 组
  • 指针以及内存分配

    1 指针很灵活 这使得指针很难管理 在定义指针时 将在栈中开辟一块内存存放指针的地址 栈内的内存由系统分配和释放 指针的地址内存只是存放指针的地址 不存放指针指向的数据 值得注意的是 定义指针时指针会随机指向一块内存 如int p p会指向
  • 243. 一个简单的整数问题2(树状数组)

    输入样例 10 5 1 2 3 4 5 6 7 8 9 10 Q 4 4 Q 1 10 Q 2 4 C 3 6 3 Q 2 4 输出样例 4 55 9 15 解析 一般树状数组都是单点修改 区间查询或者单点查询 区间修改 这道题都是区间操作
  • 从C语言到C++(语法基础一)

    一 关键字的添加 C 是对C的 增强 几乎引入了一倍的关键字 C语言常用关键字 C 98关键字 二 命名空间 在写C语言程序时 当你写了一个函数把它命名为max 且此时包含头文件stdlib h时你会发现编译会报错 这是C语言的缺陷之一 因
  • 【漏洞复现】 Sudo缓存溢出提权漏洞(CVE-2021-3156)

    说明 此博客为本人的漏洞复现学习过程记录 前言 漏洞原理 本次的漏洞存在于Sudo上 一个基于堆的缓冲区溢出漏洞 CVE 2021 3156 该漏洞被命名为 Baron Samedit 在sudo解析命令行参数的方式中发现了基于堆的缓冲区溢
  • C++面试知识点

    strcpy函数实现 char strcpy char dest const char src assert dest NULL src NULL 检查指针的有效性 char res dest while dest src 0 return
  • Idea 插件下载缓慢,无法下载的解决方式

    要给idea装一个插件 但今天的idea死活下不下来插件 总报错 Plugin JProfiler was not installed Cannot download https plugins jetbrains com pluginMa
  • 杨桃的Python进阶讲座17——数组array(七)三维数组和n维数组的索引和取值(配详细图解)

    本人CSDN博客专栏 https blog csdn net yty 7 Github地址 https github com yot777 三维数组的索引和取值 创建一个numpy三维数组z 如下所示 gt gt gt import num
  • Nginx官方文档(三十四)【ngx_http_ssl_module】

    ngx http ssi module 示例配置 指令 ssl ssl buffer size ssl certificate ssl certificate key ssl ciphers ssl client certificate s
  • 电脑报错vcomp100.dll丢失怎样修复?这三个方法可以解决

    vcomp100 dll是微软Visual C 2005 Redistributable Package的一部分 它包含了运行某些程序所需的C 运行时库 当电脑中的vcomp100 dll文件丢失或损坏时 可能会导致一些程序无法正常运行 甚
  • [springboot 项目启动类Application.java运行没有任何反应]

    1 问题 最近从网上找了一个springboot项目学习 发现项目启动类无法运行 运行没有任何反应 maven依赖检查没有任何问题 2 解决方案 Files Setting Plugins Groovy勾选 再次运行 成功 3
  • Python: 装饰器和语法糖

    一 Python 装饰器 Python 装饰器本身就是一个函数 它的作用是装饰一个其他的函数 但是不改变原有的程序功能 还要增添新的功能 调用函数时的接口没有变化 比如 装修一个房子 如果不隔音 我在墙上加一层隔音板 却不能把墙拆了 换成隔