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

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

return s and len(s.strip()) > 0,返回的是什么?

return len(s.strip()) > 0這個語句有什么作用呢?

正在回答

7 回答

s.strip()會去掉s首尾的空格

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

我們一步一步解釋:

A:首先搞清楚運算的優先級:

按照從低到高優先級的順序;同行為相同優先級

1?Lambda??#運算優先級最低?2?邏輯運算符:?or?3?邏輯運算符:?and?4?邏輯運算符:not?5?成員測試:?in,?not?in?6?同一性測試:?is,?is?not?7?比較:?<,<=,>,>=,!=,==?8?按位或:?|?9?按位異或:?^10?按位與:?&11?移位:?<<?,>>12?加法與減法:?+?,-13?乘法、除法與取余:?*,?/?,%14?正負號:?+x,-x

這里我們就要先算?len(s.strip())?>?0? 看結果 是Ture 還是?False

然后再進行 AND 運算?

?s? ? ? ? ??and? ? ? ? ??len(s.strip()) > 0

B: 如果列表里面有 “none”None類型沒有strip方法,執行會報錯。前面加s,當s為None時,執行到and前面已經可以判定為False,and后的部分就不會被執行了。


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

關鍵在and這個邏輯運算符,變量A and 變量B 返回的一定是個bool值。為什么這樣寫,就像樓上說的,應對輸入是None類型的情況。

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

and ?:布爾"與" - 如果 x 為 False,x and y 返回 False,否則它返回 y 的運算值。并且 None沒有strip()方法。

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

為什么不能直接寫return len(s.strip())>0


0 回復 有任何疑惑可以回復我~
#1

藏于斯

None類型沒有strip方法,執行會報錯。前面加s,當s為None時,執行到and前面已經可以判定為False,and后的部分就不會被執行了。
2017-02-13 回復 有任何疑惑可以回復我~

這個語句的關鍵在于

s?and?len(s.strip())?>?0

and運算表示只有當s為真,并且s去掉首位空格后長度大于零(幫助排除s是' ? '的情況),才返回True,否則返回False

就可以起到filter的效果了


4 回復 有任何疑惑可以回復我~
#1

紅玫瑰_0002

你好,那 lambda s: s if len(s.strip()) > 0 為什么不行呢?
2015-07-02 回復 有任何疑惑可以回復我~
#2

ccccccjjjjjcccc 回復 紅玫瑰_0002

因為None沒有strip方法,而if只做s.strip大于0的判斷
2015-12-10 回復 有任何疑惑可以回復我~

我知道s.strip()去掉的是首尾的空格,我不明白的是,return len(s.strip()) > 0這個語句有什么作用呢,是說當len(s.strip()) > 0為true,才返回s嗎?

0 回復 有任何疑惑可以回復我~
#1

a412739861

是的,因為前面還有一個高階函數——filter()函數,是 Python 內置的另一個有用的高階函數,filter()函數接收一個函數 f 和一個list,這個函數 f 的作用是對每個元素進行判斷,返回 True或 False,filter()根據判斷結果自動過濾掉不符合條件的元素,返回由符合條件元素組成的新list。 參見http://www.xianlaiwan.cn/code/6051
2015-03-28 回復 有任何疑惑可以回復我~
#2

辣椒紅燒肉3140712

s and len(s.strip())>0 他們是一個整體,不能分開看。當s是''和' '時其真值是ture(自己試一下),加上后面喲個就可以去掉他們
2016-04-13 回復 有任何疑惑可以回復我~

舉報

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

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

進入課程

return s and len(s.strip()) > 0,返回的是什么?

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

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

幫助反饋 APP下載

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

公眾號

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