Python中關(guān)于函數(shù)的具體用法范例以及介紹
1.函數(shù)的介紹
在開(kāi)發(fā)程序時(shí),需要某塊代碼多次,但是為了提高編寫的效率以及代碼的重用,所以把具有獨(dú)立功能的代碼塊組織為一個(gè)小模塊,這就是函數(shù)
定義函數(shù)的規(guī)則:
- 函數(shù)代碼塊以 def 關(guān)鍵詞開(kāi)頭,后接函數(shù)標(biāo)識(shí)符名稱和圓括號(hào) ()。
- 任何傳入?yún)?shù)和自變量必須放在圓括號(hào)中間,圓括號(hào)之間可以用于定義參數(shù)。
- 函數(shù)的第一行語(yǔ)句可以選擇性地使用文檔字符串—用于存放函數(shù)說(shuō)明。
- 函數(shù)內(nèi)容以冒號(hào) : 起始,并且縮進(jìn)。
- return [表達(dá)式] 結(jié)束函數(shù),選擇性地返回一個(gè)值給調(diào)用方,不帶表達(dá)式的 return相當(dāng)于返回 None。
2.函數(shù)的定義和調(diào)用
格式如下:
def 函數(shù)名(): 執(zhí)行語(yǔ)句 函數(shù)名() #調(diào)用函數(shù)
實(shí)例:
def info(): print("人生苦短我用python") info()
定義了函數(shù)之后,就相當(dāng)于有了一個(gè)具有某些功能的代碼,想要讓這些代碼能夠執(zhí)行,需要調(diào)用它
調(diào)用函數(shù)很簡(jiǎn)單的,通過(guò) 函數(shù)名() 即可完成調(diào)用
每次調(diào)用函數(shù)時(shí),函數(shù)都會(huì)從頭開(kāi)始執(zhí)行,當(dāng)這個(gè)函數(shù)中的代碼執(zhí)行完畢后,意味著調(diào)用結(jié)束了
當(dāng)然了如果函數(shù)中執(zhí)行到了return也會(huì)結(jié)束函數(shù)
3.函數(shù)的參數(shù)
首先定義一個(gè)帶有參數(shù)的函數(shù),并且調(diào)用這個(gè)函數(shù)
實(shí)例:
def test1(a,b): # a,b為參數(shù) c=a+b print(c) test1(1,2) # 調(diào)用帶有參數(shù)的函數(shù)時(shí),需要在小括號(hào)中,傳遞數(shù)據(jù)
定義時(shí)小括號(hào)中的參數(shù),用來(lái)接收參數(shù)用的,稱為 “形參”
調(diào)用時(shí)小括號(hào)中的參數(shù),用來(lái)傳遞給函數(shù)用的,稱為 “實(shí)參”
4.參數(shù)的分類
函數(shù)參數(shù)大概分為四種:
- 位置參數(shù)
- 關(guān)鍵字參數(shù)
- 缺省參數(shù)
- 不定長(zhǎng)參數(shù)
4.1.位置參數(shù)
格式如下:
def 函數(shù)名(參數(shù)1,參數(shù)2): 代碼塊 函數(shù)名(值1,值2)
實(shí)例:
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)
實(shí)例:
def fun(a,b): print("a:",a) print("b:",b) fun(a=2,b=3)
參數(shù)調(diào)用時(shí)可以改變傳參順序,如果有位置參數(shù)需要位置參數(shù)放在關(guān)鍵字參數(shù)前面
實(shí)例:
def fun(a,b): print("a:",a) print("b:",b) fun(3,b=2)
如果關(guān)鍵字參數(shù)傳參要在位置參數(shù)之前,將會(huì)報(bào)錯(cuò)
實(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ù))
實(shí)例:
def printinfo(name,age=20): print("name:",name) print("age:",age) printinfo(name="jack")
調(diào)用函數(shù)時(shí),缺省參數(shù)的值如果沒(méi)有傳入,則取默認(rèn)值(形式參數(shù)),如果傳入,則取實(shí)際參數(shù)
缺省參數(shù)一定要位于位置參數(shù)的最后面
4.4.不定長(zhǎng)參數(shù)
有時(shí)可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù), 這些參數(shù)叫做不定長(zhǎng)參數(shù),聲明時(shí)不會(huì)命名。
格式如下:
def printinfo(*args,**kwargs): print("args:",args) print("kwargs:",kwargs) printinfo(參數(shù))
加了星號(hào)(*)的變量args會(huì)存放所有未命名的變量參數(shù),args為元組
加**的變量kwargs會(huì)存放命名參數(shù),即形如key=value的參數(shù), kwargs為字典
1.不定長(zhǎng)參數(shù)*args
實(shí)例:
def printinfo(*args): print("args:",args) printinfo(100,200,300,400)
2.不定長(zhǎng)參數(shù)* * kwargs
實(shí)例:
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ù)值)
實(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)
如果很多個(gè)值都是不定長(zhǎng)參數(shù),那么這種情況下,可以將缺省參數(shù)放到 *args的后面, 但如果有**kwargs的話,**kwargs必須是最后的
4.6.函數(shù)的返回值
場(chǎng)景:
我給兒子10塊錢,讓他給我買包煙。這個(gè)例子中,10塊錢是我給兒子的,就相當(dāng)于調(diào)用函數(shù)時(shí)傳遞到參數(shù),讓兒子買煙這個(gè)事情最終的目標(biāo)是,讓他把煙給你帶回來(lái)然后給你對(duì)么,,,此時(shí)煙就是返回值
格式如下:
def sum(): 代碼塊 return 值 sum()
實(shí)例:
def sum(a,b): return a+b result = sum(1,2) #保存函數(shù)的返回值 print(result)
1.多個(gè)return
實(shí)例:
def create_nums(num): print("---1---") if num == 100: print("---2---") return num + 1 # 函數(shù)中下面的代碼不會(huì)被執(zhí)行,因?yàn)閞eturn除了能夠?qū)?shù)據(jù)返回之外,還有一個(gè)隱藏的功能:結(jié)束函數(shù) print("return執(zhí)行之后不會(huì)繼續(xù)執(zhí)行") else: print("wewe") return "輸入不是100" print(create_nums(100))
一個(gè)函數(shù)中可以有多個(gè)return語(yǔ)句,但是只要有一個(gè)return語(yǔ)句被執(zhí)行到,那么這個(gè)函數(shù)就會(huì)結(jié)束了,因此后面的return沒(méi)有什么用處
2.返回多個(gè)數(shù)據(jù)
實(shí)例:
def divid(a, b): add = a+b #相加 reduct = a-b #相減 return add, reduct #默認(rèn)是元組 result = divid(5, 2) print(result)
return后面可以是元組,列表、字典等,只要是能夠存儲(chǔ)多個(gè)數(shù)據(jù)的類型,就可以一次性返回多個(gè)數(shù)據(jù)
4.7.函數(shù)的類型
函數(shù)根據(jù)有沒(méi)有參數(shù),有沒(méi)有返回值,可以相互組合,一共有4種:
- 1. 無(wú)參數(shù),無(wú)返回值
- 2. 無(wú)參數(shù),有返回值
- 3. 有參數(shù),無(wú)返回值
- 4. 有參數(shù),有返回值
1.無(wú)參數(shù),無(wú)返回值的函數(shù)
此類函數(shù),不能接收參數(shù),也沒(méi)有返回值,一般情況下,打印提示燈類似的功能,使用這類的函數(shù)
實(shí)例:
def printMenu(): print('--------------------------') print(' xx涮涮鍋 點(diǎn)菜系統(tǒng)') print('') print(' 1. 羊肉涮涮鍋') print(' 2. 牛肉涮涮鍋') print(' 3. 豬肉涮涮鍋') print('--------------------------')
2.無(wú)參數(shù),有返回值的函數(shù)
此類函數(shù),不能接收參數(shù),但是可以返回某個(gè)數(shù)據(jù),一般情況下,像采集數(shù)據(jù),用此類函數(shù)
實(shí)例:
def getTemperature(): # 這里是獲取溫度的一些處理過(guò)程 # 為了簡(jiǎn)單起見(jiàn),先模擬返回一個(gè)數(shù)據(jù) return 24 tem=getTemperature() print(tem)
3.有參數(shù),無(wú)返回值的函數(shù)
此類函數(shù),能接收參數(shù),但不可以返回?cái)?shù)據(jù),一般情況下,對(duì)某些變量設(shè)置數(shù)據(jù)而不需結(jié)果時(shí),用此類函數(shù)
4.有參數(shù),有返回值的函數(shù)
此類函數(shù),不僅能接收參數(shù),還可以返回某個(gè)數(shù)據(jù),一般情況下,像數(shù)據(jù)處理并需要結(jié)果的應(yīng)用,用此類函數(shù)
實(shí)例:
# 計(jì)算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ù)的嵌套
一個(gè)函數(shù)里面又調(diào)用了另外一個(gè)函數(shù),這就是所謂的函數(shù)嵌套調(diào)用
實(shí)例:
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)用了另外一個(gè)函數(shù)B,那么先把函數(shù)B中的任務(wù)都執(zhí)行完畢之后才會(huì)回到上次 函數(shù)A執(zhí)行的位置
4.9.匿名函數(shù)
lambda函數(shù)也叫匿名函數(shù),即函數(shù)沒(méi)有具體的名稱
實(shí)例:
g = lambda x :x+1 print(g(1))
lambda函數(shù)可以賦值給變量,默認(rèn)是返回的,所以不用再加return關(guān)鍵字
例如g = lambda x:x+1,可以看成如下函數(shù),冒號(hào)前是參數(shù),可以有多個(gè),用逗號(hào)隔開(kāi),冒號(hào)右邊的返回值
def g(x): return x + 1 print(g(1))
5.函數(shù)小練習(xí)
寫一個(gè)函數(shù)求三個(gè)數(shù)的和,并返回結(jié)果
def func(a,b,c): return a+b+c print(func(1,4,7))
寫一個(gè)函數(shù)求三個(gè)數(shù)的平均值,并返回結(jié)果
def func1(a,b,c): return (a+b+c)/3 print(func1(2,3,4))
寫一個(gè)函數(shù)求每個(gè)數(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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Python中利用Into包整潔地進(jìn)行數(shù)據(jù)遷移的教程
這篇文章主要介紹了在Python中如何利用Into包整潔地進(jìn)行數(shù)據(jù)遷移,在數(shù)據(jù)格式的任意兩個(gè)格式之間高效地遷移數(shù)據(jù),需要的朋友可以參考下2015-03-03python實(shí)現(xiàn)簡(jiǎn)單的socket server實(shí)例
這篇文章主要介紹了python實(shí)現(xiàn)簡(jiǎn)單的socket server的方法,實(shí)例分析了Python中socket的操作技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2015-04-04使用Python合并PDF文件并添加自定義目錄及頁(yè)腳的全過(guò)程
在處理文檔時(shí),我們經(jīng)常遇到需要合并多個(gè)PDF文件并添加目錄及頁(yè)腳的情況,本文將介紹如何使用Python,特別是PyPDF2和reportlab庫(kù)來(lái)實(shí)現(xiàn)這一功能我們將通過(guò)一個(gè)實(shí)用的示例來(lái)演示整個(gè)過(guò)程,需要的朋友可以參考下2024-03-03解決使用Pandas 讀取超過(guò)65536行的Excel文件問(wèn)題
這篇文章主要介紹了解決使用Pandas 讀取超過(guò)65536行的Excel文件問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11