1. 程式人生 > >Python程式設計一定要注意的那些“坑”(九):0與False

Python程式設計一定要注意的那些“坑”(九):0與False

問題描述:在程式設計時,經常需要單獨編寫一個函式用來判斷某個事件是否成立,如果成立就返回正常結果,否則返回False。在主調函式中根據被調函式的返回值決定下一步的操作。這在大多數情況下是沒問題的,但是有時候會引起麻煩,並且這樣的“坑”一旦掉進去很難爬出來。

問題模擬:使用順序查詢的方法,查詢列表中是否存在某個值,若存在則輸出其下標,否則輸出"not exist."

640?wx_fmt=png

上面這段程式碼的結果是正確的,但是有隱患,嚴格來說程式碼本身就是錯誤的,所以會在某些特殊情況下表現不穩定。

640?wx_fmt=png

下面這樣寫還是不行:

640?wx_fmt=png

問題根源:列表、元組、字串的下標是從0開始的。另外,在Python中,作為值來使用的時候,0和False是等價的。有圖為證:

640?wx_fmt=png

那麼,應該怎麼寫呢?

如果被調函式可能會返回False的話,在主調函式中儘量不要使用隱式的條件表示式,而使用關鍵字is或者is not來顯式判斷返回值是否為False。

640?wx_fmt=png

這樣做可行的原因是:0有時候可以看作False,有時候不能看作False,而False永遠都是False。

640?wx_fmt=png

然而,除非非常確定使用False作為返回值不會引起歧義,在函式中如果不符合條件更建議返回None,這樣的話掉進坑裡的概率就小很多了。

640?wx_fmt=png

思考題:在本文模擬的問題中,使用return -1代替return None是個好習慣嗎?為什麼?

---------董付國老師Python系列教材--------

1)《Python程式設計(第2版)》(2018年5月第6次印刷)

出版社官方連結(亞馬遜、京東、噹噹均有銷售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.18.24a52226hIi8Bj&id=534581929248&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

2)《Python可以這樣學》(2018年2月第5次印刷)(本書已發行繁體版)

出版社官方連結(亞馬遜、京東、噹噹均有銷售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.16.24a52226hIi8Bj&id=544817105410&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

3)《Python程式設計基礎(第2版)(2018年5月第2次印刷)

出版社官方連結(亞馬遜、京東、噹噹均有銷售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.24.24a52226hIi8Bj&id=565581275846&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

4)《中學生可以這樣學Python》2018年5月第2次印刷)

出版社官方連結(亞馬遜、京東、噹噹均有銷售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.20.24a52226hIi8Bj&id=560808221053&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

5)《Python程式設計開發寶典》(2018年2月第3次印刷)

出版社官方連結(亞馬遜、京東、噹噹均有銷售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.52.24a52226hIi8Bj&id=556093887133&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

6)《玩轉Python輕鬆過二級》(2018年5月隆重上架)

出版社官方連結(亞馬遜、京東、噹噹均有銷售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.84.24a52226hIi8Bj&id=569250004069&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

董老師127課免費視訊地址: https://pan.baidu.com/s/1jJeAs8Q 密碼: px59

----------相關閱讀----------

教學課件

系列題庫分享

相關閱讀