課程
/后端開發
/Python
/python進階
求教 'return s and len(s.strip()) > 0' 中的 's and' 有什么意義,如果去掉會報錯 ‘AttributeError: 'NoneType' object has no attribute 'strip'‘,但是注釋掉 filter() 函數直接調用去掉 's and' 的is_not_empty() 函數卻能夠得到正確結果。
2015-07-20
源自:python進階 2-10
正在回答
and 就是與,s and len(s.strip()) > 0的意思要根據and的短路作用來看。
如果s不存在,返回s; ?如果s存在,返回len(s.strip()) > 0
即如果s不存在,返回None,如果s存在,則判斷s去掉空格之后的長度是否大于0,如果是,返回True,如果否則返回False。
你注意看題中的list:['test', None, '', 'str', ' ?', 'END'],其中有個None,在有's and' 的時候,是不會進行后面的len(s.strip())>0的判斷的,因為None不能進行這個判斷,strip是字符串才有的函數。
你說直接調用去掉's and' 的is_not_empty() 函數卻能夠得到正確結果,這是不可能的,如果你把原來list的每一個元素都作為參數執行過的話。
你肯定沒有給他傳None的參數去試。
舉報
學習函數式、模塊和面向對象編程,掌握Python高級程序設計
Copyright ? 2025 imooc.com All Rights Reserved | 京ICP備12003892號-11 京公網安備11010802030151號
購課補貼聯系客服咨詢優惠詳情
慕課網APP您的移動學習伙伴
掃描二維碼關注慕課網微信公眾號
2015-08-28
and 就是與,s and len(s.strip()) > 0的意思要根據and的短路作用來看。
如果s不存在,返回s; ?如果s存在,返回len(s.strip()) > 0
即如果s不存在,返回None,如果s存在,則判斷s去掉空格之后的長度是否大于0,如果是,返回True,如果否則返回False。
你注意看題中的list:['test', None, '', 'str', ' ?', 'END'],其中有個None,在有's and' 的時候,是不會進行后面的len(s.strip())>0的判斷的,因為None不能進行這個判斷,strip是字符串才有的函數。
你說直接調用去掉's and' 的is_not_empty() 函數卻能夠得到正確結果,這是不可能的,如果你把原來list的每一個元素都作為參數執行過的話。
你肯定沒有給他傳None的參數去試。