最近开始接触python,整体的感觉很不错,但是也存在不少的陷阱,比如and or的用法就是一个。
第一次接触python的and or语法的时候,第一个感觉就是它的返回值是true or false,然而实际上并不是,它是直接返回or前后两个表达式的值,这更像java中的": ?",如:
>>> ""and"b"or"c"
'c'
在python里,""空字串看作是False,所以以上表达式返回"c",看起来和java的": ?"一样吧,然而如此认为就大错特错了,其实在这里就存在一个陷阱,看如下代码:
>>> "b"and""or"c"
'c'
以上代码目的是判断是"b"的时候返回空字符串,否则返回"c",然而本来应该返回""空字符串,可是实际上的结果却出乎意料,返回的是"c"。
原来and or首先会对and前后表达式进行判断,只有都为True才会返回and之后那个表达式的值,而上面代码由于and后是个""空字符串,所以结果为False,就返回"c"。
那么如何解决这个问题呢?其实我们可以利用python的list,看如下代码:
>>> ["b"][0]and[""][0]and["c"][0]
''
将实际的字符串封装进list中,这样对于and来说,后面是一个非空list,返回结果就是True,因此最终就可以达到避免该陷阱的目的。
分享到:
相关推荐
#### Python 第51课:And-Or技巧 - **知识点**: - and/or逻辑运算符的特殊行为 - 短路评估的原理 - 利用and/or进行简洁编码 #### Python 第52课:元组 - **知识点**: - 元组的基本概念与创建 - 元组的特点...
在编程过程中,尤其是在初学阶段,常常会遇到一些易错点和陷阱,这些错误往往会导致程序行为不符合预期,甚至导致程序无法正常运行。本篇学习笔记主要探讨的是一个常见的问题:在`while`循环中使用`continue`语句时...
基于Andorid的音乐播放器项目改进版本设计实现源码,主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。
uniapp-machine-learning-from-scratch-05.rar
game_patch_1.30.21.13250.pak
【毕业设计-java】springboot-vue计算机学院校友网源码(完整前后端+mysql+说明文档+LunW).zip
特征变换 特征选择
吸烟数据集 991张原始图片,平均识别率在88.3% coco json格式标注
c++万能头文件picture.h
spaceX 动力学分析
python教程学习
内容概要:本文详细整理了与uniapp有关的一系列学习资源及开发工具。首先对官方文档与教程进行梳理,这是学习uni-app的基础部分,涵盖从基本概念到具体开发指引的全方位资料。接着详细介绍了一款专为uni-app打造的高效开发工具HBuilderX的功能特点及其使用指南,并提到了CLI命令行工具可用于完成开发过程中的常规操作任务。同时,指出uni-app所处的强大社区氛围,无论是社区还是论坛都为开发者解决了实际遇到的问题并分享了大量有价值的经验;还提及多个专门为uni-app量身定制的UI框架和丰富的组件库,进一步提高了开发的便捷性和灵活性;最后列举了几类学习资源,诸如视频教程、博客与文章还有相关书籍均能助力新手成长为熟练工。所有这些资源都将有助于深入学习和理解uni-app这个跨平台框架的相关知识点,进而开发出优秀的多平台应用程序。 适用人群:有意进入跨平台移动应用开发领域的初学者,以及希望提升开发技能的专业人士。 使用场景及目标:为想要深入了解或者开始使用uni-app框架进行开发的人群提供完整路径指导;为目标受众建立起一套完整的学习路径来降低入门难度并提升实际操作能力。
AI Agent 行业研究报告.pdf
请到网盘中自取压缩包,此包为kibana-7.10.2 镜像压缩包,是通过现有镜像导出来的,主要是为了解决有些机器无法连接外网,导致无法下载镜像 加载镜像: docker load -i kibana-7.10.2.tar 查看镜像: docker images 备注:elk此镜像配套资源,相同版本的elasticsearch和logstash,请在我的资源中搜索其他镜像
图解AUTOSAR-CP-TcpIp逻辑图打包
【毕业设计-java】springboot-vue交友网站平台实现源码(完整前后端+mysql+说明文档+LunW).zip
海康相机平场矫正对比图
python教程学习
【论文+PPT+代码+开题+任务书】手机APP遥控的相关测试主要完成设计当中按键控制对应继电器是否正确打开以及关上,可以通过观察按下按键时继电器想匹配的LED是否点亮来进行验证。 进入手机APP后,根据APP中的按键分别控制不同的继电器,继电器1这个按键控制对应1号继电器的开启和关闭,手机蓝牙按下按键由OFF转变为ON那么电控制器件就可以变化一次,1号指示灯就可以由暗变亮了,再次按下手机蓝牙按键由ON转变为OFF电控制器件又变化一次,1号指示灯就可以由亮变暗。 如果点击继电器2则控制对应2号继电器的开启和关闭,手机蓝牙按下按键由OFF转变为ON那么电控制器件就可以变化一次,2号指示灯就可以由暗变亮了,再次按下手机蓝牙按键由ON转变为OFF电控制器件又变化一次,2号指示灯就可以由亮变暗。 如果点击继电器3则控制对应3号继电器的开启和关闭,手机蓝牙按下按键由OFF转变为ON那么电控制器件就可以变化一次,3号指示灯就可以由暗变亮了,再次按下手机蓝牙按键由ON转变为OFF电控制器件又变化一次,3号指示灯就可以由亮变暗。 如果点击继电器4则控制对应4号继电器的开启和关闭
【毕业设计】java-springboot+vue教师人事档案管理系统实现源码(完整前后端+mysql+说明文档+LunW).zip