版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
函數(shù)即變嵌套函閉函數(shù)即變嵌套函閉高階函Python中變量賦值及調(diào)1.總結(jié):變量保存的不是變量對(duì)應(yīng)的真實(shí)值,而是真實(shí)值所被存放的內(nèi)存空間地址,這也就意味著變量的調(diào)用需要通過調(diào)用地址(門牌號(hào))來實(shí)現(xiàn)。將變量延伸到函數(shù),函數(shù)和函數(shù)的參數(shù)都屬于變量,調(diào)用函數(shù)進(jìn)行參數(shù)傳遞時(shí),是對(duì)函數(shù)和參輸出:2370871767087176#向相同2425708219226134817899227輸出:2370871767087176#向相同2425708219226134817899227<functionfoo10x00000000006C10D0>28297082192304817899231<functionfoo1at1list1=['Python','PHP','JAVA']2list2=3print(id(list1),'========',id(list2))4 7deffoo1(x): print(id(foo1)) nt(id(x)) print(foo1)111213deffoo2():pass1516foo1(foo2())17print('---------')18nt(id(foo1))19print(id(foo2()))20print(foo1)21四、裝飾器的作用和應(yīng)用場(chǎng)著名的設(shè)計(jì)模式,經(jīng)常被用于有切面需求的場(chǎng)景,較為經(jīng)典四、裝飾器的作用和應(yīng)用場(chǎng)著名的設(shè)計(jì)模式,經(jīng)常被用于有切面需求的場(chǎng)景,較為經(jīng)典的有插入日志、性能測(cè)試、事務(wù)處理五、定義和使用裝飾器的原行1112@timmer13deftest1(): time.sleep(3) print('inthetest1'16行1112@timmer13deftest1(): time.sleep(3) print('inthetest1'1617test11819出:20inthe #原生方式調(diào)用執(zhí)行被裝飾的函數(shù)21funcruntimeis3.000171661376953ime)) return 1importtime2deftimmer(func): ime.time() func() stop_time=time.time()print('thefuncruntimeis%s'%(stop_time- returnwarpperrint('thefuncruntimeis%s'%(stop_time-被裝飾的函數(shù) stop_time=time.time() start_time=time.time() func(遞被裝飾的函數(shù) defwarpper(*args,**kwargs):1importtime 4deftimmer(func):#接返回timmer自身 910@timmer111213def():接返回timmer自身 910@timmer111213def(): time.sleep(3) print('inthetest1')test11718程序輸出:19inthetest120y",line20,in<module>23 test1()24TypeError:timmer()missing1requiredpositionalargument:'func'數(shù)func:改編后的程序的返回值是timmer本身,而我們?cè)诙xtimmer函數(shù)時(shí)已經(jīng)為其定義了一個(gè)參數(shù)func,因此報(bào)出缺少參數(shù)錯(cuò)1importtime2deftimmer(func): def #這里故意為內(nèi)層函數(shù)定義一個(gè)參數(shù) print(x) print('inthetest1'1516test11718輸出:19Traceback(mostrecentcalllast): Fileuiredpositionalargument:E:/Python_Programs/S13/day4/deco2.py",line18,inle> test1()22TypeError:warpper()missing1start_time=time.time() func()stop_time=time.time() print('thefuncntimeis%s'%(stop_time-start_time)) returnpper1011@timmer12deftest1(): (mostrecentcalllast):21thefuncruntimeis166137695322File器函數(shù)本身已經(jīng)被固化了,必須且只能傳入func一個(gè)參數(shù)以便將被裝飾器函數(shù)本身已經(jīng)被固化了,必須且只能傳入func一個(gè)參數(shù)以便將被裝飾器的返回值,內(nèi)層(第二層)函數(shù)負(fù)責(zé)執(zhí)行具體的裝飾功能,而外層原文地址義的返回值就是內(nèi)層實(shí)際原生態(tài)調(diào)用被裝飾函數(shù)和執(zhí)行額外裝飾功能的內(nèi)層嵌套用時(shí)程序會(huì)報(bào)“TypeError:'NoneType'objectisnotcallable”的錯(cuò)誤。一個(gè)既定的事實(shí)是,盡管實(shí)際執(zhí)行裝飾功能的函稍微注意一下細(xì)節(jié)不難發(fā)現(xiàn),裝飾器定義后會(huì)通過@decorator的方式來調(diào)用,這一聲明往往在被裝飾的函數(shù)(test1),這也是裝飾器會(huì)返回一個(gè)替換函數(shù)的精髓所在。這里的有兩個(gè)細(xì)節(jié)需要注意:裝飾數(shù))return回去以便后續(xù)調(diào)用裝飾;內(nèi)層完成對(duì)被裝飾的函數(shù)的原生態(tài)調(diào)用和自定義的額外裝飾功能;值演示七、裝飾器程序示例(器自帶參數(shù)nwrapper和增加額外裝飾功能的邏輯,注意這里返回的是函數(shù)名(門牌號(hào)) 9@deco110deftest1():nwrapper和增加額外裝飾功能的邏輯,注意這里返回的是函數(shù)名(門牌號(hào)) 9@deco110deftest1(): print('Thisisrtest'1213test1()#test1 函數(shù)體(test1進(jìn)行賦值處理)1415序輸出:16Begin17Thisisfortest18End個(gè)裝飾器看著沒有太大的實(shí)際意義甚至有點(diǎn)low,但足以演示裝飾器的過程了。方式是原生態(tài)的 print('End-----') defwrapper(): print('Begin----')1def 1author=2#!/usr/bin/env3#!-*-coding:utf-8-456def#Argumentsare('a','b'){'z':'c'}1author=2#!/usr/bin/env3#!-*-coding:utf-8-456def#Argumentsare('a','b'){'z':'c'}不變2122程序輸出:23Begintodecorate..24aaatest2('a''bz='c')#ret=func(*args,**kwargs) entsare%s%s'%(args,kwargs)) returnt returnwrapper131415@dec216def(x,y,z): print('aaa') return219處理 print('Begintodecorate...')rgs**kwargs):#外層函數(shù)只能處理被裝飾的函數(shù)這一個(gè)參數(shù) def1defdeco(limit):#數(shù)來引入 defdec2(func):#接收處理被裝飾的函數(shù)變 def1defdeco(limit):#數(shù)來引入 defdec2(func):#接收處理被裝飾的函數(shù)變 defwrapper(*args**kwargs數(shù)傳遞的參數(shù),邏輯不變 print('Begintoer returndec2131415@deco(2)#最后的輸出結(jié)果16deftest2(x,y,z):17 ')18 return21920test2('a','b',z='c')2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 互聯(lián)網(wǎng)公司實(shí)習(xí)生協(xié)議
- 歐式酒店羅馬柱施工合同
- 照明工程人工費(fèi)施工合同
- 會(huì)計(jì)實(shí)習(xí)生聘用合同
- 企業(yè)社會(huì)責(zé)任績(jī)效
- 糖尿病的健康管理方案設(shè)計(jì)
- 工程項(xiàng)目合同質(zhì)量管理情況記錄
- 電子產(chǎn)品測(cè)試顧問協(xié)議
- 工程施工轉(zhuǎn)讓合同協(xié)議
- 2022年大學(xué)工程力學(xué)專業(yè)大學(xué)物理下冊(cè)期中考試試題B卷-附解析
- 2024年大學(xué)生就業(yè)創(chuàng)業(yè)知識(shí)競(jìng)賽題庫(kù)及答案(共350題)
- 基于SICAS模型的區(qū)域農(nóng)產(chǎn)品品牌直播營(yíng)銷策略研究
- 《算法設(shè)計(jì)與分析基礎(chǔ)》(Python語(yǔ)言描述) 課件 第6章分支限界法
- 病例討論英文
- 2024秋期國(guó)家開放大學(xué)??啤兑簤号c氣壓傳動(dòng)》一平臺(tái)在線形考(形考任務(wù)+實(shí)驗(yàn)報(bào)告)試題及答案
- 個(gè)人健康管理平臺(tái)使用操作教程
- 【課件】植物體的結(jié)構(gòu)層次課件-2024-2025學(xué)年人教版生物七年級(jí)上冊(cè)
- 24秋國(guó)家開放大學(xué)《0-3歲嬰幼兒的保育與教育》期末大作業(yè)參考答案
- 相對(duì)濕度計(jì)算公式
- 新版《鐵道概論》考試復(fù)習(xí)試題庫(kù)(含答案)
- 2024版腫瘤患者靜脈血栓防治指南解讀 課件
評(píng)論
0/150
提交評(píng)論