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

代码不理解

def is_not_empty(s):
     return s and len(s.strip()) > 0
     
上面的return的内容不理解,求解!谢谢

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

正在回答

1 回答

s and len(s.strip()) > 0这里是一个bool表达式,,相当于(s) and (len(len(s.strip()) > 0),如果你学过其他计算机语言,理解起来就是s && len(s.strip()) > 0,其中s.strip()指的是去掉字符串首尾的空格剩下的字符串,len(...)就是长度了

根据python的and运算规则,0,none,“”表示逻辑的False,如果此处s为False,则返回False,如果s不为False,当s.strip()剩下的为False,则返回0,否则返回True

当然,有时候and,or运算返回的是值,而不是布尔值(True,False),这点和其他语言(C、C++,java,C#等)不太一样,不明白可以百度或者追问

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

a_flying_fish

第二行的:“当s.strip()剩下的为False”写错了,指的是剩下的字符串为空串,则len(s.strip())==0,则 len(s.strip())> 0计算结果为0,表达式返回False
2017-08-26 回复 有任何疑惑可以回复我~
#2

慕粉4262480 提问者

非常感谢!
2017-08-27 回复 有任何疑惑可以回复我~
#3

a_flying_fish

不用谢,互相帮助
2017-08-29 回复 有任何疑惑可以回复我~

举报

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

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

进入课程

代码不理解

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