软件测试/测试开发丨Python闭包函数和计时器学习笔记

闭包函数

  • 闭包的内部函数中,对外部作用域的变量进行引用
  • 闭包无法修改外部函数的局部变量
  • 闭包可以保存当前的运行环境
# 普通方法实现
def output_student(name, gender, grade=1):print(F"新学期开学啦,学生{name}是{gender},他是{grade}年级学生")output_student('李白', '男生')
output_student('赵云', '男生')
output_student('孙尚香', '女生')
# 闭包函数
def student_grade(grade):def output_student(name, gender):print(F"新学期开学啦,学生{name}是{gender},他是{grade}年级学生")return output_studentstudent_info = student_grade(3)
student_info('李白', '男生')
student_info('赵云', '男生')
student_info('孙尚香', '女生')

需求:在函数调用的时候打印函数开始和函数结束

def aaa():print('good good study, happy happy everyday')def bbb():print('everything is ok')# 把中间的执行函数使用参数替代
def function_tips(func):print("函数开始执行")# 不写死函数,使用外部调用的方式func()print("函数结束执行")# 传入一个函数对象
function_tips(bbb)

代码运行步骤:

图片

func参数等于上方的bbb函数,下方调用func就等于调用bbb函数,然后把bbb的内容带入func

图片

最后执行代码实现

图片

使用装饰器实现

# 使用装饰器实现
# 闭包定义,1、定义两个函数,一个内函数,一个外函数,timer是外函数
# 5、在装饰器执行的过程中传入一个参数,这个参数就是被装饰函数的对象
def timer(func):# inner作用:执行装饰器的逻辑;inner是内函数def inner():# 2、在内函数里面添加装饰器的逻辑print("代码开始运行")func()  # 6、添加被装饰函数的执行步骤print("代码结束运行")# 3、把内函数返回出去,之后可以被调用return inner# 4、装饰器的使用:@+装饰器名称
@timer
def aaa():print('ccccc')aaa()---------->
代码开始运行
ccccc
代码结束运行

装饰器的练习

题目:实现一个计时器的装饰器,计算函数的执行时间

import datetimedef timer(func):def inner():# 获取当前时间start_time = datetime.datetime.now()func()# 获取结束时间end_time = datetime.datetime.now()print(f"函数执行时间{end_time - start_time}")return inner@timer
def calc():print("aaaaaaa")calc()------------------------------->
aaaaaaa
函数执行时间0:00:00

被装饰函数存在参数怎么解决

# 装饰器的练习
# 题目:实现一个计时器的装饰器,计算函数的执行时间
import datetimedef timer(func):"""1、如果装饰器内有参数,需要写在内置函数内,在调用的时候也要带上2、如果写死一个参数,但无法确定被装饰器的参数数量,这种写法会报错3、解决方法:把两个地方的参数全部换成不定长参数*args, **kwargs:param func::return:"""def inner(*args, **kwargs):# 获取当前时间start_time = datetime.datetime.now()func(*args, **kwargs)# 获取结束时间end_time = datetime.datetime.now()print(f"函数执行时间{end_time - start_time}")return inner@timer
def calc(name, age, gender):print("aaaaaaa")print(name)print(age)print(gender)calc('lili', 3, "女")-------------------------------->
aaaaaaa
lili
3
女
函数执行时间0:00:00

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!  

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/583357.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI时代下,如何看待“算法利维坦”?

ChatGPT的浪潮从2022年袭来后,至今热度不减,呈现出蓬勃发展的趋势。AI家居、医疗、教育、金融、公益、农业、艺术......AI真的已经走进了生活的方方面面,我们仿佛已经进入了AI时代,势不可挡。人工智能水平如此之高,不禁…

OpenCV-Python(21):OpenCV中的轮廓性质

3.轮廓的性质 本文我们将主要学习基于轮廓来提取一些经常使用的对象特征。 3.1 长宽比 边界矩形的宽高比: x,y,w,h cv2.boundingRect(cnt) aspect_ratio float(w)/h 3.2 Extent 轮廓面积与边界矩形面积的比。 area cv2.contourArea(cnt) x,y,w,h cv2.bounding…

王道考研计算机网络——应用层

如何为用户提供服务? CS/P2P 提高域名解析的速度:local name server高速缓存:直接地址映射/低级的域名服务器的地址 本机也有告诉缓存:本机开机的时候从本地域名服务器当中下载域名和地址的对应数据库,放到本地的高…

C语言实现RSA算法加解密

使用c语言实现了RSA加解密算法,可以加解密文件和字符串。 rsa算法原理 选择两个大素数p和q;计算n p * q;计算φ(n)(p-1)(q-1);选择与φ(n)互素的整数d;由de1 mod φ(n)计算得到e;公钥是(e, n), 私钥是(d, n);假设明…

Microsoft .NET Framework 4.5.1 离线安装包

Microsoft .NET Framework 4.5.1 安装包: 一、离线安装包: 百度网盘 链接: https://pan.baidu.com/s/1IGEYT1vyruY6KFu6XEmerA 提取码: m6ix 离线安装包官方地址: https://www.microsoft.com/zh-cn/download/details.aspx?id40779 二、在…

如何在VSCode搭建ESP-IDF开发ESP32

文章目录 概要安装VScode安装ESP-IDF插件使用官方例程小结 概要 ESP-IDF(Espressif IoT Development Framework) 即乐鑫物联网开发框架,它基于 C/C 语言提供了一个自给自足的 SDK,可为在 Windows、Linux 和 macOS 系统平台上开发 ESP32 应用程序提供工具…

跳跃表原理及实现

一、跳表数据结构 跳表是有序表的一种,其底层是通过链表实现的。链表的特点是插入删除效率高,但是查找节点效率很低,最坏的时间复杂度是O(N),那么跳表就是解决这一痛点而生的。 为了提高查询效率,我们可以给链表加上索…

天翼云云间高速实现租户跨地域内网互通

一、业务需求 用户业务在襄阳、武汉两个云池部署,希望通过云间高速产品将两个资源池云内资源通过云内专网实现内网互通。要求内网双向互通。 二、测试环境配置 云池vpc名称vpc网段子网内网ip/gweip主机名互联网带宽襄阳ceshi192.168.0.0/16192.168.1.0/24192.168.…

unity学习笔记----游戏练习02

一、阳光值的展示和消耗 1.创建一个文本组件用于显示阳光的数值,然后在脚本中得到这个UI。 在SunManger中得到这个组件的引用 public TextMeshProUGUI sunPointText; 写一个用于更新显示的方法 public void UpdataSunPointText() { sunPointText.tex…

FileZilla的使用主动模式与被动模式

🎬 艳艳耶✌️:个人主页 🔥 个人专栏 :《产品经理如何画泳道图&流程图》 ⛺️ 越努力 ,越幸运 目录 一、FileZilla简介 1、FileZilla是什么? 2、FileZilla的应用场景 二、FileZilla的安装 1、下…

JVM篇:JVM内存结构

程序计数器 程序计数器英文名叫:Program Counter Register 作用:用来记录下一条jvm指令的地址行号。 先来查看一段jvm指令,这些指令对应的java代码就是输出1-5 操作系统运行该Java程序时具体流程如下 语言解释:源文件通过编译转…

光伏逆变器MPPT的作用、原理及算法

MPPT是逆变器非常核心的技术,MPPT电压在进行光伏电站设计时一项非常关键的参数。 一、什么是MPPT? (单块光伏组件的I-V、P-V曲线) 上图中,光伏组件的输出电压和电流遵循I-V曲线(绿色)、P-V曲线(蓝色),如果…

NVMe over Fabrics:概念、应用和实现

对于大部分人来说,NVMe over Fabrics(简称NVMf)还是个新东西,因为其第一个正式版本的协议在今年6月份才发布。但是这并不影响人们对NVMf的关注,因为这项依托于NVMe的技术很可能继续改变存储市场格局。 NVMf的贡献在于…

labuladong日常刷题-双指针 | LeetCode 83删除排序链表中的重复元素 5最长回文子串

双指针操作链表与字符串 LeetCode 83 删除排序链表中的重复元素 2023.12.28 题目链接labuladong讲解[链接] ListNode* deleteDuplicates(ListNode* head) {/*暴力求解ListNode* cur new ListNode();ListNode* prenode cur;cur->next head;cur cur->next;while(cu…

web自动化(4)——POM设计重构

1. 什么是POM Page Object Model 是ui自动化测试中常见的封装方式。 原理:将页面封装为PO对象,然后通过面向对象的方式实现UI自动化 2. 封装原则 PO无需包含全部UI元素PO应当验证元素PO不应该包含断言PO不应该暴露元素 3. 怎么进行POM封装 面向对象…

架构设计系列 5:常见架构介绍

前面讲了架构是什么,架构的发展史,架构设计的基础理论,这次针对常见架构设计风格进行介绍和分析。 一、MVC:三层架构经典 经典的 MVC 架构(Model-View-Controller)架构是软件系统架构设计中的经典&#xf…

数据结构与算法教程,数据结构C语言版教程!(第二部分、线性表详解:数据结构线性表10分钟入门)一

第二部分、线性表详解:数据结构线性表10分钟入门 线性表,数据结构中最简单的一种存储结构,专门用于存储逻辑关系为"一对一"的数据。 线性表,基于数据在实际物理空间中的存储状态,又可细分为顺序表&#xff…

NFC物联网构建移动智能仓储系统解决方案

仓储管理作为企业研发生产活动的重要环节,正朝着标准化、信息化方向发展。高新作为典型的资产密集 技术密集型企业,原料样品为代表的资产数量巨大品种繁杂,对仓库管理的实时性及准确性要求较高。传统的人工作业模式和管理方法逐渐难以满足仓储管理对高效…

【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(4)-自制数据集及训练(使用makesense标注数据集)

如何制作和训练自己的数据集 看yolov5官网创建数据集1.搜索需要的图片2.创建标签标注数据集地址:放入图片后选择目标检测创建文档,每个标签写在单独的一行上传结果此处可以编辑类别把车框选选择类别即可导出数据 3.新建一个目录放数据写yaml文件 4. 测试…

【赠书第14期】AI短视频制作一本通:文本生成视频+图片生成视频+视频生成视频

文章目录 前言 1 前期准备 2 拍摄与录制 3 后期编辑 4 技巧与注意事项 5 推荐图书 6 粉丝福利 前言 随着智能技术的迅猛发展,AI 短视频制作成为了一种新兴而创新的表达方式,广泛应用于社交媒体、广告营销、教育培训等领域。本文将介绍 AI 短视频…