關于return
def is_not_empty(s):
? ?return s and len(s.strip()) > 0
filter(is_not_empty, ['test', None, '', 'str', ' ?', 'END'])
這里面return的返回值不是應該是一個判條件(這里的len(s.strip()) > 0)嗎??return s and len(s.strip()) > 0應該怎么理解?
def is_not_empty(s):
? ?return s and len(s.strip()) > 0
filter(is_not_empty, ['test', None, '', 'str', ' ?', 'END'])
這里面return的返回值不是應該是一個判條件(這里的len(s.strip()) > 0)嗎??return s and len(s.strip()) > 0應該怎么理解?
2015-04-11
舉報
2015-04-12
return 返回的是一個對象,這里return s and len(s.strip()) > 0,應該看成return (s and len(s.strip()) > 0),返回的將是一個布爾變量,即True或者False。s and len(s.strip()) > 0是一個復合判斷用and連接,從python的角度來看其實,它內部做了兩個隱式的變換計算,即計算b1=bool(s)和b2=bool(s.strip()>0) ,最后再判斷b1 and b2。bool(s)的意思是判斷變量s是否為0,None,或者是空的list, tuple, dict等,如果是那么b1將是False,反之為True。而bool(s.strip()>0) 是判斷字符串s在去除掉兩端空白后是否為空字符串,如果是b2就是True,反之b2為False。
希望對你有幫助!