Python基础教程:装饰器的详细教程
前言
嗨喽,大家好呀~这里是爱看美女的茜茜呐

一、什么是装饰器
目的:给func()方法,增加一个功能,在fun()执行期间,同时把fun()执行速率机算出来
import time
def func():print('嘻嘻哈哈')start_time = time.time()
time.sleep(0.1)
func()
end_time = time.time()
print('----> 执行效率%s'%(end_time - start_time))
👇 👇 👇 更多精彩机密、教程,尽在下方,赶紧点击了解吧~
python源码、视频教程、插件安装教程、资料我都准备好了,直接在文末名片自取就可
如果,我们给fun1,fun2,fun3,实现相同的功能呢?
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func():print('嘻嘻哈哈')def timmer(f):start_time = time.time()time.sleep(0.1)f()end_time = time.time()print('----> 执行效率%s'%(end_time - start_time))f = func
func = timmer
func(f)
但是,每次都需要将函数作为函数,传递给timmer(),而且这种方式已经破坏了原有的逻辑结构,之前的逻辑结构,是执行fun的同时,计算执行效率,但是现在是把fun传给第三方函数,进行计算。
怎么解决这种问题呢,装饰器。
装饰器就是:在不改动原函数代码前提下,增加额外的功能,装饰的返回值也是一个函数对象。
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def func():print('嘻嘻哈哈')def timmer(f):start_time = time.time()time.sleep(0.1)f()end_time = time.time()print('----> 执行效率%s'%(end_time - start_time))return timmerf = timmer(func)
f()
@语法糖 : 在定义函数的时候使用,避免再一次赋值操作。
代码修改如下:
def timmer(f):start_time = time.time()time.sleep(0.1)f()end_time = time.time()print('----> 执行效率%s'%(end_time - start_time))return timmer@timmer
def func():print('嘻嘻哈哈')
二、带参数的装饰器
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
import timedef wrapper(f):def inner(*args,**kwargs):start_time = time.time()time.sleep(0.1)f(*args,**kwargs)end_time = time.time()print('----> 执行效率%s' % (end_time - start_time))return inner@wrapper
def fun(a):print("%s嘻嘻哈哈" %(a))@wrapper
def fun1(a,b):print('%s嘻嘻哈哈,%s也跟着嘻嘻哈哈' %(a,b))
三、带返回值的装饰器
'''
学习中遇到问题没人解答?小编创建了一个Python学习交流QQ群:261823976
寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
'''
def wrapper(f):def inner(*args,**kwargs):start_time = time.time()time.sleep(0.1)ret = f(*args,**kwargs)end_time = time.time()print('----> 执行效率%s' % (end_time - start_time))return retreturn inner@wrapper
def fun(a):s = "%s嘻嘻哈哈" %(a)return sprint(name)
总结:
就是 我们调用 fun() 方法,实现原来的功能,并且增加新的功能,前提不能修改源代码。
尾语
上面总结了 Python 调用 JS 的 4 种方式
实际爬虫项目中,一般会先使用 node 命令进行一次测试,确保没问题后,
再使用前 3 种方式的任意一种进行 Python 改写
希望本篇文章有对你带来帮助 🎉,有学习到一点知识~

相关文章:
Python基础教程:装饰器的详细教程
前言 嗨喽,大家好呀~这里是爱看美女的茜茜呐 一、什么是装饰器 目的:给func()方法,增加一个功能,在fun()执行期间,同时把fun()执行速率机算出来 import time def func():print(嘻嘻哈哈)start_time time.time() ti…...
Apache poi xwpf word转PDF中文显示问题解决
原问题解决方法:https://github.com/opensagres/xdocreport/issues/161 POM依赖 <properties><java.version>1.8</java.version><poi.version>3.14</poi.version></properties><dependencies><dependency><gro…...
Gartner发布2024年十大战略技术趋势
今日,Gartner发布了2024年企业机构需要探索的十大战略技术趋势。这十大趋势包括:全民化的生成式;AI 信任、风险和安全管理;AI 增强开发;智能应用;增强型互联员工队伍;持续威胁暴露管理ÿ…...
在UniApp中使用uni.makePhoneCall方法调起电话拨打功能
目录 1.在manifest.json文件中添加权限 2. 组件中如何定义 3.如何授权 4.相关知识点总结 1.在manifest.json文件中添加权限 {"permissions": {"makePhoneCall": {"desc": "用于拨打电话"}} }2. 组件中如何定义 <template>…...
苹果手机怎么刷机?掌握好这个方法!
苹果手机以其优秀的性能与高颜值的设计赢得了一大批用户的喜爱。但是,当手机使用久了以后,难免会出现一些系统问题。在遇到运行不稳定、忘记锁屏密码、软件故障、频繁死机等情况时,我们可能需要对手机进行刷机来解决问题。那么,苹…...
最新ai创作系统CHATGPT系统源码+支持GPT4.0+支持ai绘画(Midjourney)
一、AI创作系统 SparkAi创作系统是基于OpenAI很火的ChatGPT进行开发的Ai智能问答系统AI绘画系统,支持OpenAI GPT全模型国内AI全模型。本期针对源码系统整体测试下来非常完美,可以说SparkAi是目前国内一款的ChatGPT对接OpenAI软件系统。那么如何搭建部署…...
代码随想录算法训练营Day56|动态规划14
代码随想录算法训练营Day56|动态规划14 文章目录 代码随想录算法训练营Day56|动态规划14一、1143.最长公共子序列二、 1035.不相交的线三、53. 最大子序和 动态规划 一、1143.最长公共子序列 class Solution {public int longestCommonSubsequence(String text1, String text2…...
VsCode通过Git History插件查看某个页面的版本修改记录
首先需要安装插件Git History 方式一:通过 点击File History 查看某个文件变更;即通过commit的提交记录去查看某个文件的修改 方式二:通过点击选择toggle File Blame 查看当前页面每一行所有提交修改记录...
事件循环(渡一)
一、事件循环 浏览器有哪些进程和线程 浏览器是一个多进程多线程的应用程序,当启动浏览器后,会默认启动多个进程 可以在浏览器任务管理器中查看所有进程 其中最主要的进程有: 浏览器进程 主要负责界面展示,用户交互,…...
eNSP在hybrid接口上配置vlan
一、什么是vlan VLAN(Virtual Local Area Network,虚拟局域网)是一种通信技术,它可以将一个物理的局域网在逻辑上划分成多个广播域。每个VLAN都是一个广播域,VLAN内的主机可以直接通信,而VLAN之间则不能直…...
行为型模式-迭代器模式
迭代器模式是 Java 和 .Net 编程环境中非常常用的设计模式。这种模式用于顺序访问集合对象的元素,不需要知道集合对象的底层表示。 意图:提供一种方法顺序访问一个聚合对象中各个元素, 而又无须暴露该对象的内部表示。 主要解决:不同的方式…...
华为云应用中间件DCS系列—Redis实现(电商网站)秒杀抢购示例
云服务、API、SDK,调试,查看,我都行 阅读短文您可以学习到:应用中间件系列之Redis实现(电商网站)秒杀抢购示例 1 什么是DEVKIT 华为云开发者插件(Huawei Cloud Toolkit)&…...
EasyExcel导出带有下拉框的表头模板
1.接口层 ApiOperation("其他费用配置-模版下载")GetMapping("/downloadTemplate")public void downloadTemplate(HttpServletResponse response) {try {List<String> list Arrays.asList("集团", "平台", "部门", &…...
fastadmin找不到后台控制器。登录之后找不到后台控制器
nginx加配置项 伪静态那块 location / { if (!-e KaTeX parse error: Expected }, got EOF at end of input: … rewrite ^(.*) /index.php?s 1 l a s t ; b r e a k ; r e w r i t e ( . ? p ˙ h p ) ( / . ) 1 last; break; rewrite ^(.?\.php)(/.) 1last;break;rewrit…...
浅谈智能操控及无线测温产品在马来西亚理文造纸雪邦热电站项目中的应用
摘要:为避免因电线接头松动、电缆老化等引发高温造成火灾,所造成的的经济损失巨大,在一些电气设备如大电流电缆设备节点、电力设备局部异常升温部位、开关柜的动静触头,进线与出线母排接点、整流柜中的电气接点、变压器节点、变电…...
打开 Java 新的大门,Solon v2.5.10 发布
Solon 是什么框架? Java 生态级应用开发框架。从零开始构建,有自己的标准规范与开放生态(历时五年,具备全球第二级别的生态规模)。与其他框架相比,解决了两个重要的痛点:启动慢,费内…...
unity动画_UI动画案例 c#
首先我们打开一个项目 在这个初始界面我们需要做一些准备工作 创建基础通用包 在场景上创建一个Cube 选中Cube 在Window下点击Animation拖拽至运行窗口 点击创建 保存后 这个操作是给Cube添加了一个组件 对Cube_添加一个Position动画 设置几个帧位置的坐标(x,y,z)值 点击运行测…...
“岗课赛证”融通的物联网综合实训室建设方案
一、概述 随着5G技术的普及应用和产业经济的革新发展,物联网产业所呈现的广阔前景带来了对创新型技术技能人才的迫切需求。高职院校物联网专业建设也因此转变为面向国家战略性新兴产业发展需求。当前,“岗位课程竞赛证书”融通的培育理念,是高职院校物联网人才培养和专业优化的…...
Python自动化运维实战——Telnetlib和Netmiko自动化管理网络设备
❤️博客主页: iknow181🔥系列专栏: Python、JavaSE、JavaWeb、CCNP🎉欢迎大家点赞👍收藏⭐评论✍ 目录 一、前言 二、准备工作 三、Telnetlib Telnetlib介绍 Telnetlib模块及操作方法介绍 Telnetlib配置设备 T…...
中文编程开发语言工具开发的实际软件案例:称重管理系统软件
中文编程开发语言工具开发的实际软件案例:称重管理系统软件 中文编程开发语言工具开发的实际软件案例:称重管理系统软件,软件可以安装在电脑上,也可以安装在收银机上,支持触摸和鼠标点,想学编程可以关注系统…...
对在aarch64 Linux环境编译安装的CinderX补充测试
前文最后说,CinderX报错不能用,这不对,我在其github存储库上提了这个issue,alexmalyshev回复 I think that’s actually just a warning that you’re getting but things should be working after that?Right, this is just a l…...
专治写作卡点!这几款 AI 续写软件,让论文写作像呼吸一样简单
写论文最怕卡壳?大纲想破头、续写没思路、降重改到哭,还怕 AI 痕迹露馅?2026 年这几款 AI 续写软件,直击本科生、研究生核心痛点,从选题到答辩一站式搞定,让写作效率翻倍!一、PaperRedÿ…...
GprMax正演模拟避坑指南:从‘空白结果’到‘清晰双曲线’,我踩过的雷都在这了
GprMax正演模拟避坑指南:从异常结果到专业级图像的实战手册 第一次看到GprMax模拟结果窗口弹出全空白图像时,我盯着屏幕足足愣了三分钟——明明参数设置合理,模型构建完整,为什么输出的雷达图像就像被擦除了一样?这种经…...
新手入门:借助快马AI生成lostlife交互示例学习前端开发
作为一个刚接触前端开发的新手,我最近想尝试做一个简单的网页互动项目。在网上看到类似lostlife这样的互动游戏后,特别想了解它们是如何实现基础交互功能的。经过一番摸索,我发现用InsCode(快马)平台可以很轻松地实现这个想法,下面…...
从星链到遥感卫星:工程师视角下的轨道摄动实战避坑指南
低轨星座与遥感卫星的轨道摄动实战:工程师避坑手册 当SpaceX的星链卫星以每分钟一颗的速度被发射入轨,当高分系列遥感卫星的成像精度突破亚米级,轨道摄动这个曾经只存在于教科书中的概念,正在成为每个航天工程师的日常挑战。不同…...
【Word排版】制表位实战:从入门到精通
1. 制表位到底是什么?为什么比空格更好用? 第一次用Word排简历时,我盯着参差不齐的工作经历栏发愁——明明按了20次空格键,为什么第二行的日期还是对不齐?直到同事教我按住Tab键,所有内容突然像军训列队般整…...
League Akari:英雄联盟玩家的智能游戏伴侣,如何用开源工具提升你的竞技体验
League Akari:英雄联盟玩家的智能游戏伴侣,如何用开源工具提升你的竞技体验 【免费下载链接】League-Toolkit An all-in-one toolkit for LeagueClient. Gathering power 🚀. 项目地址: https://gitcode.com/gh_mirrors/le/League-Toolkit …...
基于半同步整流的磁耦合无线充电系统最大效率跟踪研究
基于半同步整流的磁耦合无线充电系统最大效率跟踪研究 摘要 与传统插入式电力电子系统相比,磁耦合无线电力传输(WPT)系统因具有无电气接触、环境适应性强、使用便捷等优势,在电动汽车、消费电子及生物医疗等领域展现出广阔的应用前景。然而,在实际应用中,负载阻抗变化和…...
Qwen3-14B私有AI助手搭建:WebUI可视化界面+本地知识库集成指南
Qwen3-14B私有AI助手搭建:WebUI可视化界面本地知识库集成指南 1. 为什么选择Qwen3-14B私有部署 想象一下,你有一个24小时待命的AI助手,不仅能回答各种专业问题,还能根据你的业务需求进行定制化服务。这就是Qwen3-14B私有部署能为…...
革新性STL文件管理工具:让3D模型预览效率提升80%的Windows解决方案
革新性STL文件管理工具:让3D模型预览效率提升80%的Windows解决方案 【免费下载链接】STL-thumbnail Shellextension for Windows File Explorer to show STL thumbnails 项目地址: https://gitcode.com/gh_mirrors/st/STL-thumbnail 问题发现:3D设…...
