定義函數(shù)與調(diào)用函數(shù)的順序
函數(shù)被定義后,本身是不會(huì)自動(dòng)執(zhí)行的,只有在被調(diào)用后,函數(shù)才會(huì)被執(zhí)行,得到相應(yīng)的結(jié)果。但是在 Python 中我們要注意一個(gè)關(guān)鍵點(diǎn),就是Python不允許前向引用,即在函數(shù)定義之前,不允許調(diào)用該函數(shù)。
例如:
printplus(1,2)defplus(a,b):returna+b
運(yùn)行結(jié)果為:
NameError:name'plus'isnotdefined
從報(bào)錯(cuò)結(jié)果可以看出,名字為plus的函數(shù)還沒(méi)進(jìn)行定義(雖然我們是在后面進(jìn)行了定義)。所以當(dāng)我們?cè)谡{(diào)用函數(shù)時(shí),一定要確定在調(diào)用之前進(jìn)行了函數(shù)定義。
正確使用參數(shù)
我們要在調(diào)用函數(shù)時(shí),需要正確調(diào)用函數(shù)的名稱和參數(shù)
例如我們定義了一個(gè)加法函數(shù):
defplus(a,b):returna+b
我們?cè)谡{(diào)用plus()函數(shù)時(shí),如果傳入的參數(shù)類型不對(duì),會(huì)報(bào)TypeError錯(cuò)誤。而且有時(shí)我們傳入的參數(shù)類型不是規(guī)定類型的話,就算調(diào)用函數(shù)運(yùn)行結(jié)果沒(méi)有報(bào)錯(cuò),也會(huì)產(chǎn)生邏輯錯(cuò)誤。
例如:
#定義plus函數(shù),作用是求兩個(gè)正整數(shù)之和defplus(a,b):returna+b#調(diào)用plus函數(shù),參數(shù)類型為'1','2'print(plus('1','2'))
輸出結(jié)果:
12
雖然上述例子的程序運(yùn)行結(jié)果沒(méi)有報(bào)錯(cuò),但是結(jié)果卻與我們的預(yù)期不符,因?yàn)槲覀兊谋疽馐钦{(diào)用plus()加粗樣式函數(shù)實(shí)現(xiàn)兩個(gè)整數(shù)的加法。但是如果我們傳入的是字符串類型的數(shù)值時(shí),結(jié)果就是兩個(gè)字符串的拼接。所以這個(gè)例子告訴我們一定要注意傳入?yún)?shù)的類型。當(dāng)我們傳入正常類型的參數(shù)時(shí),傳入的參數(shù)個(gè)數(shù)不一致時(shí),也會(huì)報(bào)TypeError錯(cuò)誤。
例如:
#定義plus函數(shù),作用是求兩個(gè)正整數(shù)之和defplus(a,b):returna+b#調(diào)用plus函數(shù),參數(shù)為1,2,3print(plus(1,2,3))
報(bào)錯(cuò):
TypeError:plus()takes2positionalargumentsbut3weregiven
報(bào)錯(cuò)原因顯示,因?yàn)閜lus()函數(shù)允許有且僅有2個(gè)參數(shù),但是卻在調(diào)用時(shí)傳入了3個(gè)參數(shù),所以程序報(bào)錯(cuò)。
-
字符串
+關(guān)注
關(guān)注
1文章
590瀏覽量
22282 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4381瀏覽量
64872 -
python
+關(guān)注
關(guān)注
56文章
4827瀏覽量
86745
發(fā)布評(píng)論請(qǐng)先 登錄
一文詳解python調(diào)用函數(shù)
如何查看及更改函數(shù)/函數(shù)塊的調(diào)用環(huán)境

matlab自定義函數(shù)調(diào)用的方法
高效的C編程之函數(shù)調(diào)用

Python3函數(shù)知識(shí)大全包括定義,調(diào)用,參數(shù),變量等詳細(xì)舉例說(shuō)明

評(píng)論