Python中關(guān)于函數(shù)的具體用法范例以及介紹
1.函數(shù)的介紹
在開發(fā)程序時,需要某塊代碼多次,但是為了提高編寫的效率以及代碼的重用,所以把具有獨立功能的代碼塊組織為一個小模塊,這就是函數(shù)
定義函數(shù)的規(guī)則:
- 函數(shù)代碼塊以 def 關(guān)鍵詞開頭,后接函數(shù)標(biāo)識符名稱和圓括號 ()。
- 任何傳入?yún)?shù)和自變量必須放在圓括號中間,圓括號之間可以用于定義參數(shù)。
- 函數(shù)的第一行語句可以選擇性地使用文檔字符串—用于存放函數(shù)說明。
- 函數(shù)內(nèi)容以冒號 : 起始,并且縮進(jìn)。
- return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個值給調(diào)用方,不帶表達(dá)式的 return相當(dāng)于返回 None。
2.函數(shù)的定義和調(diào)用
格式如下:
def 函數(shù)名(): 執(zhí)行語句 函數(shù)名() #調(diào)用函數(shù)
實例:
def info(): print("人生苦短我用python") info()
定義了函數(shù)之后,就相當(dāng)于有了一個具有某些功能的代碼,想要讓這些代碼能夠執(zhí)行,需要調(diào)用它
調(diào)用函數(shù)很簡單的,通過 函數(shù)名() 即可完成調(diào)用
每次調(diào)用函數(shù)時,函數(shù)都會從頭開始執(zhí)行,當(dāng)這個函數(shù)中的代碼執(zhí)行完畢后,意味著調(diào)用結(jié)束了
當(dāng)然了如果函數(shù)中執(zhí)行到了return也會結(jié)束函數(shù)
3.函數(shù)的參數(shù)
首先定義一個帶有參數(shù)的函數(shù),并且調(diào)用這個函數(shù)
實例:
def test1(a,b):# a,b為參數(shù) c=a+b print(c) test1(1,2) # 調(diào)用帶有參數(shù)的函數(shù)時,需要在小括號中,傳遞數(shù)據(jù)
定義時小括號中的參數(shù),用來接收參數(shù)用的,稱為 “形參”
調(diào)用時小括號中的參數(shù),用來傳遞給函數(shù)用的,稱為 “實參”
4.參數(shù)的分類
函數(shù)參數(shù)大概分為四種:
- 位置參數(shù)
- 關(guān)鍵字參數(shù)
- 缺省參數(shù)
- 不定長參數(shù)
4.1.位置參數(shù)
格式如下:
def 函數(shù)名(參數(shù)1,參數(shù)2): 代碼塊 函數(shù)名(值1,值2)
實例:
def fun(a,b): print("a:",a) print("b:",b) fun(2,3)
4.2.關(guān)鍵字參數(shù)
格式如下:
def 函數(shù)名(參數(shù)1,參數(shù)2): 代碼塊 函數(shù)名(參數(shù)1=值1,參數(shù)2=值2)
實例:
def fun(a,b): print("a:",a) print("b:",b) fun(a=2,b=3)
參數(shù)調(diào)用時可以改變傳參順序,如果有位置參數(shù)需要位置參數(shù)放在關(guān)鍵字參數(shù)前面
實例:
def fun(a,b): print("a:",a) print("b:",b) fun(3,b=2)
如果關(guān)鍵字參數(shù)傳參要在位置參數(shù)之前,將會報錯
實例:
def fun(a,b): print("a:",a) print("b:",b) fun(a=3,2)
4.3.缺省參數(shù)
在形參中默認(rèn)有值的參數(shù),稱之為缺省參數(shù)(也稱為默認(rèn)參數(shù))
實例:
def printinfo(name,age=20): print("name:",name) print("age:",age) printinfo(name="jack")
調(diào)用函數(shù)時,缺省參數(shù)的值如果沒有傳入,則取默認(rèn)值(形式參數(shù)),如果傳入,則取實際參數(shù)
缺省參數(shù)一定要位于位置參數(shù)的最后面
4.4.不定長參數(shù)
有時可能需要一個函數(shù)能處理比當(dāng)初聲明時更多的參數(shù), 這些參數(shù)叫做不定長參數(shù),聲明時不會命名。
格式如下:
def printinfo(*args,**kwargs): print("args:",args) print("kwargs:",kwargs) printinfo(參數(shù))
加了星號(*)的變量args會存放所有未命名的變量參數(shù),args為元組
加**的變量kwargs會存放命名參數(shù),即形如key=value的參數(shù), kwargs為字典
1.不定長參數(shù)*args
實例:
def printinfo(*args): print("args:",args) printinfo(100,200,300,400)
2.不定長參數(shù)* * kwargs
實例:
def printinfo(**kwargs): print("kwargs:",kwargs) printinfo(a=100,b=200,c=300,d= 400)
4.5.函數(shù)位置順序
格式如下:
def fun(位置參數(shù),*args,缺省參數(shù),**kwargs): 代碼塊 fun(參數(shù)值)
實例:
def sun(a,*args,b=22,**kwargs): print("a:",a) print("args:",args) print("b:",b) print("kwargs:",kwargs) sun(100,200,300,b=2,m=3,n=4)
如果很多個值都是不定長參數(shù),那么這種情況下,可以將缺省參數(shù)放到 *args的后面, 但如果有**kwargs的話,**kwargs必須是最后的
4.6.函數(shù)的返回值
場景:
我給兒子10塊錢,讓他給我買包煙。這個例子中,10塊錢是我給兒子的,就相當(dāng)于調(diào)用函數(shù)時傳遞到參數(shù),讓兒子買煙這個事情最終的目標(biāo)是,讓他把煙給你帶回來然后給你對么,,,此時煙就是返回值
格式如下:
def sum(): 代碼塊 return 值 sum()
實例:
def sum(a,b): return a+b result = sum(1,2)#保存函數(shù)的返回值 print(result)
1.多個return
實例:
def create_nums(num): print("---1---") if num == 100: print("---2---") return num + 1 # 函數(shù)中下面的代碼不會被執(zhí)行,因為return除了能夠?qū)?shù)據(jù)返回之外,還有一個隱藏的功能:結(jié)束函數(shù) print("return執(zhí)行之后不會繼續(xù)執(zhí)行") else: print("wewe") return "輸入不是100" print(create_nums(100))
一個函數(shù)中可以有多個return語句,但是只要有一個return語句被執(zhí)行到,那么這個函數(shù)就會結(jié)束了,因此后面的return沒有什么用處
2.返回多個數(shù)據(jù)
實例:
def divid(a, b): add = a+b #相加 reduct = a-b #相減 return add, reduct #默認(rèn)是元組 result = divid(5, 2) print(result)
return后面可以是元組,列表、字典等,只要是能夠存儲多個數(shù)據(jù)的類型,就可以一次性返回多個數(shù)據(jù)
4.7.函數(shù)的類型
函數(shù)根據(jù)有沒有參數(shù),有沒有返回值,可以相互組合,一共有4種:
- 1. 無參數(shù),無返回值
- 2. 無參數(shù),有返回值
- 3. 有參數(shù),無返回值
- 4. 有參數(shù),有返回值
1.無參數(shù),無返回值的函數(shù)
此類函數(shù),不能接收參數(shù),也沒有返回值,一般情況下,打印提示燈類似的功能,使用這類的函數(shù)
實例:
def printMenu(): print('--------------------------') print('xx涮涮鍋 點菜系統(tǒng)') print('') print(' 1. 羊肉涮涮鍋') print(' 2. 牛肉涮涮鍋') print(' 3. 豬肉涮涮鍋') print('--------------------------')
2.無參數(shù),有返回值的函數(shù)
此類函數(shù),不能接收參數(shù),但是可以返回某個數(shù)據(jù),一般情況下,像采集數(shù)據(jù),用此類函數(shù)
實例:
def getTemperature(): # 這里是獲取溫度的一些處理過程 # 為了簡單起見,先模擬返回一個數(shù)據(jù) return 24 tem=getTemperature() print(tem)
3.有參數(shù),無返回值的函數(shù)
此類函數(shù),能接收參數(shù),但不可以返回數(shù)據(jù),一般情況下,對某些變量設(shè)置數(shù)據(jù)而不需結(jié)果時,用此類函數(shù)
4.有參數(shù),有返回值的函數(shù)
此類函數(shù),不僅能接收參數(shù),還可以返回某個數(shù)據(jù),一般情況下,像數(shù)據(jù)處理并需要結(jié)果的應(yīng)用,用此類函數(shù)
實例:
# 計算1~num的累積和 def calculateNum(num): result = 0 i = 1 while i<=num: result = result + i i+=1 return result cal=calculateNum(100) print(cal)
4.8.函數(shù)的嵌套
一個函數(shù)里面又調(diào)用了另外一個函數(shù),這就是所謂的函數(shù)嵌套調(diào)用
實例:
def testb(): print("testb start") print("testb testb 執(zhí)行") print("testb end") def testa(): print("testa start") testb() print("testa end") testa()
如果函數(shù)A中,調(diào)用了另外一個函數(shù)B,那么先把函數(shù)B中的任務(wù)都執(zhí)行完畢之后才會回到上次 函數(shù)A執(zhí)行的位置
4.9.匿名函數(shù)
lambda函數(shù)也叫匿名函數(shù),即函數(shù)沒有具體的名稱
實例:
g = lambda x :x+1 print(g(1))
lambda函數(shù)可以賦值給變量,默認(rèn)是返回的,所以不用再加return關(guān)鍵字
例如g = lambda x:x+1,可以看成如下函數(shù),冒號前是參數(shù),可以有多個,用逗號隔開,冒號右邊的返回值
def g(x): return x + 1 print(g(1))
5.函數(shù)小練習(xí)
寫一個函數(shù)求三個數(shù)的和,并返回結(jié)果
def func(a,b,c): return a+b+c print(func(1,4,7))
寫一個函數(shù)求三個數(shù)的平均值,并返回結(jié)果
def func1(a,b,c): return (a+b+c)/3 print(func1(2,3,4))
寫一個函數(shù)求每個數(shù)與平均值之間的差,并返回結(jié)果
def func2(a,b,c): d=(a+b+c)/3 return a-d,b-d,c-d print(func2(5,8,2))
到此這篇關(guān)于Python中關(guān)于函數(shù)的具體用法范例以及介紹的文章就介紹到這了,更多相關(guān)Python 函數(shù)用法內(nèi)容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。