电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

python裝飾器三種裝飾模式的簡單分析

瀏覽:13日期:2022-07-12 11:23:55

學設計模式中有個裝飾模式,用java實現起來不是很難,但是遠遠沒有python簡單,難怪越來越火了!

這里就簡單討論下python的幾種裝飾模式:

一 無參裝飾器:

# 裝飾器import time # 裝飾器,記錄函數運行時間def decorator01(fun): def wapper(): stime = time.time() fun() etime = time.time() print('fun run time is {TIME}'.format(TIME=etime - stime)) return wapper # 必須要返回一個函數的內存地址 # 使用裝飾器裝飾某個函數,等價于 test01=decorator01(test01),# 即將test01實際引用變成wapper函數內存地址,所以執行test01實際是執行wapper@decorator01def test01(): time.sleep(2) print('test01 is running') test01() # 不修改代碼和調用方式,實現添加記錄時間功能

二 函數帶參裝飾器:

# 裝飾器import time # 裝飾器,記錄函數運行時間def decorator01(fun): def wapper(*args, **kwargs): # 使用非固定參數,無論參數是什么,都可以傳遞進來 stime = time.time() fun(*args, **kwargs) etime = time.time() print('fun run time is {TIME}'.format(TIME=etime - stime)) return wapper # 必須要返回一個函數的內存地址 # test01() = wapper(), 所以裝飾器加參數是給嵌套函數加參數@decorator01def test01(args1): time.sleep(2) print('參數是 {NAME} '.format(NAME=args1)) test01('侯征') # 不修改代碼和調用方式,實現添加記錄時間功能

三 裝飾器本身帶參數的裝飾器:

# 裝飾器import time # 如果裝飾器有參數,最外層是裝飾器的參數def decorator01(*args, **kwargs): print('裝飾器參數:', *args, **kwargs) def out(fun): #第二層才是接受的函數 def wapper(*args, **kwargs): # 使用非固定參數,無論參數是什么,都可以傳遞進來 stime = time.time() fun(*args, **kwargs) etime = time.time() print('fun run time is {TIME}'.format(TIME=etime - stime)) return wapper # 必須要返回一個函數的內存地址 return out # 要返回裝飾函數的內存地址 # 裝飾器本身帶參數,此時 decorator01(arg)=out,即相當于 @out裝飾test01,所以 test01=out(fun)=wapper@decorator01(1)def test01(args1): time.sleep(2) print('參數是 {NAME} '.format(NAME=args1)) test01('侯征') # 不修改代碼和調用方式,實現添加記錄時間功能

這種一開始挺難理解的,但是只要記住一點,@語法糖裝飾器的作用就是 給被裝飾的函數重新賦一個函數的內存地址,即裝飾器內部定義的那個

和你直接fun01=decorator(fun),然后 fun01()是一樣的,只是這樣寫不用改變原來調用方式

@decorator

def fun():

即就是 fun=decorator(fun) 所以,當裝飾器有參數時,還需要返回一個函數,這個函數才是用來裝飾作用的, decorator(1)=out, 即 fun=out(fun) !!

所以外面再包一層就行了,其實就相當于@decorator(1)=@out,即 decorator(1)=out ,實際裝飾器時out,只不過decorator(1)返回了一個out 這樣理解就簡單多了 ,無參的@就是起賦值作用

以上就是python裝飾器三種裝飾模式的簡單分析的詳細內容,更多關于python 裝飾模式的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 找果网 | 苹果手机找回方法,苹果iPhone手机丢了找回,认准找果网! | 高空重型升降平台_高空液压举升平台_高空作业平台_移动式升降机-河南华鹰机械设备有限公司 | 阳光1号桔柚_无核沃柑_柑橘新品种枝条苗木批发 - 苧金网 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 模切之家-专注服务模切行业的B2B平台! | 蜘蛛车-登高车-高空作业平台-高空作业车-曲臂剪叉式升降机租赁-重庆海克斯公司 | 电子书导航网_电子书之家_电子书大全_最新电子书分享发布平台 | 深圳成考网-深圳成人高考报名网| 警方提醒:赣州约炮论坛真的安全吗?2025年新手必看的网络交友防坑指南 | 砂石生产线_石料生产线设备_制砂生产线设备价格_生产厂家-河南中誉鼎力智能装备有限公司 | 质构仪_鱼糜弹性仪-上海腾拔仪器科技有限公司| 油罐车_加油机_加油卷盘_加油机卷盘_罐车人孔盖_各类球阀_海底阀等车用配件厂家-湖北华特专用设备有限公司 | ERP企业管理系统永久免费版_在线ERP系统_OA办公_云版软件官网 | 胶泥瓷砖胶,轻质粉刷石膏,嵌缝石膏厂家,腻子粉批发,永康家德兴,永康市家德兴建材厂 | 高防护蠕动泵-多通道灌装系统-高防护蠕动泵-www.bjhuiyufluid.com慧宇伟业(北京)流体设备有限公司 | 换网器_自动换网器_液压换网器--郑州海科熔体泵有限公司 | 创富网-B2B网站|供求信息网|b2b平台|专业电子商务网站 | 恒温恒湿试验箱厂家-高低温试验箱维修价格_东莞环仪仪器_东莞环仪仪器 | 实验室pH计|电导率仪|溶解氧测定仪|离子浓度计|多参数水质分析仪|pH电极-上海般特仪器有限公司 | 绿萝净除甲醛|深圳除甲醛公司|测甲醛怎么收费|培训机构|电影院|办公室|车内|室内除甲醛案例|原理|方法|价格立马咨询 | 户外健身路径_小区健身器材_室外健身器材厂家_价格-浩然体育 | 冲锋衣滑雪服厂家-冲锋衣定制工厂-滑雪服加工厂-广东睿牛户外(S-GERT) | 法钢特种钢材(上海)有限公司 - 耐磨钢板、高强度钢板销售加工 阀门智能定位器_电液动执行器_气动执行机构-赫尔法流体技术(北京)有限公司 | 心肺复苏模拟人|医学模型|急救护理模型|医学教学模型上海康人医学仪器设备有限公司 | 手机存放柜,超市储物柜,电子储物柜,自动寄存柜,行李寄存柜,自动存包柜,条码存包柜-上海天琪实业有限公司 | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 脱硝喷枪-氨水喷枪-尿素喷枪-河北思凯淋环保科技有限公司 | 等离子表面处理机-等离子表面活化机-真空等离子清洗机-深圳市东信高科自动化设备有限公司 | 双效节能浓缩器-热回流提取浓缩机组-温州市利宏机械 | 艾默生变频器,艾默生ct,变频器,ct驱动器,广州艾默生变频器,供水专用变频器,风机变频器,电梯变频器,艾默生变频器代理-广州市盟雄贸易有限公司官方网站-艾默生变频器应用解决方案服务商 | 德国进口电锅炉_商用电热水器_壁挂炉_电采暖器_电热锅炉[德国宝] | 电气控制系统集成商-PLC控制柜变频控制柜-非标自动化定制-电气控制柜成套-NIDEC CT变频器-威肯自动化控制 | 阿里巴巴诚信通温州、台州、宁波、嘉兴授权渠道商-浙江联欣科技提供阿里会员办理 | 东莞市踏板石餐饮管理有限公司_正宗桂林米粉_正宗桂林米粉加盟_桂林米粉加盟费-东莞市棒子桂林米粉 | 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 | 一技任务网_有一技之长,就来技术任务网 | 金属软管_不锈钢金属软管_巩义市润达管道设备制造有限公司 | 膜结构停车棚-自行车棚-膜结构汽车棚加工安装厂家幸福膜结构 | 塑料托盘厂家直销-吹塑托盘生产厂家-力库塑业【官网】 | 纸箱抗压机,拉力机,脂肪测定仪,定氮仪-山东德瑞克仪器有限公司 | 电动葫芦|手拉葫芦|环链电动葫芦|微型电动葫芦-北京市凌鹰起重机械有限公司 |