日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Python的函數(shù)思想及基本用法,劃重點(diǎn)!

 小世界的野孩子 2021-04-30

函數(shù)是一段可重復(fù)使用的、具有特定功能的語句塊,通過函數(shù)名來定義和調(diào)用。經(jīng)過定義,函數(shù)內(nèi)的語句塊成為一個(gè)整體,即“函數(shù)體”,可以通過使用函數(shù)名的調(diào)用從而實(shí)現(xiàn)函數(shù)內(nèi)部語句塊的重復(fù)使用。

在使用過程中,函數(shù)內(nèi)部對(duì)調(diào)用者來說可以是完全未知的黑箱,調(diào)用者只要知道函數(shù)應(yīng)該傳入的參數(shù)是什么、返回的參數(shù)是什么這兩點(diǎn)就可以無障礙調(diào)用。從此方面講,函數(shù)就具有“封裝”性。

使用函數(shù)最大的優(yōu)點(diǎn)是提高代碼的復(fù)用,并且可以進(jìn)行模塊化的程序設(shè)計(jì)。同樣功能的代碼多次使用,可以大幅的節(jié)省編程成本,提高編程效率,降低代碼編程難度。同時(shí),習(xí)慣使用函數(shù)編程,將實(shí)現(xiàn)不同功能的代碼寫成不同的函數(shù),便于將編程問題和具體需求進(jìn)一步細(xì)化,分而治之。

同一個(gè)程序的功能被劃分為不同的小的功能模塊,形成模塊化設(shè)計(jì)布局,不僅使得程序具有很好的可讀性,也便于程序的維護(hù)升級(jí)和兼容性提升。函數(shù)對(duì)內(nèi)部封裝的特性,使得只要在定義函數(shù)的部分更改其函數(shù)體的語句,就能實(shí)現(xiàn)該功能的升級(jí)維護(hù),整個(gè)程序中調(diào)用該函數(shù)的部分也會(huì)得到更新。

1.基本使用

函數(shù)的使用可以包括四個(gè)步驟,即函數(shù)定義、函數(shù)調(diào)用、函數(shù)執(zhí)行、函數(shù)返回。其中函數(shù)的定義部分尤為重要,其直接決定了函數(shù)應(yīng)該怎么調(diào)用、函數(shù)的執(zhí)行過程如何、函數(shù)返回什么值等等。

Python語言通過保留字def定義函數(shù),語法形式如下:

 def <函數(shù)名>(<參數(shù)列表>):

                     <函數(shù)體>

                     return <返回值列表>

函數(shù)名可以是任何P有效的Python標(biāo)識(shí)符。

參數(shù)列表是調(diào)用該函數(shù)時(shí)傳入給函數(shù)的值,可以是某個(gè)數(shù)據(jù)類型的單個(gè)參數(shù),也可以是一個(gè)很多數(shù)據(jù)類型組成的參數(shù)列表,還可以沒有任何參數(shù)(沒有參數(shù)時(shí),括號(hào)也不可以省略),視函數(shù)編寫者的設(shè)計(jì)而定。參數(shù)列表以逗號(hào)分隔即可。

函數(shù)體則由具體的Python代碼塊組成,與前面學(xué)的普通Python代碼沒有任何差異,該代碼塊需要根據(jù)參數(shù)列表執(zhí)行特定操作。

返回值列表是函數(shù)傳出的參數(shù),由return保留字建立,該列表也同參數(shù)列表一樣,可以是任何的數(shù)據(jù)類型和任意數(shù)量大小的列表。當(dāng)返回值列表的元素大小為0時(shí),函數(shù)的執(zhí)行只是對(duì)程序進(jìn)行代碼塊的操作,不返回任何值,return需要省略。

函數(shù)的調(diào)用,通過函數(shù)名來調(diào)用函數(shù)功能,對(duì)函數(shù)的各個(gè)參數(shù)賦予實(shí)際值,實(shí)際值可以是實(shí)際的數(shù)據(jù)值,也可以是在調(diào)用函數(shù)前已經(jīng)定義過的變量。

函數(shù)的執(zhí)行,是參數(shù)傳入以后,程序執(zhí)行函數(shù)體功能代碼的過程,其執(zhí)行過程由函數(shù)體的代碼決定。

函數(shù)返回,函數(shù)執(zhí)行完畢后,函數(shù)將返回值列表返回到程序,并將控制權(quán)返回給程序。

函數(shù)定義及調(diào)用演示如下:


#定義返回三個(gè)數(shù)中的最大值和最小值的函數(shù)
def compare(a,b,c):#定義函數(shù)
    ma = max(a,b,c)
    mi = min(a,b,c)
    return ma,mi#返回兩個(gè)值
x = 1
y = 2
z = 3
#調(diào)用函數(shù)compare,并將兩個(gè)返回值依次賦值給num1,num2
num1,num2 = compare(x,y,z)
print("最大值是{0},最小值是{1}".format(num1,num2))
#輸出結(jié)果為:
最大值是3,最小值是1

函數(shù)的函數(shù)體一定需要書寫至少一行的代碼,當(dāng)不希望函數(shù)做任何事時(shí),可以使用pass保留字。保留字pass表示不進(jìn)行任何操縱,起到占位的作用。演示如下:

def f():#定義空的函數(shù)

    pass

f()#函數(shù)不會(huì)進(jìn)行任何操作

編程中大量使用函數(shù)已經(jīng)成為一種編程范式,叫做函數(shù)式編程。函數(shù)式編程的主要思想是把程序過程盡量寫成一系列函數(shù)調(diào)用,這樣能夠使代碼編寫的更簡(jiǎn)潔易讀,是中小規(guī)模軟件最常用的編程方式。

在Python中,函數(shù)也是有類型的,可以通過type()函數(shù)來獲得函數(shù)類型。函數(shù)類型是Python的內(nèi)置類型,具體為function類型。當(dāng)用type()檢查調(diào)用的函數(shù)的類型時(shí),返回的是函數(shù)返回值的類型。即函數(shù)調(diào)用優(yōu)先執(zhí)行,當(dāng)函數(shù)執(zhí)行完畢,函數(shù)將返回值和控制權(quán)返回給程序,type()函數(shù)檢驗(yàn)的就不再是函數(shù),而是返回值了。

2.參數(shù)傳遞

定義函數(shù)時(shí)參數(shù)列表中的參數(shù),是形參數(shù),沒有實(shí)際意義。調(diào)用函數(shù)時(shí)傳入的參數(shù)是實(shí)參,由出傳入的參數(shù)賦予形參意義來執(zhí)行程序。

函數(shù)的參數(shù)傳遞可以分為三種情況:可選的參數(shù)傳遞、參數(shù)名稱傳遞、函數(shù)的返回值。其中可選的參數(shù)傳遞是指,在傳入?yún)?shù)進(jìn)函數(shù)時(shí),可以省略掉一些參數(shù),省略的參數(shù)用事先規(guī)定的默認(rèn)值代替?zhèn)魅牒瘮?shù)。演示如下:

def compare(a,c,b=2):#使用b-2規(guī)定如果缺失b,則默認(rèn)b=2
    ma = max(a,b,c)
    mi = min(a,b,c)
    return ma,mi
x = 1
z = 3
num1,num2 = compare(x,z)#與上一例子相比省略了y
print("最大值是{0},最小值是{1}".format(num1,num2))
#輸出結(jié)果如下:
最大值是3,最小值是1

根據(jù)編程習(xí)慣,一般情況下參數(shù)列表都是先寫非可選參數(shù),可選參數(shù)放在后面。可選參數(shù)放在前面會(huì)報(bào)錯(cuò),親測(cè)。

參數(shù)傳入函數(shù)還有另一種方法,即通過參數(shù)名稱直接賦予形參意義。使用參數(shù)名稱傳入?yún)?shù)給函數(shù),對(duì)參數(shù)的順序沒有要求。演示如下:


def compare(a,c,b=2):
    ma = max(a,b,c)
    mi = min(a,b,c)
    return ma,mi
x = 1
z = 3
num1,num2 = compare(c=z,a=x,b=9)#順序可以改變
#輸出結(jié)果如下:
最大值是9,最小值是1

函數(shù)執(zhí)行完畢,有可能需要對(duì)程序傳出一些返回值列表,具體由return而定。返回值可以是0個(gè),1個(gè),多個(gè)。當(dāng)返回多個(gè)參數(shù)時(shí),這些參數(shù)形成了一個(gè)元組數(shù)據(jù)類型,由小括號(hào)和逗號(hào)分隔。例如(a,b,c)。元組和函數(shù)、整數(shù)、字符串等一樣,是Python內(nèi)置的數(shù)據(jù)類型,我們將在后續(xù)的課程中慢慢討論。

函數(shù)可以沒有返回值,當(dāng)返回值是多個(gè)的時(shí)候,可以使用多個(gè)變量將返回值依次賦值給這些變量,在上例中已經(jīng)演示過,不再重復(fù)演示。

3.變量作用域

根據(jù)程序中變量的所在位置和作用范圍,可以將其分為全局變量和局部變量。全局變量值橫跨多個(gè)函數(shù),在整個(gè)程序中存在并發(fā)揮作用的變量;而局部變量則是指在一個(gè)函數(shù)的內(nèi)部存在,并只作用于這個(gè)函數(shù)內(nèi)部,函數(shù)執(zhí)行完畢后便被內(nèi)存釋放,不在存在的變量。

例如如下代碼:


def compare(a,c,b=2):
    ma = max(a,b,c)#ma和mi都是局部變量
    mi = min(a,b,c)#局部變量誕生于函數(shù)內(nèi)部
    return ma,mi#函數(shù)執(zhí)行完畢后也將消失
x = 1#x,z,num1,num2都是全局變量
z = 3#全局變量自聲明后除非主動(dòng)消除,否則一直存在。
num1,num2 = compare(c=z,a=x,b=9)#順序可以改變

在函數(shù)內(nèi)使用全局變量需要使用global保留字。使用方法如下:

global <全局變量名>

演示代碼如下:


s = "Python真簡(jiǎn)單啊"
def f():
    #使用global保留字表明s是前面已經(jīng)聲明過的全局變量s
    global s
    print(s)
f()
#輸出結(jié)果如下:
Python真簡(jiǎn)單啊

使用global保留字聲明變量的作用域是Python語言中少有的需要再次聲明的情形,由于作用域不同,這種聲明不能省略。

4.代碼復(fù)用

函數(shù)是程序的一種基本抽象方式,它將一系列代碼組織起來通過命名供其他程序使用。這種封裝的最直接好處就是能夠很好的實(shí)現(xiàn)代碼復(fù)用。當(dāng)需要頻繁的使用某種操作或是功能時(shí),將這種操作或功能編寫成函數(shù)封裝起來,需要用的時(shí)候直接調(diào)用函數(shù)而不需要將該功能再寫一遍,大大提高了編程效率。

以函數(shù)式編程為基礎(chǔ)的模塊化設(shè)計(jì)程序,就是通過函數(shù)的封裝功能將程序劃分為主程序和若干子程序,通過主程序和子程序之間的關(guān)系,將各個(gè)獨(dú)立的功能程序組成一個(gè)有機(jī)可可協(xié)同的整體程序。因此,模塊化設(shè)計(jì)以功能塊為基本單位,一般有兩個(gè)基本要求:

緊耦合:盡可能合理劃分功能塊,各個(gè)功能塊內(nèi)部耦合緊密。

松耦合:模塊間關(guān)系盡可能簡(jiǎn)單,各個(gè)功能塊之間耦合松散。

在編程中,耦合性指程序結(jié)構(gòu)中各模塊相互關(guān)聯(lián)的程度,它取決于各模塊間接口(即實(shí)現(xiàn)模塊相連的入口,能體現(xiàn)兩個(gè)功能模塊之間的關(guān)系)的復(fù)雜程度和調(diào)用方式。耦合性是影響軟件復(fù)雜程度和設(shè)計(jì)質(zhì)量的一個(gè)重要因素。緊耦合指模塊或系統(tǒng)間關(guān)系緊密,存在較多或復(fù)雜的相互調(diào)用,緊耦合的缺點(diǎn)在于更新一個(gè)模塊可能導(dǎo)致其他模塊變化,復(fù)用較困難。松耦合一般基于消息或協(xié)議實(shí)現(xiàn),系統(tǒng)間交互簡(jiǎn)單。

松耦合代表了模塊化,從系統(tǒng)觀點(diǎn)來看,松耦合是程序的總體設(shè)計(jì)原則,也是函數(shù)使用的重要指導(dǎo)。

使用函數(shù)只是模塊化設(shè)計(jì)的必要非充分條件,根據(jù)計(jì)算需求合理劃分函數(shù)十分重要。一般來說,完成特定功能或被經(jīng)常復(fù)用的一組語句應(yīng)該采用函數(shù)來封裝,并盡可能減少函數(shù)間參數(shù)和返回值的數(shù)量。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多