前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python: and & or 探究

python: and & or 探究

作者头像
JNingWei
发布2018-09-27 16:23:35
3570
发布2018-09-27 16:23:35
举报
文章被收录于专栏:JNing的专栏JNing的专栏

起因

今天处理的数据集里,图片同时有 “.jpg” 和 “.JPG” 两种后缀名,因此我要实现一个 找出所有不同后缀图片 的功能。一开始,实现该功能的模块我是这么写的:

代码语言:javascript
复制
check_suffix = lambda x : True if os.path.splitext(x)[1] == (".jpg" or ".JPG" or ".png" or ".PNG") else False

代码也run起来了。但是回头检查的时候一看,哎不对,为什么只有 “.jpg” 后缀名的图片被处理了。

debug

在debug过程中,我发现上面的功能模块只会筛选出 “.jpg” 后缀名的图片。

定位出问题在 (".jpg" or ".JPG" or ".png" or ".PNG") 后,我写了两行代码查看:

代码语言:javascript
复制
print(".jpg" and ".JPG") # .JPG
print(".jpg" or ".JPG") # .jpg

打印结果如下:

代码语言:javascript
复制
.JPG
.jpg

百思不得其解的同时,想上网查又不晓得这个问题该如何去定义它。

答案

大神远在天边,近在眼前。于是我求助了同门,他的解答我觉得应该是最靠谱的解释了,即从 andor 的定义出发来思考:

  • 因为 and 本身的定义,所以当第一个 ".jpg" 不为 时,结果取决于第二个值 ".JPG" ,所以直接返回 ".JPG"
  • 因为 or 本身的定义,所以当第一个 ".jpg" 不为 时,结果即为第一个值,所以直接返回 ".jpg"
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017年12月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 起因
  • debug
  • 答案
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档