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

为什么要return s and len(s.strip()) > 0 ? 直接 return len(s.strip()) > 0 不是一样吗额?

def is_not_empty(s):

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

filter(is_not_empty, ['test', None, '', 'str', '  ', 'END'])


https://www.imooc.com/code/6051

教程里为什么要return s and len(s.strip()) > 0 ? 直接 return len(s.strip()) > 0 不是一样的吗?

正在回答

2 回答

return s and len(s.strip())>0 中的 s 如果为none的话,你直接 return  len(s.strip())>0 就会报错(因为你调用了s.strip()方法),所以return s and len(s.strip())>0 这样写会提前短路(and运算符 左半部分为false,则右半部分的表达式不执行)

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

慕粉1403491106

return s and len(s.strip())>0 中的 s 如果为none或0的话,返回false.但是若果s为非空时由后半部分决定,不论返回true或false,怎么最终后面结果对不上
2018-07-09 回复 有任何疑惑可以回复我~
#2

慕粉1403491106

return s and len(s.strip())>0 中的 s 如果为none或0的话,返回false.但是若果s为非空时由后半部分决定,不论返回true或false,怎么最终后面结果对不上
2018-07-09 回复 有任何疑惑可以回复我~

搞明白了,就是说 None  没有这个 strip() 方法,所以会报错。

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

天奇农人

可以这么理解
2018-07-03 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

为什么要return s and len(s.strip()) > 0 ? 直接 return len(s.strip()) > 0 不是一样吗额?

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