Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第6章 函數(shù)_第1頁
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第6章 函數(shù)_第2頁
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第6章 函數(shù)_第3頁
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第6章 函數(shù)_第4頁
Python程序設(shè)計(jì)基礎(chǔ)-教學(xué)課件 第6章 函數(shù)_第5頁
已閱讀5頁,還剩31頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第6章

函數(shù)目錄6.1概述6.2函數(shù)的定義和調(diào)用6.3函數(shù)的參數(shù)和返回值6.4函數(shù)的參數(shù)傳遞6.5變量的作用域6.66.7模塊與包特殊形式的函數(shù)6.1概述通過函數(shù)編寫程序具有以下優(yōu)點(diǎn):

1)將程序模塊化,既減少了冗余代碼,又讓程序結(jié)構(gòu)更為清晰3)方便后期的維護(hù)與擴(kuò)展2)提高開發(fā)人員的編程效率6.1Python函數(shù)的類型(1)內(nèi)置函數(shù)內(nèi)置函數(shù)是Python解釋器的一部分,這些函數(shù)無需導(dǎo)入任何額外的模塊或者庫即可直接使用。例如前面所學(xué)習(xí)到的數(shù)學(xué)相關(guān)函數(shù)、類型轉(zhuǎn)換函數(shù)以及序列相關(guān)函數(shù)等,他們都屬于內(nèi)置函數(shù)。數(shù)學(xué)函數(shù):如

abs

、min

、max

、pow

等。類型轉(zhuǎn)換函數(shù):如

int、float

、list、tuple、dict、set

等。序列相關(guān)函數(shù):如

len、sum、sorted

等。輸入輸出相關(guān)函數(shù):如

print、input

等。

6.1Python函數(shù)的類型(2)標(biāo)準(zhǔn)庫函數(shù)math

模塊:提供數(shù)學(xué)運(yùn)算相關(guān)的函數(shù)。math.sqrt返回?cái)?shù)字的平方根;math.sin

、math.cos

、math.tan

返回三角函數(shù)的值。random

模塊:提供生成隨機(jī)數(shù)的函數(shù)。random.random

返回一個(gè)0到1之間的隨機(jī)浮點(diǎn)數(shù)。datetime

模塊:提供處理日期和時(shí)間的函數(shù)。datetime.datetime.now

返回當(dāng)前日期和時(shí)間。time

模塊:提供處理時(shí)間相關(guān)的函數(shù)。time.time

返回當(dāng)前時(shí)間的時(shí)間戳。還有很多標(biāo)準(zhǔn)庫函數(shù),他們在使用前需要利用

import

導(dǎo)入,如想使用求余弦標(biāo)準(zhǔn)庫函數(shù),可以采用下面三種方式導(dǎo)入:importmathimportmathasmtfrommathimportcos

6.1Python函數(shù)的類型(3)第三方庫函數(shù)NumPy:提供用于處理大型多維數(shù)組和矩陣的數(shù)學(xué)函數(shù)庫。如

numpy.array

創(chuàng)建

NumPy

數(shù)組;numpy.sum、numpy.mean

用于計(jì)算數(shù)組元素的和、均值等。Pandas:提供數(shù)據(jù)分析和處理工具,包括數(shù)據(jù)結(jié)構(gòu)和函數(shù)。如

pandas.DataFrame

用于創(chuàng)建

Pandas

數(shù)據(jù)框,DataFrame.groupby

對數(shù)據(jù)框進(jìn)行分組。Matplotlib:用于繪制圖表和可視化數(shù)據(jù)的繪圖庫。如

matplotlib.pyplot.plot

用于繪制線形圖;matplotlib.pyplot.scatter

用于繪制散點(diǎn)圖。(4)自定義函數(shù)開發(fā)者可以通過

def

關(guān)鍵字定義自己的函數(shù),這些函數(shù)稱為用戶自定義函數(shù)。6.2.1

函數(shù)的定義在Python中,函數(shù)被用來組織、實(shí)現(xiàn)單一功能或者相關(guān)聯(lián)功能的代碼段。函數(shù)可以把代碼模塊化,提高代碼的可讀性和復(fù)用性。Python中的函數(shù)可分為內(nèi)置函數(shù)、標(biāo)準(zhǔn)庫函數(shù)、第三方庫函數(shù)以及自定義函數(shù)四種類型,前三類都是已經(jīng)封裝好并可以直接提供給開發(fā)者使用,但當(dāng)上述函數(shù)都不能滿足用戶使用需求時(shí),用戶必須根據(jù)需求自己定義函數(shù),即自定義函數(shù)。Python中使用關(guān)鍵字def來定義函數(shù),其語法格式如下:

def<函數(shù)名>([形參列表]):<函數(shù)體>return[返回值列表]6.2.1

函數(shù)的定義函數(shù)包括以下要素:函數(shù)的名字,用于標(biāo)識和調(diào)用函數(shù)。函數(shù)名稱應(yīng)該具有描述性,以反映函數(shù)的功能。函數(shù)名稱(標(biāo)識符)函數(shù)可以接受零個(gè)或多個(gè)參數(shù),參數(shù)列表在函數(shù)名稱后面的括號內(nèi)定義,可以沒有參數(shù),但不能沒有。函數(shù)體包含了函數(shù)的實(shí)際代碼,它定義了函數(shù)要執(zhí)行的操作。當(dāng)函數(shù)需要返回值時(shí),使用保留字

return

和返回值列表,并使流程轉(zhuǎn)到調(diào)用位置;而不需要返回值時(shí),可省略

return

語句。返回值0102參數(shù)列表03函數(shù)體046.2.2

函數(shù)的調(diào)用在函數(shù)的定義中,定義函數(shù)要做什么。為了使用函數(shù),必須調(diào)用它。調(diào)用函數(shù)的程序被稱為調(diào)用者。函數(shù)調(diào)用的一般形式如下:[變量=]<函數(shù)名>([實(shí)參列表])1)函數(shù)的定義一定出現(xiàn)在函數(shù)調(diào)用之前,否則會(huì)報(bào)錯(cuò)。2)實(shí)參列表中的實(shí)參為函數(shù)調(diào)用時(shí)賦予的實(shí)際參數(shù),與函數(shù)定義時(shí)的形參一一對應(yīng)。123)若函數(shù)有返回值,則可以在表達(dá)式中直接使用,參與表達(dá)式的運(yùn)算,否則就單獨(dú)作為表達(dá)式語句使用。36.2.2

函數(shù)的調(diào)用當(dāng)程序調(diào)用一個(gè)函數(shù)時(shí),程序的控制權(quán)就會(huì)轉(zhuǎn)移到被調(diào)用函數(shù)上。當(dāng)執(zhí)行完函數(shù)返回語句或執(zhí)行到函數(shù)結(jié)束時(shí),被調(diào)用函數(shù)就會(huì)將程序控制權(quán)交還給調(diào)用者?!纠?-4】求兩個(gè)數(shù)較大值的完整程序。defmax(num1,num2):ifnum1>num2:result=num1else:result=num2returnresult

larger=max(5,10)print("兩個(gè)數(shù)較大者為:",larger)運(yùn)行結(jié)果:兩個(gè)數(shù)較大者為:

10這個(gè)程序是如何執(zhí)行的呢?解釋器一行一行讀取腳本語言,當(dāng)它讀取函數(shù)頭時(shí),將函數(shù)

max以及函數(shù)體存儲在內(nèi)存中。盡管函數(shù)的定義對函數(shù)進(jìn)行了定義,但它不會(huì)讓函數(shù)執(zhí)行。最后解釋器讀到

max(5,10)時(shí),它會(huì)調(diào)用

max函數(shù),即

max函數(shù)被執(zhí)行。程序的控制轉(zhuǎn)移到

max函數(shù)。6.2.2

函數(shù)的調(diào)用函數(shù)調(diào)用執(zhí)行過程如下:1)程序在調(diào)用位置暫停執(zhí)行,轉(zhuǎn)向被調(diào)用函數(shù)執(zhí)行,即max函數(shù),如①號箭頭所示。2)將數(shù)據(jù)傳遞給函數(shù)參數(shù),num1的值為5,num2的值為10,如②號箭頭所示。3)執(zhí)行函數(shù)體語句,如③號箭頭所示。4)程序回到暫停處繼續(xù)執(zhí)行,如④號箭頭所示。6.3.1函數(shù)的參數(shù)形式參數(shù)0102實(shí)際參數(shù)形參用于接收調(diào)用函數(shù)時(shí)傳遞的實(shí)際參數(shù)值。形參在函數(shù)的參數(shù)列表中聲明,可以包括多個(gè)參數(shù),每個(gè)參數(shù)之間用逗號分隔。實(shí)參是函數(shù)調(diào)用的一部分,用于為函數(shù)提供輸入數(shù)據(jù)。實(shí)參可以是常量、變量、表達(dá)式等,用于初始化函數(shù)定義中的形式參數(shù)。很多時(shí)候,需要將函數(shù)執(zhí)行的結(jié)果反饋給調(diào)用函數(shù)的程序,就好像經(jīng)理向秘書下達(dá)命令,讓其去打印文件,秘書打印好文件后并沒有完成任務(wù),還需要將文件交給經(jīng)理。一般情況下,函數(shù)的最后都有一行

return

語句,表示退出函數(shù)并將程序返回到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行,同時(shí)將函數(shù)執(zhí)行結(jié)果返回給函數(shù)被調(diào)用處的變量。注意:return

語句在同一個(gè)函數(shù)中可以出現(xiàn)多次,但一旦其中一個(gè)被執(zhí)行,函數(shù)就會(huì)立即結(jié)束。如果函數(shù)沒有

return

語句,或者

return

后面沒有表達(dá)式,函數(shù)將默認(rèn)返回

None

。6.3.2函數(shù)的返回值不可變對象(如整數(shù)、字符串、元組等)作為參數(shù)傳遞時(shí),對象內(nèi)容不能被修改。若發(fā)生修改會(huì)創(chuàng)建新對象,因此實(shí)參變量不受影響。6.4.1不可變對象作為參數(shù)傳遞不可變對象(如整數(shù)、字符串、元組等)作為參數(shù)傳遞時(shí),對象內(nèi)容不能被修改。若發(fā)生修改會(huì)創(chuàng)建新對象,因此實(shí)參變量不受影響。6.4.1不可變對象作為參數(shù)傳遞【例6-6】不可變對象作為參數(shù)傳遞示例。def

swap(a,

b):

temp

=

a

a

=

b

b

=

temp

print(f"在swap函數(shù)中:a={a},b=")

x

=

5y

=

10swap(x,y)print(f"經(jīng)過swap后:x={x},

y={y}")運(yùn)行結(jié)果:在swap函數(shù)中:a=10,b=5經(jīng)過swap后:x=5,

y=10結(jié)果分析:函數(shù)的實(shí)參為可變對象時(shí),函數(shù)中對形參修改會(huì)影響實(shí)參,因?yàn)閷?shí)參和形參共享同一個(gè)對象引用。6.4.2可變對象作為參數(shù)傳遞【例6-8】可變對象參數(shù)傳遞示例。defswap_values(lst):lst[0],lst[1]=lst[1],lst[0]print("inthefunctionswap:",lst)

#使用列表來存儲兩個(gè)數(shù)numbers=[5,10]print("Beforeswapping:",numbers)

#調(diào)用函數(shù)進(jìn)行互換swap_values(numbers)

print("Afterswapping(usingreference):",numbers)運(yùn)行結(jié)果:Before

swapping:

[5,

10]in

the

function

swap:

[10,

5]After

swapping

(using

reference):

[10,

5]結(jié)果分析:6.4.2

參數(shù)類型

函數(shù)參數(shù)的類型可以分為位置參數(shù)、關(guān)鍵字參數(shù)、默認(rèn)參數(shù)、參數(shù)的打包與解包(不定長參數(shù))以及混合參數(shù)。(1)位置參數(shù)

Python

中,位置參數(shù)是一種最常見的函數(shù)參數(shù)類型。當(dāng)調(diào)用一個(gè)函數(shù)時(shí),參數(shù)的傳遞順序與函數(shù)定義中的參數(shù)順序一一對應(yīng)。這意味著需要按照定義函數(shù)時(shí)的順序依次傳遞參數(shù)值。

(2)關(guān)鍵字參數(shù)

Python

中,關(guān)鍵字參數(shù)是一種允許在函數(shù)調(diào)用中明確指定參數(shù)名稱的方式。與位置參數(shù)不同,關(guān)鍵字參數(shù)允許以任意順序傳遞參數(shù),并且更具可讀性。12使用關(guān)鍵字參數(shù)可以提高代碼的可讀性,因?yàn)楹瘮?shù)調(diào)用中的參數(shù)名稱直接指明了它們的含義。可以以任意順序傳遞參數(shù),而不必?fù)?dān)心參數(shù)順序與函數(shù)定義不一致。靈活性明確性6.4.2

參數(shù)類型

(3)默認(rèn)參數(shù)

默認(rèn)參數(shù)是在函數(shù)定義中為參數(shù)指定默認(rèn)值的一種方式。當(dāng)函數(shù)被調(diào)用時(shí),如果沒有為該參數(shù)提供值,那么使用默認(rèn)值。這使得在調(diào)用函數(shù)時(shí)可以省略某些參數(shù),從而創(chuàng)建具有一定程度可選性的函數(shù)。132默認(rèn)參數(shù)使得函數(shù)具有一定程度的可選性,允許在不提供特定參數(shù)時(shí)使用函數(shù)的默認(rèn)行為??梢栽谛枰獣r(shí)覆蓋默認(rèn)參數(shù)的值,以適應(yīng)不同的情況。默認(rèn)參數(shù)允許為參數(shù)提供有意義的默認(rèn)值,提高了代碼的可讀性,因?yàn)楹瘮?shù)調(diào)用可以更簡潔。靈活性可讀性可選性注意:默認(rèn)參數(shù)應(yīng)該在參數(shù)列表的末尾,這意味著位置參數(shù)和關(guān)鍵字參數(shù)必須在默認(rèn)參數(shù)之前。6.4.2

參數(shù)類型(4)可變參數(shù)

在定義函數(shù)時(shí),有時(shí)候不確定調(diào)用的的時(shí)候會(huì)傳遞多少個(gè)參數(shù),在

Python

中,允許使用以下兩種方式解決這一問題:在形參前增加

*

,用來接收任意多個(gè)實(shí)參并將其打包放在一個(gè)元組中。在形參前增加

**

,用來接收多個(gè)關(guān)鍵字參數(shù)并將其打包放在一個(gè)字典中。

這兩種方式統(tǒng)稱為可變參數(shù),也稱為不定長參數(shù)。雖然函數(shù)中添加

*

**

的形參可以是符合命名規(guī)范的任意名稱,但這里建議使用

*args

**kwargs

。1)*args(星號參數(shù)):*args用于接收以元組(tuple)的形式打包的多個(gè)值。2)**kwargs(雙星號參數(shù)):**kwargs用于接收以字典形式打包的多個(gè)值。6.4.2

參數(shù)類型(5)混合參數(shù)

前面介紹的參數(shù)傳遞的方式在定義函數(shù)或調(diào)用函數(shù)時(shí)可以混合使用,但是需要遵循一定的規(guī)則,具體規(guī)則如下。然后按關(guān)鍵字參數(shù)傳遞的方式。03010402優(yōu)先按位置參數(shù)傳遞的方式。之后按默認(rèn)參數(shù)傳遞的方式。最后按打包傳遞的方式。在定義函數(shù)時(shí):1)帶有默認(rèn)值的參數(shù)必須位于普通參數(shù)之后。2)帶有“*”標(biāo)識的參數(shù)必須位于帶有默認(rèn)值的參數(shù)之后。3)帶有“**”標(biāo)識的參數(shù)必須位于帶有“*”標(biāo)識的參數(shù)之后。6.5

變量的作用域在

Python

中,變量的作用域一共分為四類,分別是:L(local):局部作用域,例如,局部變量和形參生效的區(qū)域。E(enclosing):嵌套作用域,例如,嵌套定義的函數(shù)中外層函數(shù)聲明的變量生效的區(qū)域。G(global):全局作用域,例如,全局變量生效的區(qū)域。B(build_in):內(nèi)置作用域,例如,內(nèi)置模塊聲明的變量生效的區(qū)域。這四類作用域的范圍依次從小到大,Python

在訪問一個(gè)變量時(shí),會(huì)按照“L→E→G→B”這個(gè)順序依次在這四種區(qū)域中搜索變量:若搜索到變量則終止搜索,使用搜索到的變量;若搜索完

L、E、G、B

這四種區(qū)域仍無法找到變量,程序?qū)伋霎惓!?/p>

6.5.1

局部變量局部變量是在函數(shù)內(nèi)部定義的變量,也只能在函數(shù)內(nèi)部被使用。函數(shù)執(zhí)行結(jié)束之后局部變量會(huì)被釋放,此時(shí)無法再進(jìn)行訪問。

【例6-18】局部變量示例1。def

demo():

number

=

100

#

局部變量

print(number)

#

函數(shù)內(nèi)部訪問局部變量demo()print(number)

#

函數(shù)外部訪問局部變量運(yùn)行結(jié)果:100NameError

Traceback

(most

recent

call

last)<ipython-input-21-9f33219d1aaa>

in

<module>

3

print(number)

#

函數(shù)內(nèi)部訪問局部變量

4

demo()---->

5

print(number)

#

函數(shù)外部訪問局部變量NameError:

name

'number'

is

not

defined【例6-19】局部變量示例2。def

calculate_square_area(side_length):

area

=

side_length

**

2

print(f"Inside

calculate_square_area,

area

=

{area}")

def

calculate_rectangle_area(length,

width):

area

=

length

*

width

print(f"Inside

calculate_rectangle_area,

area

=

{area}")

#

示例調(diào)用calculate_square_area(5)calculate_rectangle_area(4,

6)運(yùn)行結(jié)果:Inside

calculate_square_area,

area

=

25Inside

calculate_rectangle_area,

area

=

246.5.2

全局變量全局變量是定義在函數(shù)外部的變量,它的作用域范圍為從定義位置一直到整個(gè)程序文件結(jié)束,它不會(huì)受到函數(shù)范圍的影響。

【例6-20】全局變量示例1。number

=

100

#

全局變量def

demo_one():

print(number)

#

函數(shù)內(nèi)部訪問全局變量demo_one()print(number)

#

函數(shù)外部訪問全局變量運(yùn)行結(jié)果:100100【例6-21】全局變量示例2。#

定義全局變量number

=

10def

demo_one():

print(number)

number

+=

1demo_one()print(number)

運(yùn)行結(jié)果:UnboundLocalError:

local

variable

'number'

referenced

before

assignment6.5.2

全局變量全局變量具有以下關(guān)鍵特性:

全局變量的作用域跨越整個(gè)程序,可以在程序中的任何地方訪問。作用域當(dāng)在函數(shù)內(nèi)部定義與全局變量同名的局部變量時(shí),局部變量將遮蔽(覆蓋)全局變量,函數(shù)內(nèi)部將使用局部變量而不是全局變量。潛在的名稱沖突全局變量在程序運(yùn)行期間一直存在,直到程序結(jié)束。生命周期全局變量對于整個(gè)程序都是可見的,包括函數(shù)內(nèi)部。這意味著可以在函數(shù)內(nèi)部訪問和修改全局變量。全局可見性6.5.3

global

nonlocal關(guān)鍵字函數(shù)內(nèi)部無法直接修改全局變量或在嵌套函數(shù)的外層函數(shù)聲明的變量,但可以使用

global

或nonlocal

關(guān)鍵字修飾變量以間接修改以上變量。(1)global

關(guān)鍵字在

Python

中,使用

global

關(guān)鍵字可以將局部變量聲明為全局變量。這意味著在函數(shù)內(nèi)部,該變量將被視為全局變量,而不是創(chuàng)建一個(gè)新的局部變量。(2)nonlocal關(guān)鍵字Python中在函數(shù)體中還可以定義嵌套函數(shù),即一個(gè)函數(shù)內(nèi)部包含另一個(gè)函數(shù)。如果要在嵌套函數(shù)的內(nèi)層函數(shù)中為定義在外層函數(shù)體中的局部變量賦值,可以使用nonlocal語句,表明變量不是所在內(nèi)層函數(shù)中的局部變量,而是上一級函數(shù)體中定義的局部變量。注意:nonlocal關(guān)鍵字只在嵌套函數(shù)中有意義,用于聲明外層函數(shù)的局部變量。在單個(gè)函數(shù)中,使用global關(guān)鍵字聲明全局變量,而使用nonlocal關(guān)鍵字聲明外層函數(shù)的局部變量。6.6.1

遞歸函數(shù)函數(shù)在定義時(shí)可以直接或間接地調(diào)用其他函數(shù)。若函數(shù)內(nèi)部調(diào)用了自身,則這個(gè)函數(shù)被稱為遞歸函數(shù)。遞歸函數(shù)在定義時(shí)需要滿足兩個(gè)基本條件:一個(gè)是遞歸公式,另一個(gè)是邊界條件。遞歸公式是求解原問題或相似的子問題的結(jié)構(gòu);邊界條件是最小化的子問題,也是遞歸終止的條件。遞歸函數(shù)的執(zhí)行可以分為以下兩個(gè)階段:1)遞推:遞歸本次的執(zhí)行都基于上一次的運(yùn)算結(jié)果。2)回溯:遇到終止條件時(shí),則沿著遞推往回一級一級地把值返回來。遞歸函數(shù)的一般定義格式如下所示:def函數(shù)名([參數(shù)列表]): if邊界條件: return結(jié)果 else: return遞歸公式6.6.1

遞歸函數(shù)遞歸的優(yōu)點(diǎn):遞歸代碼通常比迭代更簡潔、清晰。遞歸能夠自然地表達(dá)問題的邏輯結(jié)構(gòu),使得代碼更易讀、易理解。01遞歸使得問題分解成更小、更易處理的子問題。這有助于將復(fù)雜問題分解為簡單的部分,每個(gè)部分獨(dú)立解決,從而提高代碼的模塊化和可維護(hù)性。02某些問題的本質(zhì)結(jié)構(gòu)自然地適合遞歸解決。例如,樹形結(jié)構(gòu)的問題、圖遍歷等常常通過遞歸來處理。03在某些數(shù)學(xué)問題中,遞歸提供了一種自然的數(shù)學(xué)建模方式,能夠直觀地反映問題的數(shù)學(xué)結(jié)構(gòu)。04遞歸可以使算法的實(shí)現(xiàn)更接近問題的數(shù)學(xué)或自然描述,從而提高了代碼的可讀性。05遞歸的缺點(diǎn):遞歸的邏輯很難調(diào)試和跟進(jìn)。遞歸調(diào)用的代價(jià)高昂,程序執(zhí)行效率低。6.6.2高階函數(shù)(1)map函數(shù)map函數(shù)接受一個(gè)函數(shù)和一個(gè)可迭代對象作為參數(shù),然后將該函數(shù)應(yīng)用到可迭代對象的每個(gè)元素上,返回一個(gè)新的可迭代對象。(2)filter函數(shù)filter函數(shù)用于過濾可迭代對象中的元素,接受一個(gè)函數(shù)和一個(gè)可迭代對象作為參數(shù),返回一個(gè)僅包含滿足條件的元素的新的可迭代對象。(3)sorted函數(shù)sorted函數(shù)用于對可迭代對象進(jìn)行排序的函數(shù),它可以接受多種參數(shù),允許指定排序的規(guī)則和順序,語法如下:sorted(iterable,key=None,reverse=False)其中,iterable是待排序的可迭代對象,例如列表、元組等;key是可選參數(shù),用于指定一個(gè)函數(shù),它將應(yīng)用于每個(gè)元素以生成排序的依據(jù);reverse是可選參數(shù),如果設(shè)置為True,則降序排序,默認(rèn)為升序排序。6.6.3lambda函數(shù)lambda表達(dá)式是Python中一種用于創(chuàng)建匿名函數(shù)的方式,它通常用于編寫簡單的、短小的函數(shù),而不必顯式定義函數(shù)名。lambda表達(dá)式的語法如下:lambda<形式參數(shù)列表>:<表達(dá)式>其中:<形式參數(shù)列表>是一個(gè)或多個(gè)形式參數(shù),用逗號分隔,類似于函數(shù)定義中的參數(shù)列表。<表達(dá)式>是一個(gè)只包含一個(gè)表達(dá)式的簡單語句,這個(gè)表達(dá)式的計(jì)算結(jié)果將成為這個(gè)匿名函數(shù)的返回值。匿名函數(shù)與普通函數(shù)的主要區(qū)別如下:普通函數(shù)在定義時(shí)有名稱,而匿名函數(shù)沒有名稱。普通函數(shù)的函數(shù)體中包含有多條語句,而匿名函數(shù)的函數(shù)體只能是一個(gè)表達(dá)式。普通函數(shù)可以實(shí)現(xiàn)比較復(fù)雜的功能,而匿名函數(shù)可實(shí)現(xiàn)的功能比較簡單。普通函數(shù)能被其他程序使用,而匿名函數(shù)不能被其他程序使用。定義好的匿名函數(shù)不能直接使用,最好使用一個(gè)變量保存它,以便后期可以隨時(shí)使用這個(gè)函數(shù)。6.6.4

裝飾器裝飾器是Python中一種強(qiáng)大而有用的編程概念,它可以用于修改、擴(kuò)展或包裝函數(shù)或方法的行為。裝飾器本質(zhì)上是函數(shù),用于包裝其他函數(shù)或方法,通常用于添加額外的功能或修改函數(shù)的行為,而不需要修改原始函數(shù)的定義。裝飾器在Python中廣泛用于日志記錄、權(quán)限檢查、性能測量等方面。創(chuàng)建和使用裝飾器的基本步驟:0102定義裝飾器函數(shù)裝

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論