def girth(width , height):
return 2 * (width + height)
#調(diào)用函數(shù)時(shí),必須傳遞 2 個(gè)參數(shù),否則會(huì)引發(fā)錯(cuò)誤
print(girth(3))
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
print(girth(3))
TypeError: girth() missing 1 required positional argument: 'height'
def girth(width , height):
return 2 * (width + height)
#調(diào)用函數(shù)時(shí),必須傳遞 2 個(gè)參數(shù),否則會(huì)引發(fā)錯(cuò)誤
print(girth(3,2,4))
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 4, in <module>
print(girth(3,2,4))
TypeError: girth() takes 2 positional arguments but 3 were given
拋出 TypeError 異常
當(dāng)實(shí)際參數(shù)類型和形式參數(shù)類型不一致,并且在函數(shù)種,這兩種類型之間不能正常轉(zhuǎn)換,此時(shí)就會(huì)拋出 TypeError 異常。
例如:
輸出結(jié)果為:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\1.py", line 3, in <module>
print(area("C語(yǔ)言中文網(wǎng)",3))
File "C:\Users\mengma\Desktop\1.py", line 2, in area
return height*width/2
TypeError: unsupported operand type(s) for /: 'str' and 'int'
以上顯示的異常信息,就是因?yàn)樽址愋秃驼螖?shù)值做除法運(yùn)算。
def area(height,width):
return height*width/2
print(area("C語(yǔ)言中文網(wǎng)",3))
產(chǎn)生的結(jié)果和預(yù)期不符
調(diào)用函數(shù)時(shí),如果指定的實(shí)際參數(shù)和形式參數(shù)的位置不一致,但它們的數(shù)據(jù)類型相同,那么程序?qū)⒉粫?huì)拋出異常,只不過(guò)導(dǎo)致運(yùn)行結(jié)果和預(yù)期不符。
例如,設(shè)計(jì)一個(gè)求梯形面積的函數(shù),并利用此函數(shù)求上底為 4cm,下底為 3cm,高為 5cm 的梯形的面積。但如果交互高和下低參數(shù)的傳入位置,計(jì)算結(jié)果將導(dǎo)致錯(cuò)誤:
運(yùn)行結(jié)果為:
正確結(jié)果為: 17.5
錯(cuò)誤結(jié)果為: 13.5
因此,在調(diào)用函數(shù)時(shí),一定要確定好位置,否則很有可能產(chǎn)生類似示例中的這類錯(cuò)誤,還不容易發(fā)現(xiàn)。
def area(upper_base,lower_bottom,height):
return (upper_base+lower_bottom)*height/2
print("正確結(jié)果為:",area(4,3,5))
print("錯(cuò)誤結(jié)果為:",area(4,5,3))
聯(lián)系客服