为了账号安全,请及时绑定邮箱和手机立即绑定

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

该代码中 s >0是什么意思。

保证s不是空不应该是 len(s)>0么

正在回答

3 回答

首先要说的是题主断句有误,应该这样看: and len(s.strip())> 0,是两个部分。这是一个逻辑与判断语句,根据短路运算法则,and 操作符需要判断前后2个表达式的结果,a and b,如果a 是 False, 不用计算b,直接返回False,如果a 是True,  返回b;下面是我的理解,先求s代表的布尔值,python语言中 空字符,0以及None逻辑结果都是False,如果s是'',那整个and运算符直接为False,不用求后面的表达式,如果s不是一个完全没有任何字符的,那就进行第二部检查,s.strip()是删除s字符串开始结尾处的空白符,包括'\n','\r','\t',防止是空白字符为认为是有意义的字符串,len(s.strip()) > 0这句就不解释了吧。

7 回复 有任何疑惑可以回复我~
#1

慕粉0902163109

当s不是一个完全没有任何字符的,那进行第二部的检查,len(s.strip())>0,那如果第二部分为True,返回第二部分,但最终结果为何是['test','str','END']?
2017-02-05 回复 有任何疑惑可以回复我~
#2

龙信 回复 慕粉0902163109

关于这个问题,就和高阶函数的用法有关了,filter()函数是 Python 内置的另一个有用的高阶函数,filter()函数接收一个函数 f 和一个list,这个函数 f 的作用是对每个元素进行判断,返回 True或 False,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件元素组成的新list。我的理解是,保留函数运算结果为布尔值TRUE的list元素,所以就保留了'test','str','END'这三个元素了
2017-02-13 回复 有任何疑惑可以回复我~

s>0是啥意思啊?谢谢

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

and 操作符需要判断前后2个表达式的结果

a and b

如果a 是 False, 不用计算b,直接返回False

如果a 是True,  返回b

python语言中 空字符,0以及None逻辑结果都是False

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

举报

0/150
提交
取消
python进阶
  • 参与学习       255665    人
  • 解答问题       2949    个

学习函数式、模块和面向对象编程,掌握Python高级程序设计

进入课程

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

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信