Day7
01.函數(shù)的作用
02.函數(shù)的定義
03.函數(shù)的參數(shù)
01.函數(shù)的作用
發(fā)射子彈,左移,右移
左移-右移-左移-左移-右移-右移
沒(méi)有函數(shù)的時(shí)候,問(wèn)題在哪?
1.同樣一個(gè)功能的代碼需要重復(fù)很多次
2.當(dāng)功能發(fā)生改變的時(shí)候,需要修改多個(gè)地方怎么解決這個(gè)問(wèn)題?
使用函數(shù)
* 發(fā)射子彈
print('上膛')
print('瞄準(zhǔn)')
print('扣扳機(jī)')
print('======')
# 左移
def left():
print('看后視鏡')
print('向左打方向盤(pán)')
print('踩油門(mén)')
print('回正方向盤(pán)')
print('======')
# 右移
def right():
print('看后視鏡')
print('向右打方向盤(pán)')
print('踩油門(mén)')
print('回正方向盤(pán)')
print('======')
left()
運(yùn)行結(jié)果:
上膛
瞄準(zhǔn)
扣扳機(jī)
======
看后視鏡
向左打方向盤(pán)
踩油門(mén)
回正方向盤(pán)
======
02.函數(shù)的定義
1.函數(shù):就是對(duì)實(shí)現(xiàn)某一特定功能的代碼塊的封裝
2.作用:封裝(將功能綁定在一個(gè)函數(shù)中,想要使用這個(gè)功能的時(shí)候,直接調(diào)用這個(gè)函數(shù))
3.怎么聲明函數(shù)
def 函數(shù)名(參數(shù)列表):
'''函數(shù)說(shuō)明'''
函數(shù)體
def:是python中聲明函數(shù)的關(guān)鍵字
函數(shù)說(shuō)明:對(duì)函數(shù)的功能和參數(shù)以及返回值進(jìn)行說(shuō)明
函數(shù)名:標(biāo)識(shí)符。PEP8。見(jiàn)名知義
():固定格式
參數(shù)列表:(形參列表)參數(shù)名1,參數(shù)名2,參數(shù)名3....
參數(shù)的功能是用來(lái)接收從函數(shù)外部傳到函數(shù)內(nèi)部的數(shù)據(jù)
函數(shù)體:實(shí)現(xiàn)函數(shù)功能的代碼塊,可能會(huì)包含一個(gè)return語(yǔ)句
4.初學(xué)者聲明函數(shù)的步驟
- a.確定函數(shù)的功能
- b.確定函數(shù)名
- c.確定參數(shù)
確定需不需要參數(shù)
確定需要幾個(gè)參數(shù)
(看實(shí)現(xiàn)函數(shù)的功能需不需要從外面?zhèn)鲾?shù)據(jù)到函數(shù)里面) - d.實(shí)現(xiàn)函數(shù)的功能
- e.確定返回值
5.函數(shù)的調(diào)用
函數(shù)名(實(shí)參列表)
函數(shù)名:調(diào)用的函數(shù)一定是已經(jīng)聲明過(guò)的,想要使用什么功能就調(diào)用對(duì)應(yīng)的函數(shù)
實(shí)參列表:實(shí)參是用來(lái)給形參賦值的
函數(shù)的調(diào)用過(guò)程:
0.回到函數(shù)聲明的地方
1.使用實(shí)參給形參輔助
2.執(zhí)行函數(shù)體
3.函數(shù)體執(zhí)行完成后,回到函數(shù)調(diào)用的位置
注意:
1.函數(shù)只有在調(diào)用的時(shí)候才會(huì)執(zhí)行
2.函數(shù)調(diào)用的時(shí)候一定要保證每個(gè)形參都有值
3.函數(shù)的調(diào)用一定是在函數(shù)的聲明后面
4.一個(gè)函數(shù)可以調(diào)用多次
寫(xiě)一個(gè)函數(shù),計(jì)算兩個(gè)數(shù)的和
def my_sum(number1,number2):
"""
(這兒寫(xiě)函數(shù)的功能的描述)求兩個(gè)數(shù)的和
:param number1: 提供第一個(gè)數(shù)據(jù),int
:param number2: 提供第二個(gè)數(shù)據(jù),int
:return:對(duì)返回值進(jìn)行說(shuō)明
"""
print(number1 + number2)
my_sum(10,300)
運(yùn)行結(jié)果:
310
- 練習(xí):聲明一個(gè)函數(shù),功能是打印10個(gè) *
def x():
print('*' * 10)
x()
運(yùn)行結(jié)果:
**********
03.函數(shù)的參數(shù)
- 參數(shù)的作用:從函數(shù)的外面給函數(shù)傳值
1.位置參數(shù)
傳參的時(shí)候,實(shí)參按順序給形參賦值
def func1(a,b,c):
print(a,b,c)
func1(10,20,30)
運(yùn)行結(jié)果:
10 20 30
2.關(guān)鍵字參數(shù)
調(diào)用函數(shù)的時(shí)候:
函數(shù)名(參數(shù)=值)
func1(b=20,a=10,c=30)
# 說(shuō)明:位置參數(shù)和關(guān)鍵字參數(shù)可以混著來(lái)
print('====')
func1(10,c=30,b=20)
def func3(a,b='cc',c='bb',d='a'):
print(a,b,c,d)
func3(10,d='100')
運(yùn)行結(jié)果:
10 20 30
====
10 20 30
10 cc bb 100
3.參數(shù)的默認(rèn)值
- python中函數(shù)聲明的時(shí)候參數(shù)可以設(shè)置默認(rèn)值,有默認(rèn)值的參數(shù)必須放在參數(shù)列表的最后
- 調(diào)用參數(shù)有默認(rèn)值的函數(shù),有默認(rèn)值的參數(shù)可以傳參也可以不傳參。
def func2(a,b,c=100):
print(a,b,c)
func2(10,20,30)
func2(10,20)
運(yùn)行結(jié)果:
10 20 30
10 20 100
4.參數(shù)個(gè)數(shù)不定
參數(shù)的個(gè)數(shù)不確定的時(shí)候,就在聲明函數(shù)的時(shí)候,形參的前面加一個(gè)*,將形參變成元組
調(diào)用函數(shù)的時(shí)候,這個(gè)參數(shù)會(huì)將相應(yīng)的實(shí)參作為元組的元素保存起來(lái)
寫(xiě)一個(gè)程序,求多個(gè)數(shù)的和
def my_sum(*numbers):
print(numbers)
sum1 = 0
for item in numbers:
sum1 += item
print(sum1)
my_sum(10,20,30,40,50)
運(yùn)行結(jié)果:
(10, 20, 30, 40, 50)
150
# 注意:參數(shù)個(gè)數(shù)不定,可以是形參中的一部分是不定的,個(gè)數(shù)不確定的參數(shù)要放在參數(shù)的最后
def func1(char,*numbers):
print(char,numbers)
func1('a',10,20,39)
# 參數(shù)個(gè)數(shù)不定,也可以不傳參,對(duì)應(yīng)的參數(shù)是一個(gè)空的元組
運(yùn)行結(jié)果:
a (10, 20, 39)