最近做一個api接口,被自己基礎不牢坑了一把
接口傳進來的參數,有一個字段的值會是0
然后寫邏輯的時候是判斷是否為真
if a: do_something()
結果參數a是0的時候,也是false,其實我一直都知道,但是沒重視過,結果翻車了,這里做個記錄,不要再輕視了
正確的寫法應該是
if a is not False: do_something()
可以通過cmd快速測試
所以 0 == False這是真,成立的
0 is False這就不成立了,判斷的時候需要這樣寫才行
當然還有個類似的,就是空列表,判斷空列表也是False
a = [] if a: do_something()
如果你判斷a是否為False,就不能這么寫
道理同上
a = [] if a is not False: do_something() #或者 if type(a) is list: do_something()
再python里面,int 0,float0.0 空列表,空字典,空元組,等都會算為False
所以如果是判斷是否為False,要寫is,不能寫==False,或者簡寫
這是一個小小的坑,不過如果不注意,很有可能會造成大的錯誤,和認知會發生不一致,導致程序行為不符合預期