函數(shù)、參數(shù)及解構(gòu)Python_第1頁
函數(shù)、參數(shù)及解構(gòu)Python_第2頁
函數(shù)、參數(shù)及解構(gòu)Python_第3頁
函數(shù)、參數(shù)及解構(gòu)Python_第4頁
函數(shù)、參數(shù)及解構(gòu)Python_第5頁
已閱讀5頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

p函 數(shù)學(xué)定義:y=f(x),y是x的函數(shù),x是自變量。y=f(x0,x1,...,pPython函 由若干語句組成的語句塊、函數(shù)名稱、參數(shù)列表構(gòu)成,它是組織代碼的最小 完成一定的功p函數(shù)的作 封裝的目的為了復(fù)用,減少冗余代 代碼更加簡潔美觀、可讀p函數(shù)的分 內(nèi)建函數(shù),如max()、reversed 庫函數(shù),如math.ceil def函數(shù)名(參數(shù)列表函數(shù)體(代碼塊[return返回值 函數(shù)名就是標(biāo)識符,命名要求一 語句塊必須縮進(jìn),約定4個空 Python的函數(shù)沒有return語句,隱式會返回一個None 定義中的參數(shù)列表成為形式參數(shù),只是一種符號表達(dá),簡稱形p調(diào) 函數(shù)定義,只 了一個函數(shù),它不會被執(zhí)行,需要調(diào) 調(diào)用的方式,就是函數(shù)名加上小括號,括號內(nèi)寫上參 調(diào)用時寫的參數(shù)是實(shí)際參數(shù),是實(shí)實(shí)在在傳入的值,簡稱實(shí)p函數(shù)舉 result=x+yreturnresultout= 計算的結(jié)果,通過返回值返 調(diào)用通過函數(shù)名add加2個參數(shù),返回值可使用變量接 定義需要在調(diào)用前,也就是說調(diào)用時,已經(jīng)被定義過了,否則拋NameError異 函數(shù)是可調(diào)用的對象 看看這個函數(shù)是不是通用的?體會一下函數(shù)的 參數(shù)調(diào)用時傳入的參數(shù)要和定義的個數(shù)相匹配(可變參數(shù)例外p位置參pdeff(x,y,z)用使用f(1,3, 按照參數(shù)定義順序傳入實(shí)p關(guān)鍵字參pdeff(x,y,z)用使用f(x=1,y=3, p傳pf(z=None,y=10,pf((1,),z=6,pf(y=5,z=6,2) 要求位置參數(shù)必須在關(guān)鍵字參數(shù)之前傳入,位置參數(shù)是按位置對 參數(shù)默認(rèn)值(缺省值 定義時,在形參后跟上一個defadd(x=4,y=5):returnx+y測試調(diào)用add(6,10)、add(6,y=7)、add(x=5)、add()、add(y=7)、add(x=5,6)、add(y=8,4)、add(x=5,y=6)、add(y=5,x=6)測試定義后面這樣的函數(shù)defp作 參數(shù)的默認(rèn)值可以在未傳入足夠的實(shí)參的時候,對沒有給定的參數(shù)賦值為默 參數(shù)非常多的時候,并不需要用戶每次都輸入所有的參數(shù),簡化函數(shù)調(diào)p舉 定義一個函數(shù)login,參數(shù)名稱為host、port、username、p舉 定義一個函數(shù)login,參數(shù)名稱為host、port、username、print('{}:{}@{}/{}'.format(host,port,username,password))login('',80,'tom',login('',username='root')login('localhost',port=80,password='com')login(port=80,password='magedu',host='www')p問 有多個數(shù),需要累加求defadd(nums):sum=0forxinnums:sum+=xreturnsum傳入一個可迭代對象,迭代元素求p可變參 一個形參可以匹配任意個參 位置參數(shù)的可變參 有多個數(shù),需要累加求defadd(*nums):sum=0forxinnums:sum+=xadd(3,6,9 在形參前使用*表示該形參是可變參數(shù),可以接收多個 收集多個實(shí)參為一個 思考:關(guān)鍵字參數(shù)能否也能傳遞任意多個嗎 關(guān)鍵字參數(shù)的可變參p配置信息打defshowconfig(**kwargs):fork,vinkwargs.items():print('{}={}'.format(k, 形參前使用**符號,表示可以接收多個關(guān)鍵字參 收集的實(shí)參名稱和值組成一個字 可變參數(shù)混合使p配置信息打defshowconfig(username,password,**kwargs)defshowconfig(username,*args,**kwargs)defshowconfig(username,password,**kwargs,p總 有位置可變參數(shù)和關(guān)鍵字可變參 位置可變參數(shù)在形參前使用一個星號 關(guān)鍵字可變參數(shù)在形參前使用兩個星號p 位置可變參數(shù)和關(guān)鍵字可變參數(shù)都可以收集若干個實(shí)參,位置可變參數(shù)收集形成一個tupl,關(guān)鍵字可變參數(shù)收集形成一個t 置可變參數(shù)需要在關(guān)鍵字可變參數(shù)p舉deffn(x,y,*args,fn(7,9,y=5,x=3,a=1,b='python')#錯誤,7和9分別賦給了x,y,又y=5、x=3,重復(fù)p舉deffn(*args,x,y, keyword-only參數(shù)(Python3加入 如果在一個星號參數(shù)后,或者一個位置可變參數(shù)后,出現(xiàn)的普通參數(shù),實(shí)際上已經(jīng)不是普通參數(shù)了,而是keyword-only參deffn(*args,x):args可以看做已經(jīng)截獲了所有的位置參數(shù),x不使用關(guān)鍵字參數(shù)就不可能思考:deffn(**kwargs,x)可以嗎p舉def(**kwargs,直接報語法錯可以理解為kwargs會截獲所有的關(guān)鍵字參數(shù),就算你寫了x=5,x 得不到這個值,所以語錯 keyword-only參數(shù)另一種形deffn(*,*號之后,普通形參都變成了必須給出的keyword-onlyp舉deffn(*args,fn()#等價于p舉deffn(y,*args,print('x={},y={}'.format(x,y))fn(x=6)# fn(1,2,y=3,x=10)#x是keyword-only參p舉deffn(x=5,fn(x=6)#p參數(shù)規(guī) 參數(shù)列表參數(shù)一般順序是,普通參數(shù)、缺省參數(shù)、可變位置參數(shù)、keyword-only參數(shù)(可帶省值)、可變關(guān)鍵字參deffn(x,y,z=3,*arg,m=4,n,**kwargs):p注 代碼應(yīng)該易讀易懂,而不是為難別 請按照書寫習(xí)慣定義函數(shù)參p參數(shù)規(guī)則舉 參數(shù)列表參數(shù)一般順序是,普通參數(shù)、缺省參數(shù)、可變位置參數(shù)、keyword-only參數(shù)(可帶省值)、可變關(guān)鍵字參defconnect(host='localhost',port='3306',user='admin',password='admin',**kwargs):print(host,port)connect(host='23',db='cmdb')connect(host='23',db='cmdb',p舉p加法函defadd(x,y):returnadd(4,5)t=(4,5)add(t[0],add(*t)或

p參數(shù)解 給函數(shù)提供實(shí)參的時候,可以在集合類型前使用*或者**,把集合類型的結(jié)構(gòu)解開,提取出所元素作為函數(shù)的實(shí) 非字典類型使用*解構(gòu)成位置參 字典類型使用**解構(gòu)成關(guān)鍵字參 提取出來的元素數(shù)目要和參數(shù)的要求匹配,也要和參數(shù)的類型defadd(x,returnd={'x':5,'y':

add(**{'a':5,'b': add(*{'a':5,'b': 參數(shù)解構(gòu)和可變參 給函數(shù)提供實(shí)參的時候,可

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論