python函數(shù)和函數(shù)傳參課件_第1頁
python函數(shù)和函數(shù)傳參課件_第2頁
python函數(shù)和函數(shù)傳參課件_第3頁
python函數(shù)和函數(shù)傳參課件_第4頁
python函數(shù)和函數(shù)傳參課件_第5頁
已閱讀5頁,還剩77頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

函數(shù)和函數(shù)傳參李凱函數(shù)和函數(shù)傳參李凱1函數(shù)的定義微實(shí)例:生日歌。過生日時要為朋友唱生日歌,歌詞為:Happybirthdayto

you!Happybirthdaytoyou!Happy

birthday,

dear

<名字>Happybirthdayto

you!編寫程序?yàn)镸ike和Lily輸出生日歌。最簡單的實(shí)現(xiàn)方法是重復(fù)使用print()語句函數(shù)的定義微實(shí)例:生日歌。2函數(shù)的基本使用函數(shù)的基本使用3函數(shù)的定義函數(shù)是一段具有特定功能的、可重用的語句組,用函數(shù)名來表示并通過函數(shù)名進(jìn)行完成功能調(diào)用。函數(shù)也可以看作是一段具有名字的子程序,可以在需要的地方調(diào)用執(zhí)行,不需要在每個執(zhí)行地方重復(fù)編寫這些語句。每次使用函數(shù)可以提供不同的參數(shù)作為輸入,以實(shí)現(xiàn)對不同數(shù)據(jù)的處理;函數(shù)執(zhí)行后,還可以反饋相應(yīng)的處理結(jié)果。函數(shù)是一種功能抽象函數(shù)的定義函數(shù)是一段具有特定功能的、可重用的語句組,用函數(shù)名4函數(shù)的定義Python定義一個函數(shù)使用def保留字,語法形式如下:def

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

'''注釋'''<函數(shù)體>return<返回值列表>函數(shù)的定義Python定義一個函數(shù)使用def保留字,語法形式5函數(shù)的定義1234print("Happybirthdaytoyou!")print("Happybirthdaytoyou!")print("Happybirthday,dearMike!")print("Happybirthdayto

you!")最簡單的實(shí)現(xiàn)方法是重復(fù)使用print()語句,如下:函數(shù)的定義1print("Happybirthdayto6函數(shù)的定義微實(shí)例5.1m5.1HappyBirthday.py12345678910defhappy():print("Happybirthdaytoyou!")def

happyB(name):happy()happy()print("Happybirthday,dear

{}!".format(name))happy()happyB("Mike")print()happyB("Lily")>>>Happybirthdaytoyou!Happybirthdayto

you!Happybirthday,dearMike!Happybirthdayto

you!Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dearLily!Happybirthdayto

you!函數(shù)的定義微實(shí)例5.1m5.1HappyBirthday.p7函數(shù)調(diào)用的過程程序調(diào)用一個函數(shù)需要執(zhí)行以下四個步驟:(1)調(diào)用程序在調(diào)用處暫停執(zhí)行;(2)在調(diào)用時將實(shí)參復(fù)制給函數(shù)的形參;(3)執(zhí)行函數(shù)體語句;(4)函數(shù)調(diào)用結(jié)束給出返回值,程序回到調(diào)用前的暫停處繼續(xù)執(zhí)行。函數(shù)調(diào)用的過程程序調(diào)用一個函數(shù)需要執(zhí)行以下四個步驟:8函數(shù)調(diào)用的過程微實(shí)例5.1中happyB()的被調(diào)用過程函數(shù)調(diào)用的過程微實(shí)例5.1中happyB()的被調(diào)用過程9函數(shù)調(diào)用的過程函數(shù)調(diào)用的過程10函數(shù)調(diào)用的過程函數(shù)調(diào)用的過程11lambda函數(shù)Python的有33個保留字,其中一個是lambda,該保留字用于定義一種特殊的函數(shù)——匿名函數(shù),又稱lambda函數(shù)。匿名函數(shù)并非沒有名字,而是將函數(shù)名作為函數(shù)結(jié)果返回,如下:<函數(shù)名>

=

lambda

<參數(shù)列表>:

<表達(dá)式>lambda函數(shù)與正常函數(shù)一樣,等價于下面形式:def

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

<表達(dá)式>lambda函數(shù)Python的有33個保留字,其中一個是la12lambda函數(shù)簡單說,lambda函數(shù)用于定義簡單的、能夠在一行內(nèi)表示的函數(shù),實(shí)例如下。>>>f=lambdax,y:x+

y>>>type(f)<class

'function'>>>>f(10,12)22lambda函數(shù)簡單說,lambda函數(shù)用于定義簡單的、能夠13函數(shù)的參數(shù)傳遞函數(shù)的參數(shù)傳遞14可選參數(shù)和可變數(shù)量參數(shù)在定義函數(shù)時,有些參數(shù)可以存在默認(rèn)值。默認(rèn)值參數(shù)必須出現(xiàn)在函數(shù)參數(shù)列表的最右端,且任何一個默認(rèn)值參數(shù)右邊不能有非默認(rèn)值參數(shù)。>>>defdup(str,times=

2):print(str*times)>>>dup("knock~")knock~knock~>>>dup("knock~",4)knock~knock~knock~knock~可選參數(shù)和可變數(shù)量參數(shù)在定義函數(shù)時,有些參數(shù)可以存在默認(rèn)值。15可選參數(shù)和可變數(shù)量參數(shù)在函數(shù)定義時,可以設(shè)計可變數(shù)量參數(shù),通過參數(shù)前增加星號(*)實(shí)現(xiàn)>>>defvfunc(a,

*b):print(type(b))fornin

b:a+=

nreturn

a>>>vfunc(1,2,3,4,5)<class

'tuple'>15可選參數(shù)和可變數(shù)量參數(shù)在函數(shù)定義時,可以設(shè)計可變數(shù)量參數(shù),通16參數(shù)的位置和名稱傳遞Python提供了按照形參名稱輸入實(shí)參的方式,調(diào)用如下:result=func(x2=4,y2=5,z2=6,x1=1,y1=2,

z1=3)由于調(diào)用函數(shù)時指定了參數(shù)名稱,所以參數(shù)之間的順序可以任意調(diào)整。參數(shù)的位置和名稱傳遞Python提供了按照形參名稱輸入實(shí)參的17變量的返回值return語句用來退出函數(shù)并將程序返回到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行。return語句同時可以將0個、1個或多個函數(shù)運(yùn)算完的結(jié)果返回給函數(shù)被調(diào)用處的變量,例如。>>>deffunc(a,

b):return

a*b>>>s=func("knock~",

2)>>>print(s)knock~knock~變量的返回值return語句用來退出函數(shù)并將程序返回到函數(shù)被18變量的返回值函數(shù)可以沒有return,此時函數(shù)并不返回值,如微實(shí)例5.1的happy()函數(shù)。函數(shù)也可以用return返回多個值,多個值以元組類型保存,例如。>>>deffunc(a,

b):return

b,a>>>s=func("knock~",

2)>>>print(s,

type(s))(2,'knock~')<class

'tuple'>變量的返回值函數(shù)可以沒有return,此時函數(shù)并不返回值,如19Python內(nèi)置函數(shù)(BIF)Python解釋器提供了68個內(nèi)置函數(shù),其中大部分會經(jīng)常用到abs()id()round()compile()locals()all()input()set()dir()map()any()int()sorted()exec()memoryview()asci()len()str()enumerate()next()bin()list()tuple()filter()object()bool()max()type()format()property()chr()min()zip()frozenset()repr()complex()oct()getattr()setattr()dict()open()globals()slice()divmod()ord()bytes()hasattr()staticmethod()eval()pow()delattr()help()sum()float()print()bytearray()isinstance()super()hash()range()callable()issubclass()vars()hex()reversed()classmethod()iter()

import()

Python內(nèi)置函數(shù)(BIF)Python解釋器提供了68個20常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用執(zhí)行下面的命令可以列出所有內(nèi)置函數(shù)>>>dir(__builtins__)Python標(biāo)準(zhǔn)庫turtleforward()pencolor()……input()print()str()range()……time……………………………………常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用Python標(biāo)21函數(shù)功能簡要說明abs(x)返回數(shù)字x的絕對值或復(fù)數(shù)x的模all(iterable)如果對于可迭代對象中所有元素x都等價于True,也就是對于所有元素x都有bool(x)等于True,則返回True。對于空的可迭代對象也返回Trueany(iterable)只要可迭代對象iterable中存在元素x使得bool(x)為True,則返回True。對于空的可迭代對象,返回Falseascii(obj)把對象轉(zhuǎn)換為ASCII碼表示形式,必要的時候使用轉(zhuǎn)義字符來表示特定的字符bin(x)把整數(shù)x轉(zhuǎn)換為二進(jìn)制串表示形式bool(x)返回與x等價的布爾值True或Falsebytes(x)生成字節(jié)串,或把指定對象x轉(zhuǎn)換為字節(jié)串表示形式callable(obj)測試對象obj是否可調(diào)用。類和函數(shù)是可調(diào)用的,包含__call__()方法的類的對象也是可調(diào)用的compile()用于把Python代碼編譯成可被exec()或eval()函數(shù)執(zhí)行的代碼對象complex(real,[imag])返回復(fù)數(shù)chr(x)返回Unicode編碼為x的字符常用內(nèi)置函數(shù)函數(shù)功能簡要說明abs(x)返回數(shù)字x的絕對值或復(fù)數(shù)x的模a22函數(shù)功能簡要說明delattr(obj,name)刪除屬性,等價于dir(obj)返回指定對象或模塊obj的成員列表,如果不帶參數(shù)則返回當(dāng)前作用域內(nèi)所有標(biāo)識符divmod(x,y)返回包含整商和余數(shù)的元組((x-x%y)/y,x%y)enumerate(iterable[,start])返回包含元素形式為(0,iterable[0]),(1,iterable[1]),(2,iterable[2]),...的迭代器對象eval(s[,globals[,locals]])計算并返回字符串s中表達(dá)式的值exec(x)執(zhí)行代碼或代碼對象xexit()退出當(dāng)前解釋器環(huán)境filter(func,seq)返回filter對象,其中包含序列seq中使得單參數(shù)函數(shù)func返回值為True的那些元素,如果函數(shù)func為None則返回包含seq中等價于True的元素的filter對象float(x)把整數(shù)或字符串x轉(zhuǎn)換為浮點(diǎn)數(shù)并返回frozenset([x]))創(chuàng)建不可變的字典對象getattr(obj,name[,default])獲取對象中指定屬性的值,等價于,如果不存在指定屬性則返回default的值,如果要訪問的屬性不存在并且沒有指定default則拋出異常續(xù)表1常用內(nèi)置函數(shù)函數(shù)功能簡要說明delattr(obj,name)刪除屬性23函數(shù)功能簡要說明globals()返回包含當(dāng)前作用域內(nèi)全局變量及其值的字典hasattr(obj,name)測試對象obj是否具有名為name的成員hash(x)返回對象x的哈希值,如果x不可哈希則拋出異常help(obj)返回對象obj的幫助信息hex(x)把整數(shù)x轉(zhuǎn)換為十六進(jìn)制串id(obj)返回對象obj的標(biāo)識(內(nèi)存地址)input([提示])顯示提示,接收鍵盤輸入的內(nèi)容,返回字符串int(x[,d])返回實(shí)數(shù)(float)、分?jǐn)?shù)(Fraction)或高精度實(shí)數(shù)(Decimal)x的整數(shù)部分,或把d進(jìn)制的字符串x轉(zhuǎn)換為十進(jìn)制并返回,d默認(rèn)為十進(jìn)制isinstance(obj,class-or-type-or-tuple)測試對象obj是否屬于指定類型(如果有多個類型的話需要放到元組中)的實(shí)例iter(...)返回指定對象的可迭代對象len(obj)返回對象obj包含的元素個數(shù),適用于列表、元組、集合、字典、字符串以及range對象和其他可迭代對象續(xù)表2常用內(nèi)置函數(shù)函數(shù)功能簡要說明globals()返回包含當(dāng)前作用域內(nèi)全局變24函數(shù)功能簡要說明list([x])、set([x])、tuple([x])、dict([x])把對象x轉(zhuǎn)換為列表、集合、元組或字典并返回,或生成空列表、空集合、空元組、空字典locals()返回包含當(dāng)前作用域內(nèi)局部變量及其值的字典map(func,*iterables)返回包含若干函數(shù)值的map對象,函數(shù)func的參數(shù)分別來自于iterables指定的每個迭代對象,max(x)、min(x)返回可迭代對象x中的最大值、最小值,要求x中的所有元素之間可比較大小,允許指定排序規(guī)則和x為空時返回的默認(rèn)值next(iterator[,default])返回可迭代對象x中的下一個元素,允許指定迭代結(jié)束之后繼續(xù)迭代時返回的默認(rèn)值oct(x)把整數(shù)x轉(zhuǎn)換為八進(jìn)制串open(name[,mode])以指定模式mode打開文件name并返回文件對象ord(x)返回1個字符x的Unicode編碼pow(x,y,z=None)返回x的y次方,等價于x**y或(x**y)%z續(xù)表3常用內(nèi)置函數(shù)函數(shù)功能簡要說明list([x])、set([x])、tup25函數(shù)功能簡要說明print(value,...,sep='',end='\n',file=sys.stdout,flush=False)基本輸出函數(shù)quit()退出當(dāng)前解釋器環(huán)境range([start,]end[,step])返回range對象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)reduce(func,sequence[,initial])將雙參數(shù)的函數(shù)func以迭代的方式從左到右依次應(yīng)用至序列seq中每個元素,最終返回單個值作為結(jié)果。在Python2.x中該函數(shù)為內(nèi)置函數(shù),在Python3.x中需要從functools中導(dǎo)入reduce函數(shù)再使用repr(obj)返回對象obj的規(guī)范化字符串表示形式,對于大多數(shù)對象有eval(repr(obj))==objreversed(seq)返回seq(可以是列表、元組、字符串、range以及其他可迭代對象)中所有元素逆序后的迭代器對象續(xù)表4常用內(nèi)置函數(shù)函數(shù)功能簡要說明print(value,...,sep=26函數(shù)功能簡要說明round(x[,小數(shù)位數(shù)])對x進(jìn)行四舍五入,若不指定小數(shù)位數(shù),則返回整數(shù)sorted(iterable,key=None,reverse=False)返回排序后的列表,其中iterable表示要排序的序列或迭代對象,key用來指定排序規(guī)則或依據(jù),reverse用來指定升序或降序。該函數(shù)不改變iterable內(nèi)任何元素的順序str(obj)把對象obj直接轉(zhuǎn)換為字符串sum(x,start=0)返回序列x中所有元素之和,要求序列x中所有元素必須為數(shù)字,允許指定起始值start,返回start+sum(x)type(obj)返回對象obj的類型zip(seq1[,seq2[...]])返回zip對象,其中元素為(seq1[i],seq2[i],...)形式的元組,最終結(jié)果中包含的元素個數(shù)取決于所有參數(shù)序列或可迭代對象中最短的那個續(xù)表5常用內(nèi)置函數(shù)函數(shù)功能簡要說明round(x[,小數(shù)位數(shù)])對x進(jìn)行四27常用內(nèi)置函數(shù)dir()函數(shù)可以查看指定模塊中包含的所有成員或者指定對象類型所支持的操作。help()函數(shù)則返回指定模塊或函數(shù)的說明文檔。importtimedir(time)help(time)常用內(nèi)置函數(shù)dir()函數(shù)可以查看指定模塊中包含的所有成員或28常用內(nèi)置函數(shù)ord()和chr()是一對功能相反的函數(shù),ord()用來返回單個字符的序數(shù)或Unicode碼,chr()用來返回某序數(shù)對應(yīng)的字符str()則直接將其任意類型參數(shù)轉(zhuǎn)換為字符串。>>>ord('a')97>>>chr(65)'A'>>>chr(ord('A')+1)'B'>>>str(1)'1'>>>str(1234)'1234'>>>str([1,2,3])'[1,2,3]'>>>str((1,2,3))'(1,2,3)'>>>str({1,2,3})'set([1,2,3])'常用內(nèi)置函數(shù)ord()和chr()是一對功能相反的函數(shù),or29常用內(nèi)置函數(shù)max()、min()、sum()這三個內(nèi)置函數(shù)分別用于計算列表、元組或其他可迭代對象中所有元素最大值、最小值以及所有元素之和,sum()要求元素支持加法運(yùn)算,max()和min()則要求序列或可迭代對象中的元素之間可比較大小。>>>importrandom>>>a=[random.randint(1,100)foriinrange(10)]#列表推導(dǎo)式>>>a[72,26,80,65,34,86,19,74,52,40]>>>print(max(a),min(a),sum(a))8619548如果需要計算該列表中的所有元素的平均值,可以直接這樣用:>>>sum(a)*1.0/len(a)#Python2.7.1254.8>>>sum(a)/len(a)#Python常用內(nèi)置函數(shù)max()、min()、sum()這三個內(nèi)置函數(shù)30常用內(nèi)置函數(shù)內(nèi)置函數(shù)max()和min()的key參數(shù)可以用來指定比較規(guī)則>>>x=['21','1234','9']>>>max(x)'9'>>>max(x,key=len)'1234'>>>max(x,key=int)'1234'常用內(nèi)置函數(shù)內(nèi)置函數(shù)max()和min()的key參數(shù)可以用31常用內(nèi)置函數(shù)內(nèi)置函數(shù)type()和isinstance()可以判斷數(shù)據(jù)類型。>>>type([3])#查看[3]的類型<class'list'>>>>type({3})in(list,tuple,dict)#判斷{3}是否為list,tuple或dict類型的實(shí)例False>>>isinstance(3,int)#判斷3是否為int類型的實(shí)例True>>>isinstance(3j,(int,float,complex))#判斷3是否為int,float或complex類型True常用內(nèi)置函數(shù)內(nèi)置函數(shù)type()和isinstance()可32常用內(nèi)置函數(shù)range()是非常常用的內(nèi)置函數(shù),語法格式為range([start,]end[,step])。該函數(shù)返回具有惰性求值特點(diǎn)的range對象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)。參數(shù)start默認(rèn)為0,step默認(rèn)為1。>>>range(5)#start默認(rèn)為0,step默認(rèn)為1range(0,5)>>>list(_)[0,1,2,3,4]>>>list(range(1,10,2))#指定起始值和步長[1,3,5,7,9]>>>list(range(9,0,-2))#步長為負(fù)數(shù)時,start應(yīng)比end大[9,7,5,3,1]常用內(nèi)置函數(shù)range()是非常常用的內(nèi)置函數(shù),語法格式為r33常用內(nèi)置函數(shù)sorted()對列表、元組、字典、集合或其他可迭代對象進(jìn)行排序并返回新列表,reversed()對可迭代對象(生成器對象和具有惰性求值特性的zip、map、filter、enumerate等類似對象除外)進(jìn)行翻轉(zhuǎn)(首尾交換)并返回可迭代的reversed對象。>>>x=['aaaa','bc','d','b','ba']>>>sorted(x,key=lambdaitem:(len(item),item))#先按長度排序,長度一樣的正常排序['b','d','ba','bc','aaaa']>>>reversed(x)#逆序,返回reversed對象<list_reverseiteratorobjectat0x0000000003089E48>>>>list(reversed(x))#reversed對象是可迭代的[5,1,9,3,8,7,10,6,0,4,2]常用內(nèi)置函數(shù)sorted()對列表、元組、字典、集合或其他可34常用內(nèi)置函數(shù)內(nèi)置函數(shù)map()把一個函數(shù)func依次映射到序列或迭代器對象的每個元素上,并返回一個可迭代的map對象作為結(jié)果,map對象中每個元素是原序列中元素經(jīng)過函數(shù)func處理后的結(jié)果。>>>list(map(str,range(5)))#把列表中元素轉(zhuǎn)換為字符串['0','1','2','3','4']>>>defadd5(v):#單參數(shù)函數(shù) returnv+5>>>list(map(add5,range(10)))#把單參數(shù)函數(shù)映射到一個序列的所有元素[5,6,7,8,9,10,11,12,13,14]>>>defadd(x,y):#可以接收2個參數(shù)的函數(shù) returnx+y>>>list(map(add,range(5),range(5,10)))#把雙參數(shù)函數(shù)映射到兩個序列上[5,7,9,11,13]常用內(nèi)置函數(shù)內(nèi)置函數(shù)map()把一個函數(shù)func依次映射到序35常用內(nèi)置函數(shù)eval(<字符串>)函數(shù)是一個十分重要的函數(shù),它能夠以Python表達(dá)式的方式解析并執(zhí)行字符串,將返回結(jié)果輸出exec()函數(shù)用來執(zhí)行指定的Python源代碼或者由compile()編譯的代碼對象>>>x=

1>>>eval("x+

1")2>>>eval("1.1+

2.2")3.3>>>eval(“__import__(‘os’).startfile(r’c:\windows\\notepad.exe’)")>>>exec(‘help(sum)’)#查看內(nèi)置函數(shù)sum的幫助文檔常用內(nèi)置函數(shù)eval(<字符串>)函數(shù)是一個十分重要的函數(shù)36常用內(nèi)置函數(shù)enumerate()函數(shù)用來枚舉可迭代對象中的元素,返回可迭代的enumerate對象,其中每個元素都是包含索引和值的元組。>>>list(enumerate('abcd'))#枚舉字符串中的元素[(0,'a'),(1,'b'),(2,'c'),(3,'d')]>>>list(enumerate(['Python','Greate']))#枚舉列表中的元素[(0,'Python'),(1,'Greate')]>>>list(enumerate({'a':97,'b':98,'c':99}.items()))#枚舉字典中的元素[(0,('c',99)),(1,('a',97)),(2,('b',98))]>>>forindex,valueinenumerate(range(10,15)):#枚舉range對象中的元素 print((index,value),end='')(0,10)(1,11)(2,12)(3,13)(4,14)常用內(nèi)置函數(shù)enumerate()函數(shù)用來枚舉可迭代對象中的37常用內(nèi)置函數(shù)標(biāo)準(zhǔn)庫functools中的函數(shù)reduce()可以將一個接收2個參數(shù)的函數(shù)以迭代累積的方式從左到右依次作用到一個序列或迭代器對象的所有元素上,并且允許指定一個初始值。>>>fromfunctoolsimportreduce>>>seq=list(range(1,10))>>>reduce(lambdax,y:x+y,seq)45常用內(nèi)置函數(shù)標(biāo)準(zhǔn)庫functools中的函數(shù)reduce()38常用內(nèi)置函數(shù)內(nèi)置函數(shù)filter()將一個單參數(shù)函數(shù)作用到一個序列上,返回該序列中使得該函數(shù)返回值為True的那些元素組成的filter對象,如果指定函數(shù)為None,則返回序列中等價于True的元素。>>>seq=['foo','x41','?!','***']>>>deffunc(x): returnx.isalnum()#測試是否為字母或數(shù)字>>>filter(func,seq)#返回filter對象<filterobjectat0x000000000305D898>>>>list(filter(func,seq))#把filter對象轉(zhuǎn)換為列表['foo','x41']常用內(nèi)置函數(shù)內(nèi)置函數(shù)filter()將一個單參數(shù)函數(shù)作用到一39常用內(nèi)置函數(shù)zip()函數(shù)用來把多個可迭代對象中的元素壓縮到一起,返回一個可迭代的zip對象,其中每個元素都是包含原來的多個可迭代對象對應(yīng)位置上元素的元組,如同拉拉鏈一樣。>>>list(zip('abcd',[1,2,3]))#壓縮字符串和列表[('a',1),('b',2),('c',3)]>>>list(zip('123','abc',',.!'))#壓縮3個序列[('1','a',','),('2','b','.'),('3','c','!')]>>>x=zip('abcd','1234')>>>list(x)[('a','1'),('b','2'),('c','3'),('d','4')]常用內(nèi)置函數(shù)zip()函數(shù)用來把多個可迭代對象中的元素壓縮到40謝謝觀看謝謝觀看41函數(shù)和函數(shù)傳參李凱函數(shù)和函數(shù)傳參李凱42函數(shù)的定義微實(shí)例:生日歌。過生日時要為朋友唱生日歌,歌詞為:Happybirthdayto

you!Happybirthdaytoyou!Happy

birthday,

dear

<名字>Happybirthdayto

you!編寫程序?yàn)镸ike和Lily輸出生日歌。最簡單的實(shí)現(xiàn)方法是重復(fù)使用print()語句函數(shù)的定義微實(shí)例:生日歌。43函數(shù)的基本使用函數(shù)的基本使用44函數(shù)的定義函數(shù)是一段具有特定功能的、可重用的語句組,用函數(shù)名來表示并通過函數(shù)名進(jìn)行完成功能調(diào)用。函數(shù)也可以看作是一段具有名字的子程序,可以在需要的地方調(diào)用執(zhí)行,不需要在每個執(zhí)行地方重復(fù)編寫這些語句。每次使用函數(shù)可以提供不同的參數(shù)作為輸入,以實(shí)現(xiàn)對不同數(shù)據(jù)的處理;函數(shù)執(zhí)行后,還可以反饋相應(yīng)的處理結(jié)果。函數(shù)是一種功能抽象函數(shù)的定義函數(shù)是一段具有特定功能的、可重用的語句組,用函數(shù)名45函數(shù)的定義Python定義一個函數(shù)使用def保留字,語法形式如下:def

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

'''注釋'''<函數(shù)體>return<返回值列表>函數(shù)的定義Python定義一個函數(shù)使用def保留字,語法形式46函數(shù)的定義1234print("Happybirthdaytoyou!")print("Happybirthdaytoyou!")print("Happybirthday,dearMike!")print("Happybirthdayto

you!")最簡單的實(shí)現(xiàn)方法是重復(fù)使用print()語句,如下:函數(shù)的定義1print("Happybirthdayto47函數(shù)的定義微實(shí)例5.1m5.1HappyBirthday.py12345678910defhappy():print("Happybirthdaytoyou!")def

happyB(name):happy()happy()print("Happybirthday,dear

{}!".format(name))happy()happyB("Mike")print()happyB("Lily")>>>Happybirthdaytoyou!Happybirthdayto

you!Happybirthday,dearMike!Happybirthdayto

you!Happybirthdaytoyou!Happybirthdaytoyou!Happybirthday,dearLily!Happybirthdayto

you!函數(shù)的定義微實(shí)例5.1m5.1HappyBirthday.p48函數(shù)調(diào)用的過程程序調(diào)用一個函數(shù)需要執(zhí)行以下四個步驟:(1)調(diào)用程序在調(diào)用處暫停執(zhí)行;(2)在調(diào)用時將實(shí)參復(fù)制給函數(shù)的形參;(3)執(zhí)行函數(shù)體語句;(4)函數(shù)調(diào)用結(jié)束給出返回值,程序回到調(diào)用前的暫停處繼續(xù)執(zhí)行。函數(shù)調(diào)用的過程程序調(diào)用一個函數(shù)需要執(zhí)行以下四個步驟:49函數(shù)調(diào)用的過程微實(shí)例5.1中happyB()的被調(diào)用過程函數(shù)調(diào)用的過程微實(shí)例5.1中happyB()的被調(diào)用過程50函數(shù)調(diào)用的過程函數(shù)調(diào)用的過程51函數(shù)調(diào)用的過程函數(shù)調(diào)用的過程52lambda函數(shù)Python的有33個保留字,其中一個是lambda,該保留字用于定義一種特殊的函數(shù)——匿名函數(shù),又稱lambda函數(shù)。匿名函數(shù)并非沒有名字,而是將函數(shù)名作為函數(shù)結(jié)果返回,如下:<函數(shù)名>

=

lambda

<參數(shù)列表>:

<表達(dá)式>lambda函數(shù)與正常函數(shù)一樣,等價于下面形式:def

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

<表達(dá)式>lambda函數(shù)Python的有33個保留字,其中一個是la53lambda函數(shù)簡單說,lambda函數(shù)用于定義簡單的、能夠在一行內(nèi)表示的函數(shù),實(shí)例如下。>>>f=lambdax,y:x+

y>>>type(f)<class

'function'>>>>f(10,12)22lambda函數(shù)簡單說,lambda函數(shù)用于定義簡單的、能夠54函數(shù)的參數(shù)傳遞函數(shù)的參數(shù)傳遞55可選參數(shù)和可變數(shù)量參數(shù)在定義函數(shù)時,有些參數(shù)可以存在默認(rèn)值。默認(rèn)值參數(shù)必須出現(xiàn)在函數(shù)參數(shù)列表的最右端,且任何一個默認(rèn)值參數(shù)右邊不能有非默認(rèn)值參數(shù)。>>>defdup(str,times=

2):print(str*times)>>>dup("knock~")knock~knock~>>>dup("knock~",4)knock~knock~knock~knock~可選參數(shù)和可變數(shù)量參數(shù)在定義函數(shù)時,有些參數(shù)可以存在默認(rèn)值。56可選參數(shù)和可變數(shù)量參數(shù)在函數(shù)定義時,可以設(shè)計可變數(shù)量參數(shù),通過參數(shù)前增加星號(*)實(shí)現(xiàn)>>>defvfunc(a,

*b):print(type(b))fornin

b:a+=

nreturn

a>>>vfunc(1,2,3,4,5)<class

'tuple'>15可選參數(shù)和可變數(shù)量參數(shù)在函數(shù)定義時,可以設(shè)計可變數(shù)量參數(shù),通57參數(shù)的位置和名稱傳遞Python提供了按照形參名稱輸入實(shí)參的方式,調(diào)用如下:result=func(x2=4,y2=5,z2=6,x1=1,y1=2,

z1=3)由于調(diào)用函數(shù)時指定了參數(shù)名稱,所以參數(shù)之間的順序可以任意調(diào)整。參數(shù)的位置和名稱傳遞Python提供了按照形參名稱輸入實(shí)參的58變量的返回值return語句用來退出函數(shù)并將程序返回到函數(shù)被調(diào)用的位置繼續(xù)執(zhí)行。return語句同時可以將0個、1個或多個函數(shù)運(yùn)算完的結(jié)果返回給函數(shù)被調(diào)用處的變量,例如。>>>deffunc(a,

b):return

a*b>>>s=func("knock~",

2)>>>print(s)knock~knock~變量的返回值return語句用來退出函數(shù)并將程序返回到函數(shù)被59變量的返回值函數(shù)可以沒有return,此時函數(shù)并不返回值,如微實(shí)例5.1的happy()函數(shù)。函數(shù)也可以用return返回多個值,多個值以元組類型保存,例如。>>>deffunc(a,

b):return

b,a>>>s=func("knock~",

2)>>>print(s,

type(s))(2,'knock~')<class

'tuple'>變量的返回值函數(shù)可以沒有return,此時函數(shù)并不返回值,如60Python內(nèi)置函數(shù)(BIF)Python解釋器提供了68個內(nèi)置函數(shù),其中大部分會經(jīng)常用到abs()id()round()compile()locals()all()input()set()dir()map()any()int()sorted()exec()memoryview()asci()len()str()enumerate()next()bin()list()tuple()filter()object()bool()max()type()format()property()chr()min()zip()frozenset()repr()complex()oct()getattr()setattr()dict()open()globals()slice()divmod()ord()bytes()hasattr()staticmethod()eval()pow()delattr()help()sum()float()print()bytearray()isinstance()super()hash()range()callable()issubclass()vars()hex()reversed()classmethod()iter()

import()

Python內(nèi)置函數(shù)(BIF)Python解釋器提供了68個61常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用執(zhí)行下面的命令可以列出所有內(nèi)置函數(shù)>>>dir(__builtins__)Python標(biāo)準(zhǔn)庫turtleforward()pencolor()……input()print()str()range()……time……………………………………常用內(nèi)置函數(shù)內(nèi)置函數(shù)不需要導(dǎo)入任何模塊即可使用Python標(biāo)62函數(shù)功能簡要說明abs(x)返回數(shù)字x的絕對值或復(fù)數(shù)x的模all(iterable)如果對于可迭代對象中所有元素x都等價于True,也就是對于所有元素x都有bool(x)等于True,則返回True。對于空的可迭代對象也返回Trueany(iterable)只要可迭代對象iterable中存在元素x使得bool(x)為True,則返回True。對于空的可迭代對象,返回Falseascii(obj)把對象轉(zhuǎn)換為ASCII碼表示形式,必要的時候使用轉(zhuǎn)義字符來表示特定的字符bin(x)把整數(shù)x轉(zhuǎn)換為二進(jìn)制串表示形式bool(x)返回與x等價的布爾值True或Falsebytes(x)生成字節(jié)串,或把指定對象x轉(zhuǎn)換為字節(jié)串表示形式callable(obj)測試對象obj是否可調(diào)用。類和函數(shù)是可調(diào)用的,包含__call__()方法的類的對象也是可調(diào)用的compile()用于把Python代碼編譯成可被exec()或eval()函數(shù)執(zhí)行的代碼對象complex(real,[imag])返回復(fù)數(shù)chr(x)返回Unicode編碼為x的字符常用內(nèi)置函數(shù)函數(shù)功能簡要說明abs(x)返回數(shù)字x的絕對值或復(fù)數(shù)x的模a63函數(shù)功能簡要說明delattr(obj,name)刪除屬性,等價于dir(obj)返回指定對象或模塊obj的成員列表,如果不帶參數(shù)則返回當(dāng)前作用域內(nèi)所有標(biāo)識符divmod(x,y)返回包含整商和余數(shù)的元組((x-x%y)/y,x%y)enumerate(iterable[,start])返回包含元素形式為(0,iterable[0]),(1,iterable[1]),(2,iterable[2]),...的迭代器對象eval(s[,globals[,locals]])計算并返回字符串s中表達(dá)式的值exec(x)執(zhí)行代碼或代碼對象xexit()退出當(dāng)前解釋器環(huán)境filter(func,seq)返回filter對象,其中包含序列seq中使得單參數(shù)函數(shù)func返回值為True的那些元素,如果函數(shù)func為None則返回包含seq中等價于True的元素的filter對象float(x)把整數(shù)或字符串x轉(zhuǎn)換為浮點(diǎn)數(shù)并返回frozenset([x]))創(chuàng)建不可變的字典對象getattr(obj,name[,default])獲取對象中指定屬性的值,等價于,如果不存在指定屬性則返回default的值,如果要訪問的屬性不存在并且沒有指定default則拋出異常續(xù)表1常用內(nèi)置函數(shù)函數(shù)功能簡要說明delattr(obj,name)刪除屬性64函數(shù)功能簡要說明globals()返回包含當(dāng)前作用域內(nèi)全局變量及其值的字典hasattr(obj,name)測試對象obj是否具有名為name的成員hash(x)返回對象x的哈希值,如果x不可哈希則拋出異常help(obj)返回對象obj的幫助信息hex(x)把整數(shù)x轉(zhuǎn)換為十六進(jìn)制串id(obj)返回對象obj的標(biāo)識(內(nèi)存地址)input([提示])顯示提示,接收鍵盤輸入的內(nèi)容,返回字符串int(x[,d])返回實(shí)數(shù)(float)、分?jǐn)?shù)(Fraction)或高精度實(shí)數(shù)(Decimal)x的整數(shù)部分,或把d進(jìn)制的字符串x轉(zhuǎn)換為十進(jìn)制并返回,d默認(rèn)為十進(jìn)制isinstance(obj,class-or-type-or-tuple)測試對象obj是否屬于指定類型(如果有多個類型的話需要放到元組中)的實(shí)例iter(...)返回指定對象的可迭代對象len(obj)返回對象obj包含的元素個數(shù),適用于列表、元組、集合、字典、字符串以及range對象和其他可迭代對象續(xù)表2常用內(nèi)置函數(shù)函數(shù)功能簡要說明globals()返回包含當(dāng)前作用域內(nèi)全局變65函數(shù)功能簡要說明list([x])、set([x])、tuple([x])、dict([x])把對象x轉(zhuǎn)換為列表、集合、元組或字典并返回,或生成空列表、空集合、空元組、空字典locals()返回包含當(dāng)前作用域內(nèi)局部變量及其值的字典map(func,*iterables)返回包含若干函數(shù)值的map對象,函數(shù)func的參數(shù)分別來自于iterables指定的每個迭代對象,max(x)、min(x)返回可迭代對象x中的最大值、最小值,要求x中的所有元素之間可比較大小,允許指定排序規(guī)則和x為空時返回的默認(rèn)值next(iterator[,default])返回可迭代對象x中的下一個元素,允許指定迭代結(jié)束之后繼續(xù)迭代時返回的默認(rèn)值oct(x)把整數(shù)x轉(zhuǎn)換為八進(jìn)制串open(name[,mode])以指定模式mode打開文件name并返回文件對象ord(x)返回1個字符x的Unicode編碼pow(x,y,z=None)返回x的y次方,等價于x**y或(x**y)%z續(xù)表3常用內(nèi)置函數(shù)函數(shù)功能簡要說明list([x])、set([x])、tup66函數(shù)功能簡要說明print(value,...,sep='',end='\n',file=sys.stdout,flush=False)基本輸出函數(shù)quit()退出當(dāng)前解釋器環(huán)境range([start,]end[,step])返回range對象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)reduce(func,sequence[,initial])將雙參數(shù)的函數(shù)func以迭代的方式從左到右依次應(yīng)用至序列seq中每個元素,最終返回單個值作為結(jié)果。在Python2.x中該函數(shù)為內(nèi)置函數(shù),在Python3.x中需要從functools中導(dǎo)入reduce函數(shù)再使用repr(obj)返回對象obj的規(guī)范化字符串表示形式,對于大多數(shù)對象有eval(repr(obj))==objreversed(seq)返回seq(可以是列表、元組、字符串、range以及其他可迭代對象)中所有元素逆序后的迭代器對象續(xù)表4常用內(nèi)置函數(shù)函數(shù)功能簡要說明print(value,...,sep=67函數(shù)功能簡要說明round(x[,小數(shù)位數(shù)])對x進(jìn)行四舍五入,若不指定小數(shù)位數(shù),則返回整數(shù)sorted(iterable,key=None,reverse=False)返回排序后的列表,其中iterable表示要排序的序列或迭代對象,key用來指定排序規(guī)則或依據(jù),reverse用來指定升序或降序。該函數(shù)不改變iterable內(nèi)任何元素的順序str(obj)把對象obj直接轉(zhuǎn)換為字符串sum(x,start=0)返回序列x中所有元素之和,要求序列x中所有元素必須為數(shù)字,允許指定起始值start,返回start+sum(x)type(obj)返回對象obj的類型zip(seq1[,seq2[...]])返回zip對象,其中元素為(seq1[i],seq2[i],...)形式的元組,最終結(jié)果中包含的元素個數(shù)取決于所有參數(shù)序列或可迭代對象中最短的那個續(xù)表5常用內(nèi)置函數(shù)函數(shù)功能簡要說明round(x[,小數(shù)位數(shù)])對x進(jìn)行四68常用內(nèi)置函數(shù)dir()函數(shù)可以查看指定模塊中包含的所有成員或者指定對象類型所支持的操作。help()函數(shù)則返回指定模塊或函數(shù)的說明文檔。importtimedir(time)help(time)常用內(nèi)置函數(shù)dir()函數(shù)可以查看指定模塊中包含的所有成員或69常用內(nèi)置函數(shù)ord()和chr()是一對功能相反的函數(shù),ord()用來返回單個字符的序數(shù)或Unicode碼,chr()用來返回某序數(shù)對應(yīng)的字符str()則直接將其任意類型參數(shù)轉(zhuǎn)換為字符串。>>>ord('a')97>>>chr(65)'A'>>>chr(ord('A')+1)'B'>>>str(1)'1'>>>str(1234)'1234'>>>str([1,2,3])'[1,2,3]'>>>str((1,2,3))'(1,2,3)'>>>str({1,2,3})'set([1,2,3])'常用內(nèi)置函數(shù)ord()和chr()是一對功能相反的函數(shù),or70常用內(nèi)置函數(shù)max()、min()、sum()這三個內(nèi)置函數(shù)分別用于計算列表、元組或其他可迭代對象中所有元素最大值、最小值以及所有元素之和,sum()要求元素支持加法運(yùn)算,max()和min()則要求序列或可迭代對象中的元素之間可比較大小。>>>importrandom>>>a=[random.randint(1,100)foriinrange(10)]#列表推導(dǎo)式>>>a[72,26,80,65,34,86,19,74,52,40]>>>print(max(a),min(a),sum(a))8619548如果需要計算該列表中的所有元素的平均值,可以直接這樣用:>>>sum(a)*1.0/len(a)#Python2.7.1254.8>>>sum(a)/len(a)#Python常用內(nèi)置函數(shù)max()、min()、sum()這三個內(nèi)置函數(shù)71常用內(nèi)置函數(shù)內(nèi)置函數(shù)max()和min()的key參數(shù)可以用來指定比較規(guī)則>>>x=['21','1234','9']>>>max(x)'9'>>>max(x,key=len)'1234'>>>max(x,key=int)'1234'常用內(nèi)置函數(shù)內(nèi)置函數(shù)max()和min()的key參數(shù)可以用72常用內(nèi)置函數(shù)內(nèi)置函數(shù)type()和isinstance()可以判斷數(shù)據(jù)類型。>>>type([3])#查看[3]的類型<class'list'>>>>type({3})in(list,tuple,dict)#判斷{3}是否為list,tuple或dict類型的實(shí)例False>>>isinstance(3,int)#判斷3是否為int類型的實(shí)例True>>>isinstance(3j,(int,float,complex))#判斷3是否為int,float或complex類型True常用內(nèi)置函數(shù)內(nèi)置函數(shù)type()和isinstance()可73常用內(nèi)置函數(shù)range()是非常常用的內(nèi)置函數(shù),語法格式為range([start,]end[,step])。該函數(shù)返回具有惰性求值特點(diǎn)的range對象,其中包含左閉右開區(qū)間[start,end)內(nèi)以step為步長的整數(shù)。參數(shù)start默認(rèn)為0,step默認(rèn)為1。>>>range(5)#start默認(rèn)為0,step默認(rèn)為1range(0,5)>>>list(_)[0,1,2,3,4]>>>list(range(1,10,2))#指定起始值和步長[1,3,5,7,9]>>>list(range(9,0,-2))#步長為負(fù)數(shù)時,start應(yīng)比end大[9,7,5,3,1]常用內(nèi)置函數(shù)range()是非常常用的內(nèi)置函數(shù),語法格式為r74常用內(nèi)置函數(shù)sorted()對列表、元組、字典、集合或其他可迭代對象進(jìn)行排序并返回新列表,reversed()對可迭代對象(生成器對象和具有惰性求值特性的zip、map、filter、enumerate等類似對象除外)進(jìn)行翻轉(zhuǎn)(首尾交換)并返回可迭代的reversed對象。>>>x=['aaaa','bc','d','b','ba']>>>sorted(x,key=lambdaitem:(len(item),item))#先按長度排序,長度一樣的正常排序['b','d','ba','bc','aaaa']>>>reversed(x)#逆序,返回reversed對象<list_reverseiteratorobjectat0x0000000003089E48>>>>list(reversed(x))#reversed對象是可迭代的[5,1,9,3,8,7,10,6,0,4,2]常用內(nèi)置函數(shù)sorted()對列表、元組、字典、集合或其他可75常用內(nèi)置函數(shù)內(nèi)置函數(shù)map()把一個函數(shù)func依次映射到序列或迭代器對象的每個元素上,并返回一個可迭代的map對

溫馨提示

  • 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

提交評論