python函數(shù)的重新定義及練習(xí)
python函數(shù)
一、函數(shù)定義
函數(shù)是組織好的,可重復(fù)使用的,用來(lái)實(shí)現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。
函數(shù)能提高應(yīng)用的模塊性,和代碼的重復(fù)利用率。
你已經(jīng)知道Python提供了許多內(nèi)建函數(shù)(庫(kù)函數(shù)),比如print()。
但你也可以自己創(chuàng)建函數(shù),這被叫做用戶自定義函數(shù)。
函數(shù)類(lèi)型有:庫(kù)函數(shù)、自定義函數(shù)。
二、自定義函數(shù)
1、自定義函數(shù)規(guī)則:
(1).函數(shù)代碼塊以 def 關(guān)鍵詞開(kāi)頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào)()。
任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間。圓括號(hào)之間可以用于定義參數(shù)。
(2).函數(shù)的第一行語(yǔ)句可以選擇性地使用文檔字符串—用于存放函數(shù)說(shuō)明。
函數(shù)內(nèi)容以冒號(hào)起始,并且縮進(jìn)。
(3).return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方。不帶表達(dá)式的return相當(dāng)于返回 None。
2、一般形式
注:如果沒(méi)有返回值,那么return后面的表達(dá)式可不用寫(xiě)。
三、函數(shù)調(diào)用
定義一個(gè)函數(shù)只給了函數(shù)一個(gè)名稱,指定了函數(shù)里包含的參數(shù)(形式參數(shù)),和代碼塊結(jié)構(gòu)。這個(gè)函數(shù)的基本結(jié)構(gòu)完成以后,你可以通過(guò)另一個(gè)函數(shù)調(diào)用執(zhí)行,也可以直接從Python提示符執(zhí)行。調(diào)用函數(shù)時(shí)的參數(shù),為實(shí)際參數(shù)。
四、參數(shù)
函數(shù)的主要類(lèi)型有:形式參數(shù)、實(shí)際參數(shù),具體如上三中所述
正式參數(shù)類(lèi)型:
1、必備參數(shù)
必備參數(shù)須以正確的順序傳入函數(shù)。調(diào)用時(shí)的數(shù)量必須和聲明時(shí)的一樣。調(diào)用printme()函數(shù),你必須傳入一個(gè)參數(shù),不然會(huì)出現(xiàn)語(yǔ)法錯(cuò)誤。
2、關(guān)鍵字參數(shù)(使用<鍵-值>來(lái)傳參)
關(guān)鍵字參數(shù)和函數(shù)調(diào)用關(guān)系緊密,函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來(lái)確定傳入的參數(shù)值。
使用關(guān)鍵字參數(shù)允許函數(shù)調(diào)用時(shí)參數(shù)的順序與聲明時(shí)不一致,因?yàn)?Python 解釋器能夠用參數(shù)名匹配參數(shù)值。
3、默認(rèn)參數(shù)
調(diào)用函數(shù)時(shí),默認(rèn)參數(shù)的值如果沒(méi)有傳入,則被認(rèn)為是默認(rèn)值。
4、不定長(zhǎng)參數(shù)(可變長(zhǎng)參數(shù))
你可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)。這些參數(shù)叫做不定長(zhǎng)參數(shù),和上述2種參數(shù)不同,聲明時(shí)不會(huì)命名。
五、變量作用域
定義在函數(shù)內(nèi)部的變量擁有一個(gè)局部作用域,定義在函數(shù)外的擁有全局作用域。
局部變量只能在其被聲明的函數(shù)內(nèi)部訪問(wèn),而全局變量可以在整個(gè)程序范圍內(nèi)訪問(wèn)。調(diào)用函數(shù)時(shí),所有在函數(shù)內(nèi)聲明的變量名稱都將被加入到作用域中。如下實(shí)例:
六、函數(shù)的遞歸調(diào)用
例題(n的階乘):
遞推歸納:將問(wèn)題轉(zhuǎn)化為比原問(wèn)題小的同類(lèi)規(guī)模,歸納出一般遞推公式,故所處理的對(duì)象要有規(guī)律的遞增或遞減。
遞歸終止:當(dāng)規(guī)模小到小規(guī)模到一定程度應(yīng)該結(jié)束遞歸調(diào)用,逐層返回常用語(yǔ)句條件來(lái)控制何時(shí)結(jié)束遞歸。
注:原問(wèn)題層層分解為類(lèi)似的子問(wèn)題。
python的文件操作
Python提供了文件對(duì)象,并內(nèi)file_object =open(path,mode)。置了open函數(shù)來(lái)獲取一個(gè)文件對(duì)象。Open函數(shù)的使用:其中,file_object是調(diào)用open函數(shù)后得到的文件對(duì)象;path是一個(gè)字符串,代表要打開(kāi)文件的路徑;而mode是打開(kāi)文件的模式,常用的模式如下表所示。
在os.py中要打開(kāi)Task1文件進(jìn)行讀寫(xiě),需要使用r+模式,實(shí)現(xiàn)如下:f = open(’./Task1’,‘r+’)。簡(jiǎn)單一個(gè)語(yǔ)句便實(shí)現(xiàn)了打開(kāi)文件的操作,之后對(duì)該文件的操作只需對(duì)新得到的文件對(duì)象f,使用文件對(duì)象提供的方法即可。
常用方法:
例題:
實(shí)例1將文件Task1的內(nèi)容全部讀入到fls列表中。實(shí)例二要將文件首字符為“3”的行中每一個(gè)數(shù)字加起來(lái),不包括3,即“10 5 19 20 37”;然后,將結(jié)果寫(xiě)入到文件末尾。
分析:
首先要獲取首字符3,為此,可以用格的listsplit()函數(shù)將每一行字符串按空格分解為每個(gè)元素不包含空。然后判斷l(xiāng)ist[0]是不是字符3。然后需要計(jì)算該list從1號(hào)元素開(kāi)始的所有元素的和。最后,需要將結(jié)果寫(xiě)回文件,所以,文件的打開(kāi)方式應(yīng)為“r+”。
#<程序:讀取文件os.py,計(jì)算并寫(xiě)回> f = open("./Task1.txt",'r+'); fls = f.readlines() for line in fls: line = line.strip() lstr = line.split() if lstr[0] == '3': res = 0 for e in lstr[1:]: res+=int(e) f.write('\n4 '+str(res)); f.close()
課后作業(yè)
習(xí)題1:
#<程序:第三次培訓(xùn)作業(yè)1> def cf(x,n): if n==0: f=1; else: f=x*x**(n-1) return f x=int(input("請(qǐng)輸入x值:")) n=int(input("請(qǐng)輸入n值:")) f=cf(x,n) print("x的n次方的值為:",f)
習(xí)題2:
#<第三次培訓(xùn)作業(yè)2> def age(n): if n==1: a=10 else: a=age(n-1)+2 return a print(age(5))
總結(jié)
本篇文章就到這里了,希望能夠給你帶來(lái)幫助,也希望您能夠多多關(guān)注腳本之家的更多內(nèi)容!
相關(guān)文章
python神經(jīng)網(wǎng)絡(luò)Densenet模型復(fù)現(xiàn)詳解
這篇文章主要為大家介紹了python神經(jīng)網(wǎng)絡(luò)Densenet模型復(fù)現(xiàn)詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-05-05python動(dòng)態(tài)加載技術(shù)解析
這篇文章主要介紹了python動(dòng)態(tài)加載技術(shù)解析,說(shuō)簡(jiǎn)單點(diǎn)就是,如果開(kāi)發(fā)者發(fā)現(xiàn)自己的代碼有bug,那么他可以在不關(guān)閉原來(lái)代碼的基礎(chǔ)之上,動(dòng)態(tài)替換模塊替換方法一般用reload來(lái)完成,需要的朋友可以參考下2023-07-07Python使用Beautiful Soup包編寫(xiě)爬蟲(chóng)時(shí)的一些關(guān)鍵點(diǎn)
這篇文章主要介紹了Python使用Beautiful Soup包編寫(xiě)爬蟲(chóng)時(shí)的一些關(guān)鍵點(diǎn),文中講到了parent屬性的使用以及soup的編碼問(wèn)題,需要的朋友可以參考下2016-01-01使用Jest?在?Visual?Studio?Code?中進(jìn)行單元測(cè)試的流程分析
Jest是一個(gè)流行的JavaScript測(cè)試框架,它提供了簡(jiǎn)潔、靈活和強(qiáng)大的工具來(lái)編寫(xiě)和運(yùn)行單元測(cè)試,今天通過(guò)本文給大家介紹使用Jest在Visual Studio Code中進(jìn)行單元測(cè)試的流程分析,感興趣的朋友跟隨小編一起看看吧2023-07-07Python基礎(chǔ)練習(xí)之用戶登錄實(shí)現(xiàn)代碼分享
這篇文章主要介紹了Python基礎(chǔ)練習(xí)之用戶登錄實(shí)現(xiàn)代碼分享,還是比較不錯(cuò)的,這里分享給大家,供需要的朋友參考。2017-11-11如何用GAN訓(xùn)練自己的數(shù)據(jù)生成新的圖片
這篇文章主要介紹了如何用GAN訓(xùn)練自己的數(shù)據(jù)生成新的圖片問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-03-03使用python對(duì)文件中的單詞進(jìn)行提取的方法示例
這篇文章主要介紹了使用python對(duì)文件中的單詞進(jìn)行提取的方法示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2018-12-12