官术网_书友最值得收藏!

1.9.3 函數(shù)調(diào)用

菲菲兔仔細(xì)想了想,回過(guò)神來(lái)了,說(shuō):“我知道了。因?yàn)橛胐ef只是定義了一個(gè)函數(shù)。我們還沒(méi)有使用它呀!”說(shuō)著,她在運(yùn)行過(guò)程序的IDLE提示符后輸入了以下代碼:


>>> add1()
計(jì)算兩個(gè)數(shù)的和
輸入第一個(gè)數(shù): 5.555
輸入第二個(gè)數(shù): 6.666
5.555000+6.666000=12.221000
計(jì)算完畢

使用函數(shù)也稱作函數(shù)的調(diào)用。當(dāng)程序執(zhí)行到函數(shù)調(diào)用的地方時(shí),程序就轉(zhuǎn)向函數(shù)內(nèi)部執(zhí)行,直到函數(shù)體代碼執(zhí)行完畢,再返回函數(shù)調(diào)用的后面一行代碼繼續(xù)執(zhí)行。函數(shù)調(diào)用和返回的過(guò)程如圖1-23所示。箭頭表示了程序中語(yǔ)句執(zhí)行的順序。

圖1-23 函數(shù)的調(diào)用和返回

函數(shù)也可以寫成更簡(jiǎn)單的形式。在上述代碼后面創(chuàng)建另一個(gè)函數(shù),叫作add2(a, b),代碼如下:


def add2(a,b):
    return float(a)+float(b)     #返回值

函數(shù)add2有兩個(gè)參數(shù)a和b,而且函數(shù)中使用了關(guān)鍵字return,return的后面就是需要返回的值,也叫作函數(shù)值。這個(gè)函數(shù)的函數(shù)體雖然只有一行,但是已經(jīng)可以解決問(wèn)題了。

在定義完函數(shù)以后就可以使用它們了。比如在文件后面輸入以下代碼:


#調(diào)用函數(shù)
add1()
print('================分隔線================')
print("計(jì)算兩個(gè)數(shù)的和")
#從鍵盤輸入一個(gè)數(shù)
m=float(input("輸入第一個(gè)數(shù): "))
#再?gòu)逆I盤輸入一個(gè)數(shù)
n=float(input("輸入第二個(gè)數(shù): "))
print(add2(m,n))

代碼中add1()和add2(a, b)兩處分別調(diào)用了add1和add2函數(shù)。運(yùn)行程序,結(jié)果如圖1-24所示。

圖1-24 調(diào)用函數(shù)示例

函數(shù)調(diào)用時(shí)有3條規(guī)則需要注意:

1)調(diào)用時(shí)參數(shù)個(gè)數(shù)要與函數(shù)定義時(shí)的個(gè)數(shù)一致。比如add2(a, b)定義中有兩個(gè)參數(shù),那么調(diào)用時(shí)也要給兩個(gè)參數(shù),比如add2(3, 4)。

2)調(diào)用時(shí)參數(shù)的類型要符合函數(shù)定義時(shí)的要求。但是Python函數(shù)定義時(shí)并不會(huì)明顯地指出需要的參數(shù)類型,只在函數(shù)體中體現(xiàn)。所以調(diào)用函數(shù)前一定要弄清參數(shù)的類型,以免出錯(cuò)。比如使用add2('m', 'n')調(diào)用函數(shù),肯定會(huì)出錯(cuò):


>>> add2('m','n')
Traceback (most recent call last):
    File "<pyshell#1>", line 1, in <module>
        add2('m','n')
    File "C:\Workspace\1.9\def_func.py", line 14, in add2
        return float(a)+float(b)     #返回a+b的值
ValueError: could not convert string to float: 'm'

因?yàn)楹瘮?shù)體中需要將兩個(gè)參數(shù)都轉(zhuǎn)換成浮點(diǎn)型,顯然字符串不能被成功轉(zhuǎn)換。

3)調(diào)用時(shí)參數(shù)的順序也需要和函數(shù)定義時(shí)一致。比如add2(3, 4)調(diào)用函數(shù)時(shí),3就會(huì)賦值給參數(shù)a,4就會(huì)賦值給參數(shù)b。

“函數(shù)在Python程序中隨處可見,我們以后還會(huì)遇到更多的函數(shù)!”

主站蜘蛛池模板: 成安县| 青神县| 锡林郭勒盟| 临澧县| 怀安县| 太康县| 台南市| 高淳县| 新宁县| 简阳市| 甘肃省| 临安市| 深圳市| 和静县| 周宁县| 璧山县| 曲沃县| 卫辉市| 桃江县| 黄梅县| 汝阳县| 临颍县| 恩平市| 江北区| 富民县| 兰州市| 桐梓县| 阳东县| 临海市| 永济市| 澄城县| 崇左市| 东明县| 双辽市| 呼和浩特市| 黑山县| 镇沅| 柏乡县| 潼关县| 阿拉善盟| 齐齐哈尔市|