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)文章希望大家以后多多支持本站!
版權(quán)聲明:本站文章來(lái)源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請(qǐng)保持原文完整并注明來(lái)源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來(lái)源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來(lái),僅供學(xué)習(xí)參考,不代表本站立場(chǎng),如有內(nèi)容涉嫌侵權(quán),請(qǐng)聯(lián)系alex-e#qq.com處理。
關(guān)注官方微信