亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

傳入高階函數的普通函數參數的問題

求教 'return s and len(s.strip()) > 0' 中的 's and' 有什么意義,如果去掉會報錯 ‘AttributeError: 'NoneType' object has no attribute 'strip'‘,但是注釋掉 filter() 函數直接調用去掉 's and' 的is_not_empty() 函數卻能夠得到正確結果。

正在回答

1 回答

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的參數去試。

2 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消
python進階
  • 參與學習       255563    人
  • 解答問題       3038    個

學習函數式、模塊和面向對象編程,掌握Python高級程序設計

進入課程

傳入高階函數的普通函數參數的問題

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號