函數(shù)是組織好,可重復(fù)使用的,用來實現(xiàn)相關(guān)功能的代碼段
創(chuàng)新互聯(lián)公司"三網(wǎng)合一"的企業(yè)建站思路。企業(yè)可建設(shè)擁有電腦版、微信版、手機(jī)版的企業(yè)網(wǎng)站。實現(xiàn)跨屏營銷,產(chǎn)品發(fā)布一步更新,電腦網(wǎng)絡(luò)+移動網(wǎng)絡(luò)一網(wǎng)打盡,滿足企業(yè)的營銷需求!創(chuàng)新互聯(lián)公司具備承接各種類型的成都網(wǎng)站設(shè)計、網(wǎng)站建設(shè)項目的能力。經(jīng)過10多年的努力的開拓,為不同行業(yè)的企事業(yè)單位提供了優(yōu)質(zhì)的服務(wù),并獲得了客戶的一致好評。
函數(shù)提高了代碼的重復(fù)利用率和應(yīng)用的模塊性。
除Python自帶的函數(shù)之外,也可以自己創(chuàng)建函數(shù),叫做自定義函數(shù)
語法:
函數(shù)代碼塊以 def 開頭
參數(shù)為 輸入值 ,放于函數(shù)名后口號里面,
函數(shù)內(nèi)容以冒號:開始,函數(shù)體縮進(jìn), return 返回 輸出值
函數(shù)調(diào)用使用關(guān)鍵字參數(shù)來確定傳入的參數(shù)值,此時,如果多個函數(shù)則不需要按照指定順序。
在定義函數(shù)時,指定參數(shù)默認(rèn)值。調(diào)用時如果不傳入?yún)?shù),則使用默認(rèn)值
不定長部分如果沒有指定參數(shù),傳入是一個空元組
加了 兩個星號 ** 的參數(shù)會以字典的形式導(dǎo)入
/ 用來指明函數(shù)形參必須使用指定位置參數(shù),不能使用關(guān)鍵字參數(shù)的形式。
3.8版本之后的才能使用
不使用 def 定義函數(shù),沒有函數(shù)名
lamdba主體時一個表達(dá)式,而不是代碼塊,函數(shù)體比def簡單很多
定義在函數(shù)內(nèi)部的為局部變量,僅能在函數(shù)內(nèi)部使用
定義在函數(shù)外部的為全局變量,可在全局使用
模塊是將包含所有定義的函數(shù)和變量的文件,一般將同類功能的函數(shù)組和在一起稱為模塊。
模塊需要導(dǎo)入后,在調(diào)用相應(yīng)函數(shù)進(jìn)行使用
模塊導(dǎo)入的方法:
從模塊中導(dǎo)入一個指定的部分
把一個模塊的所有內(nèi)容全都導(dǎo)入
定義:
def 函數(shù)名(形參1,形參2='初始定義的內(nèi)容'):
函數(shù)中執(zhí)行的內(nèi)容
調(diào)用:
函數(shù)名(實參1)或函數(shù)名(形參2=實參2,形參1=實參1)或函數(shù)名(實參1,實參2)
這里來給大家演示一下,函數(shù)的定義或構(gòu)造,并調(diào)用函數(shù)來實現(xiàn)封裝后的效果。
首先我們來看看想實現(xiàn)下面的這個效果,如果不使用函數(shù)應(yīng)該怎么實現(xiàn)。
以上兩種返回結(jié)果都是1-9這幾個數(shù)字。
以上兩種方法,第一種代碼重復(fù)率太高,代碼美觀效果太差,雖然能實現(xiàn)效果,但是因為數(shù)量比較少,還能手工打出來這幾行代碼,如果是打印1-100000就很難實現(xiàn)了。這時候for循環(huán)還是可以實現(xiàn)的,但是for循環(huán)只能實現(xiàn)類似的數(shù)字和變量循環(huán),無法進(jìn)行復(fù)雜的功能開發(fā)。鑒于此,函數(shù)這個概念就被python引入了,下面先來看看函數(shù)是怎么實現(xiàn)上面的效果的,還是兩種方法。
這時候如果想實現(xiàn)上面的打印結(jié)果就直接使用函數(shù)名+小括號調(diào)用函數(shù)就可以了,這種類型的語法,不僅可以反復(fù)使用,而且封裝后的代碼更美觀。
python中定義函數(shù)的關(guān)鍵字是def。
Python使用def關(guān)鍵字開始函數(shù)定義,緊接著是函數(shù)名,括號內(nèi)部為函數(shù)的參數(shù),內(nèi)部為函數(shù)的具體功能實現(xiàn)代碼,如果想要函數(shù)有返回值, 在expressions中的邏輯代碼中用return返回。
上面我們定義了一個名字為 function 的函數(shù),函數(shù)沒有不接受參數(shù),所以括號內(nèi)部為空,緊接著就是 函數(shù)的功能代碼。
如果執(zhí)行該腳本,發(fā)現(xiàn)并沒有輸出任何輸出,因為我們只定義了函數(shù),而并沒有執(zhí)行函數(shù)。 這時我們在Python命令提示符中輸入函數(shù)調(diào)用 function(), 注意這里調(diào)用函數(shù)的括號不能省略。
python的學(xué)習(xí)
如果我們用代碼實現(xiàn)了一個小功能,但想要在程序代碼中重復(fù)使用,不能在代碼中到處粘貼這些代碼,因為這樣做違反了軟件工程中DRY原則。 Python提供了函數(shù)功能,可以將我們這部分功能抽象成一個函數(shù)以方便程序調(diào)用,或者提供給其他模塊使用。
函數(shù)是組織好的,可重復(fù)使用的,用來實現(xiàn)單一,或相關(guān)聯(lián)功能的代碼段。(推薦學(xué)習(xí):Python視頻教程)函數(shù)必須先定義,才能調(diào)用,否則會報錯,無參數(shù)時函數(shù)的調(diào)用函數(shù)名()。
有參數(shù)時函數(shù)的調(diào),不要在定義函數(shù)的時候在函數(shù)體里面調(diào)用本身,否則會出不來,陷入循環(huán)調(diào)用,函數(shù)需要調(diào)用函數(shù)體才會被執(zhí)行,單純的只是定義函數(shù)是不會被執(zhí)行的。
Python 有很多有用的內(nèi)置函數(shù), 但還是不能滿足程序員的需求, 所以需要 自定義函數(shù) 。
如何編寫 自定義函數(shù) , 需要用到 def語句, 函數(shù)名, 括號及參數(shù), 冒號, 函數(shù)說明,內(nèi)置縮進(jìn)編碼模塊,return 語句 , 其中有一些也可省略不寫,后面會慢慢介紹。
編寫函數(shù)不可或缺的元素, 一定都要寫。函數(shù)名盡量寫得簡單易懂。
一般是對函數(shù)的描述說明。
這是編寫具體的 操作命令 的地方, 如果還未想好如何編寫, 可以使用 pass 來占位,讓程序可以運(yùn)行起來,防止調(diào)試出錯。
參數(shù)放在最后講, 是因為這里面的東西還是很多的。首先看個例子。
如上的案例都是限制了參數(shù)個數(shù)的, 最多傳三個參數(shù) name/age/city , 但是如果有一些特例,需要傳多個參數(shù)怎么辦呢。 參數(shù)前面加個 * , 變成 可變參數(shù) 。
那如果想要傳多個包含名稱的參數(shù),例如a=1,b=2,c=3......,那該怎么寫呢。參數(shù)前面加個 ** , 變成 關(guān)鍵字參數(shù) 。
def 函數(shù)名():? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ??
? ?函數(shù)體? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
? ?return? 返回值? ? ? ? ? ? ? ? ? ? ? ? ? ??
def 函數(shù)名(非可選參數(shù),可選參數(shù)):
???函數(shù)體?
return 返回值
def 函數(shù)名(參數(shù),*b):
? ? 函數(shù)體
? ? return 返回值
函數(shù)名 = lambda 參數(shù) : 表達(dá)式
例1:f = lambda x , y? :? x + y? ? ? ? ? ? ? ? ? ? ? ??
調(diào)用:f(6 + 8)? ? ?輸出:14? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
例2:?f = lambda : "沒有參數(shù)的lambda函數(shù)!"
調(diào)用:?print(f())? ? 輸出: 沒有參數(shù)的lambda函數(shù)!