函數(shù)介紹
<1>什么是函數(shù)
請(qǐng)看如下代碼:
一大串的print代碼......
運(yùn)行后打印出一個(gè)佛祖的畫(huà)像骗露。
想一想:
如果一個(gè)程序在不同的地方需要輸出“佛祖鎮(zhèn)樓”幔戏,程序應(yīng)該怎樣設(shè)計(jì)缩挑?
if 條件1: 輸出‘佛祖鎮(zhèn)樓’ ...... if 條件2: 輸出‘佛祖鎮(zhèn)樓’ ......
如果需要輸出多次弹渔,是否意味著編寫(xiě)這塊代碼多次呢媒熊?
小總結(jié):
- 如果在開(kāi)發(fā)程序時(shí)帽哑,需要某塊代碼多次,但是為了提高編寫(xiě)的效率以及代碼的重用僻族,所以把具有獨(dú)立功能的代碼塊組織為一個(gè)小模塊屡谐,這就是函數(shù)。
函數(shù)定義和調(diào)用
<1>定義函數(shù)
定義函數(shù)的格式如下:
def 函數(shù)名():
代碼
demo:
# 定義一個(gè)函數(shù)度秘,能夠完成打印信息的功能
def printInfo():
print '------------------------------------'
print ' 生命苦短,我用Python'
print '------------------------------------'
<2>調(diào)用函數(shù)
定義了函數(shù)之后剑梳,就相當(dāng)于有了一個(gè)具有某些功能的代碼,想要讓這些代碼能夠執(zhí)行侨赡,需要調(diào)用它。
調(diào)用函數(shù)很簡(jiǎn)單的齐婴,通過(guò) 函數(shù)名() 即可完成調(diào)用柠偶。
demo:
# 定義完函數(shù)后毡证,函數(shù)是不會(huì)自動(dòng)執(zhí)行的料睛,需要調(diào)用它才可以
printInfo()
<3>練一練
要求:定義一個(gè)函數(shù),能夠輸出自己的姓名和年齡摇邦,并且調(diào)用這個(gè)函數(shù)讓它執(zhí)行
- 使用def定義函數(shù)
- 編寫(xiě)完函數(shù)之后恤煞,通過(guò) 函數(shù)名() 進(jìn)行調(diào)用
函數(shù)的文檔說(shuō)明
>>> def test(a,b):
... "用來(lái)完成對(duì)2個(gè)數(shù)求和"
... print("%d"%(a+b))
...
>>>
>>> test(11,22)
33
如果執(zhí)行,以下代碼
>>> help(test)
能夠看到test函數(shù)的相關(guān)說(shuō)明
Help on function test in module __main__:
test(a, b)
用來(lái)完成對(duì)2個(gè)數(shù)求和
(END)
函數(shù)參數(shù)(一)
思考一個(gè)問(wèn)題喜喂,如下:
現(xiàn)在需要定義一個(gè)函數(shù),這個(gè)函數(shù)能夠完成2個(gè)數(shù)的加法運(yùn)算诈茧,并且把結(jié)果打印出來(lái),該怎樣設(shè)計(jì)鸥昏?下面的代碼可以嗎?有什么缺陷嗎膳汪?
def add2num(): a = 11 b = 22 c = a+b print c
為了讓一個(gè)函數(shù)更通用,即想讓它計(jì)算哪兩個(gè)數(shù)的和征字,就讓它計(jì)算哪兩個(gè)數(shù)的和匙姜,在定義函數(shù)的時(shí)候可以讓函數(shù)接收數(shù)據(jù),就解決了這個(gè)問(wèn)題郭计,這就是函數(shù)的參數(shù)
<1> 定義帶有參數(shù)的函數(shù)
示例如下:
def add2num(a, b):
c = a+b
print c
<2> 調(diào)用帶有參數(shù)的函數(shù)
以調(diào)用上面的add2num(a, b)函數(shù)為例:
def add2num(a, b):
c = a+b
print c
add2num(11, 22) #調(diào)用帶有參數(shù)的函數(shù)時(shí)澎迎,需要在小括號(hào)中夹供,傳遞數(shù)據(jù)
調(diào)用帶有參數(shù)函數(shù)的運(yùn)行過(guò)程:
<3> 練一練
要求:定義一個(gè)函數(shù),完成前2個(gè)數(shù)完成加法運(yùn)算氛什,然后對(duì)第3個(gè)數(shù),進(jìn)行減法贸铜;然后調(diào)用這個(gè)函數(shù)
- 使用def定義函數(shù),要注意有3個(gè)參數(shù)
- 調(diào)用的時(shí)候渤早,這個(gè)函數(shù)定義時(shí)有幾個(gè)參數(shù),那么就需要傳遞幾個(gè)參數(shù)
<4> 調(diào)用函數(shù)時(shí)參數(shù)的順序
>>> def test(a,b):
... print(a,b)
...
>>> test(1,2)
1 2
>>> test(b=1,a=2)
2 1
>>>
>>> test(b=1,2)
File "<stdin>", line 1
SyntaxError: positional argument follows keyword argument
>>>
>>>
<5> 小總結(jié)
- 定義時(shí)小括號(hào)中的參數(shù),用來(lái)接收參數(shù)用的登下,稱(chēng)為 “形參”
- 調(diào)用時(shí)小括號(hào)中的參數(shù),用來(lái)傳遞給函數(shù)用的,稱(chēng)為 “實(shí)參”
函數(shù)返回值(一)
<1>“返回值”介紹
現(xiàn)實(shí)生活中的場(chǎng)景:
我給兒子10塊錢(qián)侵状,讓他給我買(mǎi)包煙。這個(gè)例子中,10塊錢(qián)是我給兒子的蹋凝,就相當(dāng)于調(diào)用函數(shù)時(shí)傳遞到參數(shù),讓兒子買(mǎi)煙這個(gè)事情最終的目標(biāo)是伐割,讓他把煙給你帶回來(lái)然后給你對(duì)么,,唯卖,此時(shí)煙就是返回值
開(kāi)發(fā)中的場(chǎng)景:
定義了一個(gè)函數(shù)抽减,完成了獲取室內(nèi)溫度,想一想是不是應(yīng)該把這個(gè)結(jié)果給調(diào)用者史汗,只有調(diào)用者擁有了這個(gè)返回值,才能夠根據(jù)當(dāng)前的溫度做適當(dāng)?shù)恼{(diào)整
綜上所述:
- 所謂“返回值”,就是程序中函數(shù)完成一件事情后副硅,最后給調(diào)用者的結(jié)果
<2>帶有返回值的函數(shù)
想要在函數(shù)中把結(jié)果返回給調(diào)用者,需要在函數(shù)中使用return
如下示例:
def add2num(a, b):
c = a+b
return c
或者
def add2num(a, b):
return a+b
<3>保存函數(shù)的返回值
在本小節(jié)剛開(kāi)始的時(shí)候,說(shuō)過(guò)的“買(mǎi)煙”的例子中,最后兒子給你煙時(shí)零蓉,你一定是從兒子手中接過(guò)來(lái) 對(duì)么,程序也是如此章喉,如果一個(gè)函數(shù)返回了一個(gè)數(shù)據(jù)落包,那么想要用這個(gè)數(shù)據(jù),那么就需要保存
保存函數(shù)的返回值示例如下:
#定義函數(shù)
def add2num(a, b):
return a+b
#調(diào)用函數(shù)撮竿,順便保存函數(shù)的返回值
result = add2num(100,98)
#因?yàn)閞esult已經(jīng)保存了add2num的返回值髓需,所以接下來(lái)就可以使用了
print result
結(jié)果:
198
4種函數(shù)的類(lèi)型
函數(shù)根據(jù)有沒(méi)有參數(shù),有沒(méi)有返回值咧擂,可以相互組合俯逾,一共有4種
- 無(wú)參數(shù)桌肴,無(wú)返回值
- 無(wú)參數(shù)水醋,又反悔
- 有參數(shù),無(wú)返回值
- 有參數(shù),有返回值
<1>無(wú)參數(shù)耀盗,無(wú)返回值的函數(shù)
此類(lèi)函數(shù)舌厨,不能接收參數(shù),也沒(méi)有返回值,一般情況下炊汤,打印提示燈類(lèi)似的功能,使用這類(lèi)的函數(shù)
def printMenu():
print '--------------------------'
print ' xx涮涮鍋 點(diǎn)菜系統(tǒng)'
print ''
print ' 1. 羊肉涮涮鍋'
print ' 2. 牛肉涮涮鍋'
print ' 3. 豬肉涮涮鍋'
print '--------------------------'
結(jié)果:
<2>無(wú)參數(shù)婿着,有返回值的函數(shù)
此類(lèi)函數(shù)提完,不能接收參數(shù),但是可以返回某個(gè)數(shù)據(jù),一般情況下粗梭,像采集數(shù)據(jù),用此類(lèi)函數(shù)
# 獲取溫度
def getTemperature():
#這里是獲取溫度的一些處理過(guò)程
#為了簡(jiǎn)單起見(jiàn)斩启,先模擬返回一個(gè)數(shù)據(jù)
return 24
temperature = getTemperature()
print '當(dāng)前的溫度為:',temperature
結(jié)果:
當(dāng)前的溫度為: 24
<3>有參數(shù),無(wú)返回值的函數(shù)
此類(lèi)函數(shù),能接收參數(shù)此虑,但不可以返回?cái)?shù)據(jù)介杆,一般情況下荆隘,對(duì)某些變量設(shè)置數(shù)據(jù)而不需結(jié)果時(shí)凰荚,用此類(lèi)函數(shù)
<4>有參數(shù)缆毁,有返回值的函數(shù)
此類(lèi)函數(shù),不僅能接收參數(shù)浇雹,還可以返回某個(gè)數(shù)據(jù),一般情況下硫痰,像數(shù)據(jù)處理并需要結(jié)果的應(yīng)用,用此類(lèi)函數(shù)
# 計(jì)算1~num的累積和
def calculateNum(num):
result = 0
i = 1
while i<=num:
result = result + i
i+=1
return result
result = calculateNum(100)
print '1~100的累積和為:',result
結(jié)果:
1~100的累積和為: 5050
<5>小總結(jié)
- 函數(shù)根據(jù)有沒(méi)有參數(shù),有沒(méi)有返回值可以相互組合
- 定義函數(shù)時(shí),是根據(jù)實(shí)際的功能需求來(lái)設(shè)計(jì)的,所以不同開(kāi)發(fā)人員編寫(xiě)的函數(shù)類(lèi)型各不相同
函數(shù)的嵌套調(diào)用
def testB():
print '---- testB start----'
print '這里是testB函數(shù)執(zhí)行的代碼...(省略)...'
print '---- testB end----'
def testA():
print '---- testA start----'
testB()
print '---- testA end----'
testA()
結(jié)果:
---- testA start----
---- testB start----
這里是testB函數(shù)執(zhí)行的代碼...(省略)...
---- testB end----
---- testA end----
小總結(jié):
-
一個(gè)函數(shù)里面又調(diào)用了另外一個(gè)函數(shù),這就是所謂的函數(shù)嵌套調(diào)用
image.png - 如果函數(shù)A中,調(diào)用了另外一個(gè)函數(shù)B,那么先把函數(shù)B中的任務(wù)都執(zhí)行完畢之后才會(huì)回到上次 函數(shù)A執(zhí)行的位置
函數(shù)應(yīng)用:打印圖形和數(shù)學(xué)計(jì)算
目標(biāo)
- 感受函數(shù)的嵌套調(diào)用
- 感受程序設(shè)計(jì)的思路,復(fù)雜問(wèn)題分解為簡(jiǎn)單問(wèn)題
思考&實(shí)現(xiàn)1
1.寫(xiě)一個(gè)函數(shù)打印一條橫線
2.打印自定義行數(shù)的橫線
參考代碼1
# 打印一條橫線
def printOneLine():
print("-"*30)
# 打印多條橫線
def printNumLine(num):
i=0
# 因?yàn)閜rintOneLine函數(shù)已經(jīng)完成了打印橫線的功能,
# 只需要多次調(diào)用此函數(shù)即可
while i<num:
printOneLine()
i+=1
printNumLine(3)
思考&實(shí)現(xiàn)2
1.寫(xiě)一個(gè)函數(shù)求三個(gè)數(shù)的和
2.寫(xiě)一個(gè)函數(shù)求三個(gè)數(shù)的平均值
參考代碼2
# 求3個(gè)數(shù)的和
def sum3Number(a,b,c):
return a+b+c # return 的后面可以是數(shù)值,也可是一個(gè)表達(dá)式
# 完成對(duì)3個(gè)數(shù)求平均值
def average3Number(a,b,c):
# 因?yàn)閟um3Number函數(shù)已經(jīng)完成了3個(gè)數(shù)的就和,所以只需調(diào)用即可
# 即把接收到的3個(gè)數(shù),當(dāng)做實(shí)參傳遞即可
sumResult = sum3Number(a,b,c)
aveResult = sumResult/3.0
return aveResult
# 調(diào)用函數(shù)骚秦,完成對(duì)3個(gè)數(shù)求平均值
result = average3Number(11,2,55)
print("average is %d"%result)
局部變量
<1>什么是局部變量
如下圖所示:
小總結(jié)
- 局部變量胞得,就是在函數(shù)內(nèi)部定義的變量
- 不同的函數(shù)跃巡,可以定義相同的名字的局部變量,但是各用個(gè)的不會(huì)產(chǎn)生影響
- 局部變量的作用兔朦,為了臨時(shí)保存數(shù)據(jù)需要在函數(shù)中定義變量來(lái)進(jìn)行存儲(chǔ)俐填,這就是它的作用
全局變量
<1>什么是全局變量
如果一個(gè)變量,既能在一個(gè)函數(shù)中使用驶悟,也能在其他的函數(shù)中使用,這樣的變量就是全局變量
demo如下:
# 定義全局變量
a = 100
def test1():
print(a)
def test2():
print(a)
# 調(diào)用函數(shù)
test1()
test2()
運(yùn)行結(jié)果:
<2>全局變量和局部變量名字相同問(wèn)題
看如下代碼:
<3>修改全局變量
既然全局變量材失,就是能夠在所以的函數(shù)中進(jìn)行使用痕鳍,那么可否進(jìn)行修改呢龙巨?
代碼如下:
<4>總結(jié)1:
- 在函數(shù)外邊定義的變量叫做全局變量
- 全局變量能夠在所有的函數(shù)中進(jìn)行訪問(wèn)
- 如果在函數(shù)中修改全局變量笼呆,那么就需要使用global進(jìn)行聲明,否則出錯(cuò)
- 如果全局變量的名字和局部變量的名字相同旨别,那么使用的是局部變量的诗赌,小技巧強(qiáng)龍不壓地頭蛇
<5>可變類(lèi)型的全局變量
>>> a = 1
>>> def f():
... a += 1
... print a
...
>>> f()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 2, in f
UnboundLocalError: local variable 'a' referenced before assignment
>>>
>>>
>>> li = [1,]
>>> def f2():
... li.append(1)
... print li
...
>>> f2()
[1, 1]
>>> li
[1, 1]
<6>總結(jié)2:
- 在函數(shù)中不使用global聲明全局變量時(shí)不能修改全局變量的本質(zhì)是不能修改全局變量的指向,即不能將全局變量指向新的數(shù)據(jù)秸弛。
- 對(duì)于不可變類(lèi)型的全局變量來(lái)說(shuō)铭若,因其指向的數(shù)據(jù)不能修改洪碳,所以不使用global時(shí)無(wú)法修改全局變量。
- 對(duì)于可變類(lèi)型的全局變量來(lái)說(shuō)叼屠,因其指向的數(shù)據(jù)可以修改瞳腌,所以不使用global時(shí)也可修改全局變量。
函數(shù)應(yīng)用:學(xué)生管理系統(tǒng)
函數(shù)返回值(二)
在python中我們可不可以返回多個(gè)值镜雨?
>>> def divid(a, b):
... shang = a//b
... yushu = a%b
... return shang, yushu
...
>>> sh, yu = divid(5, 2)
>>> sh
2
>>> yu
1
本質(zhì)是利用了元組
函數(shù)參數(shù)(二)
1. 缺省參數(shù)
調(diào)用函數(shù)時(shí)嫂侍,缺省參數(shù)的值如果沒(méi)有傳入,則被認(rèn)為是默認(rèn)值冷离。下例會(huì)打印默認(rèn)的age吵冒,如果age沒(méi)有被傳入:
def printinfo( name, age = 35 ):
# 打印任何傳入的字符串
print "Name: ", name
print "Age ", age
# 調(diào)用printinfo函數(shù)
printinfo(name="miki" )
printinfo( age=9,name="miki" )
以上實(shí)例輸出結(jié)果:
Name: miki
Age 35
Name: miki
Age 9
注意:帶有默認(rèn)值的參數(shù)一定要位于參數(shù)列表的最后面。
>>> def printinfo(name, age=35, sex):
... print name
...
File "<stdin>", line 1
SyntaxError: non-default argument follows default argument
2.不定長(zhǎng)參數(shù)
有時(shí)可能需要一個(gè)函數(shù)能處理比當(dāng)初聲明時(shí)更多的參數(shù)西剥。這些參數(shù)叫做不定長(zhǎng)參數(shù)痹栖,聲明時(shí)不會(huì)命名。
基本語(yǔ)法如下:
def functionname([formal_args,] *args, **kwargs):
"函數(shù)_文檔字符串"
function_suite
return [expression]
加了星號(hào)()的變量args會(huì)存放所有未命名的變量參數(shù)瞭空,args為元組揪阿;而加*的變量kwargs會(huì)存放命名參數(shù),即形如key=value的參數(shù)咆畏, kwargs為字典南捂。
>>> def fun(a, b, *args, **kwargs):
... """可變參數(shù)演示示例"""
... print "a =", a
... print "b =", b
... print "args =", args
... print "kwargs: "
... for key, value in kwargs.items():
... print key, "=", value
...
>>> fun(1, 2, 3, 4, 5, m=6, n=7, p=8) # 注意傳遞的參數(shù)對(duì)應(yīng)
a = 1
b = 2
args = (3, 4, 5)
kwargs:
p = 8
m = 6
n = 7
>>>
>>>
>>>
>>> c = (3, 4, 5)
>>> d = {"m":6, "n":7, "p":8}
>>> fun(1, 2, *c, **d) # 注意元組與字典的傳參方式
a = 1
b = 2
args = (3, 4, 5)
kwargs:
p = 8
m = 6
n = 7
>>>
>>>
>>>
>>> fun(1, 2, c, d) # 注意不加星號(hào)與上面的區(qū)別
a = 1
b = 2
args = ((3, 4, 5), {'p': 8, 'm': 6, 'n': 7})
kwargs:
>>>
>>>
3. 引用傳參
- 可變類(lèi)型與不可變類(lèi)型的變量分別作為函數(shù)參數(shù)時(shí),會(huì)有什么不同嗎旧找?
- Python有沒(méi)有類(lèi)似C語(yǔ)言中的指針傳參呢溺健?
>>> def selfAdd(a):
... """自增"""
... a += a
...
>>> a_int = 1
>>> a_int
1
>>> selfAdd(a_int)
>>> a_int
1
>>> a_list = [1, 2]
>>> a_list
[1, 2]
>>> selfAdd(a_list)
>>> a_list
[1, 2, 1, 2]
Python中函數(shù)參數(shù)是引用傳遞(注意不是值傳遞)。對(duì)于不可變類(lèi)型钮蛛,因變量不能修改鞭缭,所以運(yùn)算不會(huì)影響到變量自身;而對(duì)于可變類(lèi)型來(lái)說(shuō)魏颓,函數(shù)體中的運(yùn)算有可能會(huì)更改傳入的參數(shù)變量岭辣。
想一想為什么
>>> def selfAdd(a):
... """自增"""
... a = a + a # 我們更改了函數(shù)體的這句話
...
>>> a_int = 1
>>> a_int
1
>>> selfAdd(a_int)
>>> a_int
1
>>> a_list = [1, 2]
>>> a_list
[1, 2]
>>> selfAdd(a_list)
>>> a_list
[1, 2] # 想一想為什么沒(méi)有變呢?
遞歸函數(shù)
<1>什么是遞歸函數(shù)
通過(guò)前面的學(xué)習(xí)知道一個(gè)函數(shù)可以調(diào)用其他函數(shù)甸饱。
如果一個(gè)函數(shù)在內(nèi)部不調(diào)用其它的函數(shù)沦童,而是自己本身的話,這個(gè)函數(shù)就是遞歸函數(shù)叹话。
<2>遞歸函數(shù)的作用
舉個(gè)例子偷遗,我們來(lái)計(jì)算階乘 n! = 1 * 2 * 3 * ... * n
解決辦法1:
看階乘的規(guī)律
1! = 1
2! = 2 × 1 = 2 × 1!
3! = 3 × 2 × 1 = 3 × 2!
4! = 4 × 3 × 2 × 1 = 4 × 3!
...
n! = n × (n-1)!
解決辦法2:
原理
匿名函數(shù)
用lambda關(guān)鍵詞能創(chuàng)建小型匿名函數(shù)。這種函數(shù)得名于省略了用def聲明函數(shù)的標(biāo)準(zhǔn)步驟渣刷。
lambda函數(shù)的語(yǔ)法只包含一個(gè)語(yǔ)句鹦肿,如下:
lambda [arg1 [,arg2,.....argn]]:expression
如下實(shí)例:
sum = lambda arg1, arg2: arg1 + arg2
#調(diào)用sum函數(shù)
print "Value of total : ", sum( 10, 20 )
print "Value of total : ", sum( 20, 20 )
以上實(shí)例輸出結(jié)果:
Value of total : 30
Value of total : 40
Lambda函數(shù)能接收任何數(shù)量的參數(shù)但只能返回一個(gè)表達(dá)式的值
匿名函數(shù)不能直接調(diào)用print,因?yàn)閘ambda需要一個(gè)表達(dá)式
應(yīng)用場(chǎng)合
函數(shù)作為參數(shù)傳遞
1.自己定義函數(shù)
>>> def fun(a, b, opt):
... print "a =", a
... print "b =", b
... print "result =", opt(a, b)
...
>>> fun(1, 2, lambda x,y:x+y)
a = 1
b = 2
result = 3
2.作為內(nèi)置函數(shù)的參數(shù)
想一想辅柴,下面的數(shù)據(jù)如何指定按age或name排序箩溃?
stus = [
{"name":"zhangsan", "age":18},
{"name":"lisi", "age":19},
{"name":"wangwu", "age":17}
]
按name排序:
>>> stus.sort(key = lambda x:x['name'])
>>> stus
[{'age': 19, 'name': 'lisi'}, {'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}]
按age排序:
>>> stus.sort(key = lambda x:x['age'])
>>> stus
[{'age': 17, 'name': 'wangwu'}, {'age': 18, 'name': 'zhangsan'}, {'age': 19, 'name': 'lisi'}]
函數(shù)使用注意事項(xiàng)
1. 自定義函數(shù)
<1>無(wú)參數(shù)瞭吃、無(wú)返回值
def 函數(shù)名():
語(yǔ)句
<2>無(wú)參數(shù)、有返回值
def 函數(shù)名():
語(yǔ)句
return 需要返回的數(shù)值
注意:
- 一個(gè)函數(shù)到底有沒(méi)有返回值涣旨,就看有沒(méi)有return歪架,因?yàn)橹挥衦eturn才可以返回?cái)?shù)據(jù)
- 在開(kāi)發(fā)中往往根據(jù)需求來(lái)設(shè)計(jì)函數(shù)需不需要返回值
- 函數(shù)中,可以有多個(gè)return語(yǔ)句霹陡,但是只要執(zhí)行到一個(gè)return語(yǔ)句和蚪,那么就意味著這個(gè)函數(shù)的調(diào)用完成
<3>有參數(shù)、無(wú)返回值
def 函數(shù)名(形參列表):
語(yǔ)句
注意:
- 在調(diào)用函數(shù)時(shí)烹棉,如果需要把一些數(shù)據(jù)一起傳遞過(guò)去攒霹,被調(diào)用函數(shù)就需要用參數(shù)來(lái)接收
- 參數(shù)列表中變量的個(gè)數(shù)根據(jù)實(shí)際傳遞的數(shù)據(jù)的多少來(lái)確定
<4>有參數(shù)、有返回值
def 函數(shù)名(形參列表):
語(yǔ)句
return 需要返回的數(shù)值
<5>函數(shù)名不能重復(fù)
2. 調(diào)用函數(shù)
<1>調(diào)用的方式為:
函數(shù)名([實(shí)參列表])
<2>調(diào)用時(shí)浆洗,到底寫(xiě)不寫(xiě) 實(shí)參
- 如果調(diào)用的函數(shù) 在定義時(shí)有形參催束,那么在調(diào)用的時(shí)候就應(yīng)該傳遞參數(shù)
<3>調(diào)用時(shí),實(shí)參的個(gè)數(shù)和先后順序應(yīng)該和定義函數(shù)中要求的一致
<4>如果調(diào)用的函數(shù)有返回值伏社,那么就可以用一個(gè)變量來(lái)進(jìn)行保存這個(gè)值
3. 作用域
<1>在一個(gè)函數(shù)中定義的變量抠刺,只能在本函數(shù)中用(局部變量)
<2>在函數(shù)外定義的變量,可以在所有的函數(shù)中使用(全局變量)
作業(yè)
1. 編程實(shí)現(xiàn) 9*9乘法表
提示:使用循環(huán)嵌套
2.用函數(shù)實(shí)現(xiàn)求100-200里面所有的素?cái)?shù)
提示:素?cái)?shù)的特征是除了1和其本身能被整除摘昌,其它數(shù)都不能被整除的數(shù)
3.請(qǐng)用函數(shù)實(shí)現(xiàn)一個(gè)判斷用戶輸入的年份是否是閏年的程序
提示:
1.能被400整除的年份
2.能被4整除速妖,但是不能被100整除的年份
以上2種方法滿足一種即為閏年
4.用函數(shù)實(shí)現(xiàn)輸入某年某月某日,判斷這一天是這一年的第幾天聪黎?閏年情況也考慮進(jìn)去
20160818
是今年第x天
5.編寫(xiě)“學(xué)生管理系統(tǒng)”排作,要求如下:
必須使用自定義函數(shù)膀值,完成對(duì)程序的模塊化
學(xué)生信息至少包含:姓名找御、年齡辨萍、學(xué)號(hào),除此以外可以適當(dāng)添加
必須完成的功能:添加湘纵、刪除、修改滤淳、查詢梧喷、退出