斷言(assertions)的使用方式類似于if語句,只是在不滿足條件時(shí),會(huì)直接拋出異常。類似于下面的if語句(偽代碼)
創(chuàng)新互聯(lián)建站服務(wù)項(xiàng)目包括德興網(wǎng)站建設(shè)、德興網(wǎng)站制作、德興網(wǎng)頁(yè)制作以及德興網(wǎng)絡(luò)營(yíng)銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢(shì)、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,德興網(wǎng)站推廣取得了明顯的社會(huì)效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到德興省份的部分城市,未來相信會(huì)繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!
if not condition: #如果不滿足條件,會(huì)直接拋出異常,程序會(huì)中斷
crash program
那么究竟為什么需要這樣的代碼呢?主要原因?yàn)樾枰獧z測(cè)程序在某個(gè)地方是否滿足條件,如果不滿足條件,應(yīng)該及時(shí)通知開發(fā)人員,而不是將這些bug隱藏起來,知道關(guān)鍵的時(shí)候在崩潰。
其實(shí)在TDD中經(jīng)常使用斷言,TDD會(huì)在程序發(fā)現(xiàn)異常時(shí)執(zhí)行斷言,并拋出異常。
在Python語言中,斷言需要使用assert語句,在assert關(guān)鍵字的后面指定斷言的條件表達(dá)式。如果條件表達(dá)式的值是False,那么就會(huì)拋出異常。而且斷言后面的語句都不會(huì)執(zhí)行,相當(dāng)于程序的一個(gè)斷點(diǎn)。
>>> value = 20
>>> assert value < 10 or value > 30 #條件不滿足,會(huì)拋出異常
>> assert value < 30 #條件滿足,會(huì)正常執(zhí)行后面的語句
可以看到,value變量的值是20,而assert后面的條件是“value < 10 or value > 30”,很明顯,條件不滿足,所以在斷言出會(huì)拋出異常。而后面的斷言,條件是“value < 30”,這個(gè)條件是滿足的,所以在斷言后面的語句都會(huì)正常執(zhí)行。
當(dāng)斷言條件不滿足時(shí)拋出異常,在默認(rèn)情況下,只顯示了拋出異常的位置,并沒有顯示拋出異常的原因,所以為了異常信息更明確,可以為assert語句指定異常描述。
>>> value = 20
>>> assert value < 10 or value > 30,'value值必須在10~20' #為斷言指定異常描述信息
[例 3.6] 本例演示了斷言的用法。
name = "Bill" #定義變量name
assert name == "Bill" #斷言條件表達(dá)式的值是True,繼續(xù)執(zhí)行下面的語句
age = 20 #定義變量age
#斷言條件表達(dá)式的值是False,拋出異常,后面的代碼不會(huì)被執(zhí)行
assert 0 < age < 10, '年齡必須小于10歲'
print("hello world") #這行代碼不會(huì)被執(zhí)行