Python 函數(shù)定義以及參數(shù)傳遞

創(chuàng)新互聯(lián)堅(jiān)持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:網(wǎng)站建設(shè)、成都網(wǎng)站設(shè)計(jì)、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時(shí)代的游仙網(wǎng)站設(shè)計(jì)、移動(dòng)媒體設(shè)計(jì)的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!
1.函數(shù)定義
#形如def func(args...):
doSomething123
以關(guān)鍵字def 開頭,后面是函數(shù)名和參數(shù)下面是函數(shù)處理過程。
舉例:
def add( a, b ):
return a+b12
參數(shù)可以設(shè)定默認(rèn)值,如:
def add( a, b=10 ): #注意:默認(rèn)值參數(shù)只會(huì)運(yùn)算一次
return a+b12
默認(rèn)值參數(shù)只會(huì)運(yùn)算一次是什么意思?
def func( a, b=[] ): #b的默認(rèn)值指向一個(gè)空的列表,每次不帶默認(rèn)值都會(huì)指向這塊內(nèi)存
b.append(a) return b
print(func(1))#向默認(rèn)的空列表里加入元素1 ,默認(rèn)列表里已經(jīng)是[1]print(func(2))#向默認(rèn)的列表里加入元素2,默認(rèn)列表里已經(jīng)是[1,2]print(func(3,[]))#向b指向的空列表里加入元素1 ,默認(rèn)列表里還是[1,2]print(func(4))#向默認(rèn)的列表里加入元素4,默認(rèn)列表里已經(jīng)是[1,2,4]'''
結(jié)果:
[1]
[1, 2]
[3]
[1, 2, 4]
'''12345678910111213141516
這下明白為什么默認(rèn)參數(shù)只計(jì)算一次了吧,函數(shù)參數(shù)不傳遞時(shí)默認(rèn)值總是指向固定的內(nèi)存空間,就是第一次計(jì)算的空間。
2.參數(shù)傳遞
def func(a, b):
print('a=%d, b=%d' % (a,b) )12
在使用函數(shù)時(shí)可以如下方式,結(jié)果都是相同的
func(10,20) #不使用參數(shù)名,需要按參數(shù)順序傳遞func(a=10,b=20) #使用參數(shù)名可以不按順序傳遞func(b=20,a=10)#結(jié)果:a=10, b=20a=10, b=20a=10, b=201234567
如果函數(shù)定義形式如下方式:
def func(*args): #這種定義會(huì)把傳遞的參數(shù)包成元組
print(args,type(args))
func(10,20)#結(jié)果:#(10, 20) class 'tuple'1234567
舉一個(gè)和上述過程相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
a = (10, 20)
func(*a) #在調(diào)用函數(shù)使用`*`則會(huì)把元組解包成單個(gè)變量按順序傳入函數(shù)#結(jié)果:a=10, b=20123456
總結(jié):*號(hào)在定義函數(shù)參數(shù)時(shí),傳入函數(shù)的參數(shù)會(huì)轉(zhuǎn)換成元組,如果 *號(hào)在調(diào)用時(shí)則會(huì)把元組解包成單個(gè)元素。
另一種定義:
def func(**kw):#使用**定義參數(shù)會(huì)把傳入?yún)?shù)包裝成字典dict
print(kw, type(kw) )
func(a=10,b=20)#這種函數(shù)在使用時(shí)必須指定參數(shù)值,使用key=value這種形式#結(jié)果:{'b': 20, 'a': 10} class 'dict'12345
相反的例子:
def func(a,b):
print('a=%d, b=%d' % (a,b) )
d = {'a':10, 'b':20 }
func(**d) #在調(diào)用時(shí)使用**會(huì)把字典解包成變量傳入函數(shù)。12345
def func(*args, **kw):#這種形式的定義代表可以接受任意類型的參數(shù)
print(args,kw )12
總結(jié):**號(hào)在定義函數(shù)參數(shù)時(shí),傳入函數(shù)的參數(shù)會(huì)轉(zhuǎn)換成字典,如果 **號(hào)在調(diào)用時(shí)則會(huì)把字典解包成單個(gè)元素。
lambda表達(dá)式
lambda表達(dá)式就是一種簡單的函數(shù)
形如 f = lambda 參數(shù)1,參數(shù)2: 返回的計(jì)算值
例如:
add = lambda x,y: x+y
print(add(1,2))'''
結(jié)果:3
'''12345
Python奉行簡潔主義,易于讀寫,它使你能夠?qū)W⒂诮鉀Q問題而不是去搞明白語言本身。
Python是開源軟件。這意味著你不用花一分錢便能復(fù)制、閱讀、改動(dòng)它。
Python兼容眾多平臺(tái),所以開發(fā)者不會(huì)遇到使用其他語言時(shí)常會(huì)遇到的困擾。
Python標(biāo)準(zhǔn)庫確實(shí)很龐大。它可以幫助你處理各種工作,包括正則表達(dá)式、文檔生成、單元測試、線程、數(shù)據(jù)庫、網(wǎng)頁瀏覽器、CGI、FTP、電子郵件、XML、XML-RPC、HTML、WAV文件、密碼系統(tǒng)、GUI(圖形用戶界面)、Tk和其他與系統(tǒng)有關(guān)的操作。
Python這門語言也是很有意思的,它有一個(gè)很強(qiáng)大的庫,turtle,可以用來作畫。
在學(xué)習(xí)Python的過程中,有幾個(gè)比較重要的內(nèi)置函數(shù):help()函數(shù)、dir()函數(shù)、input()與raw_input()函數(shù)、print()函數(shù)、type()函數(shù)。
第一、help()函數(shù)
Help()函數(shù)的參數(shù)分為兩種:如果傳一個(gè)字符串做參數(shù)的話,它會(huì)自動(dòng)搜索以這個(gè)字符串命名的模塊、方法等;如果傳入的是一個(gè)對象,就會(huì)顯示這個(gè)對象的類型的幫助。比如輸入help(‘print’),它就會(huì)尋找以‘print’為名的模塊、類等,找不到就會(huì)看到提示信息;而print在Python里是一個(gè)保留字,和pass、return同等,而非對象,所以help(print)也會(huì)報(bào)錯(cuò)。
第二、dir()函數(shù)
dir()函數(shù)返回任意對象的屬性和方法列表,包含模塊對象、函數(shù)對象、字符串對象、列表對象、字典對象等。盡管查找和導(dǎo)入模塊相對容易,但是記住每個(gè)模塊包含什么卻不是這么簡單,您并不希望總是必須查看源代碼來找出答案。Python提供了一種方法,可以使用內(nèi)置的dir()函數(shù)來檢查模塊的內(nèi)容,當(dāng)你為dir()提供一個(gè)模塊名的時(shí)候,它返回模塊定義的屬性列表。dir()函數(shù)適用于所有對象的類型,包含字符串、整數(shù)、列表、元組、字典、函數(shù)、定制類、類實(shí)例和類方法。
第三、input與raw_input函數(shù)
都是用于讀取用戶輸入的,不同的是input()函數(shù)期望用戶輸入的是一個(gè)有效的表達(dá)式,而raw_input()函數(shù)是將用戶的輸入包裝成一個(gè)字符串。
第四、Print()函數(shù)
Print在Python3版本之間是作為Python語句使用的,在Python3里print是作為函數(shù)使用的。
第五、type()函數(shù)
Type()函數(shù)返回任意對象的數(shù)據(jù)類型。在types模塊中列出了可能的數(shù)據(jù)類型,這對于處理多種數(shù)據(jù)類型的函數(shù)非常有用,它通過返回類型對象來做到這一點(diǎn),可以將這個(gè)類型對象與types模塊中定義類型相比較。
map函數(shù)第一個(gè)參數(shù)是一個(gè)函數(shù)function,第二個(gè)參數(shù)是一個(gè)可迭代的對象iterable,他的功能是將可迭代對象iterable里面的每一項(xiàng)都應(yīng)用到函數(shù)function中,然后返回一個(gè)迭代器。
可迭代器里面有多少個(gè)元素則結(jié)果就包含多少個(gè)元素
filter() 函數(shù)用于過濾序列,過濾掉不符合條件的元素,返回由符合條件元素組成的新列表。
該接收兩個(gè)參數(shù),第一個(gè)為函數(shù),第二個(gè)為序列,序列的每個(gè)元素作為參數(shù)傳遞給函數(shù)進(jìn)行判斷,然后返回 True 或 False,最后將返回 True 的元素放到新列表中。
reduce() 函數(shù)會(huì)對參數(shù)序列中元素進(jìn)行累積。
函數(shù)將一個(gè)數(shù)據(jù)集合(鏈表,元組等)中的所有數(shù)據(jù)進(jìn)行下列操作:用傳給 reduce 中的函數(shù) function(有兩個(gè)參數(shù))先對集合中的第 1、2 個(gè)元素進(jìn)行操作,得到的結(jié)果再與第三個(gè)數(shù)據(jù)用 function 函數(shù)運(yùn)算,最后得到一個(gè)結(jié)果。
python函數(shù)的作用是:
1、函數(shù)其實(shí)是把某個(gè)功能的代碼封裝到一個(gè)代碼塊中,用來為某個(gè)重復(fù)使用的功能做調(diào)用的一個(gè)代碼塊,可以稱為一個(gè)函數(shù)的代碼封裝。可以在自定義函數(shù)的小括號(hào)中傳入多個(gè)參數(shù)。
2、形參:在定義函數(shù)時(shí),小括號(hào)中的參數(shù)名稱。實(shí)參:在函數(shù)名稱的小括號(hào)中,傳入實(shí)際的值代替了形參的這個(gè)值。函數(shù)可以有返回值(使用return進(jìn)行返回),也可以沒有返回值。
3、形參可以當(dāng)做函數(shù)內(nèi)部的一個(gè)變量使用,往往只在函數(shù)內(nèi)部進(jìn)行使用,不影響函數(shù)外部的相同名稱的變量。
4、在函數(shù)內(nèi)部可以返回某個(gè)值。直接在函數(shù)內(nèi)部退出來,而不再繼續(xù)執(zhí)行函數(shù)下面的代碼。
更多關(guān)于python函數(shù)的作用,進(jìn)入:查看更多內(nèi)容
當(dāng)前文章:python函數(shù)重要嗎,python為什么要用函數(shù)
文章鏈接:http://chinadenli.net/article45/dsisjei.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站制作、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)、自適應(yīng)網(wǎng)站、ChatGPT、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)