Python编程一定要注意的那些“坑”(九):0与False

问题描述:在编程时,经常需要单独编写一个函数用来判断某个事件是否成立,如果成立就返回正常结果,否则返回False。在主调函数中根据被调函数的返回值决定下一步的操作。这在大多数情况下是没问题的,但是有时候会引起麻烦,并且这样的“坑”一旦掉进去很难爬出来。

问题模拟:使用顺序查找的方法,查找列表中是否存在某个值,若存在则输出其下标,否则输出"not exist."

640?wx_fmt=png

上面这段代码的结果是正确的,但是有隐患,严格来说代码本身就是错误的,所以会在某些特殊情况下表现不稳定。

640?wx_fmt=png

下面这样写还是不行:

640?wx_fmt=png

问题根源:列表、元组、字符串的下标是从0开始的。另外,在Python中,作为值来使用的时候,0和False是等价的。有图为证:

640?wx_fmt=png

那么,应该怎么写呢?

如果被调函数可能会返回False的话,在主调函数中尽量不要使用隐式的条件表达式,而使用关键字is或者is not来显式判断返回值是否为False。

640?wx_fmt=png

这样做可行的原因是:0有时候可以看作False,有时候不能看作False,而False永远都是False。

640?wx_fmt=png

然而,除非非常确定使用False作为返回值不会引起歧义,在函数中如果不符合条件更建议返回None,这样的话掉进坑里的概率就小很多了。

640?wx_fmt=png

思考题:在本文模拟的问题中,使用return -1代替return None是个好习惯吗?为什么?



---------董付国老师Python系列教材--------

1)《Python程序设计(第2版)》(2018年5月第6次印刷)

出版社官方链接(亚马逊、京东、当当均有销售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.18.24a52226hIi8Bj&id=534581929248&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

2)《Python可以这样学》(2018年2月第5次印刷)(本书已发行繁体版)

出版社官方链接(亚马逊、京东、当当均有销售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.16.24a52226hIi8Bj&id=544817105410&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

3)《Python程序设计基础(第2版)(2018年5月第2次印刷)

出版社官方链接(亚马逊、京东、当当均有销售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.24.24a52226hIi8Bj&id=565581275846&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

4)《中学生可以这样学Python》2018年5月第2次印刷)

出版社官方链接(亚马逊、京东、当当均有销售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.20.24a52226hIi8Bj&id=560808221053&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

5)《Python程序设计开发宝典》(2018年2月第3次印刷)

出版社官方链接(亚马逊、京东、当当均有销售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.52.24a52226hIi8Bj&id=556093887133&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6

6)《玩转Python轻松过二级》(2018年5月隆重上架)

出版社官方链接(亚马逊、京东、当当均有销售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-16232114860.84.24a52226hIi8Bj&id=569250004069&rn=9311dcbc68fffcf57b7ae352800e485d&abbucket=6


董付国老师6本Python系列图书阅读指南

董付国老师6本Python系列教材被北大、复旦等近百所高校选作教材

热烈庆祝《Python可以这样学》在台湾发行繁体版


董老师127课免费视频地址: https://pan.baidu.com/s/1jJeAs8Q 密码: px59


----------相关阅读----------

教学课件

1900页Python系列PPT分享一:基础知识(106页)

1900页Python系列PPT分享二:Python序列(列表、元组、字典、集合)(154页)

1900页Python系列PPT分享三:选择与循环结构语法及案例(96页)

1900页Python系列PPT分享四:字符串与正则表达式(109页)

1900页Python系列PPT分享五:函数设计与应用(134页)

1900页Python系列PPT分享六:面向对象程序设计(86页)

1900页Python系列PPT分享七:文件操作(132页)

1900页Python系列PPT分享八:异常处理结构与程序调试、测试(70页)

报告PPT(163页):基于Python语言的课程群建设探讨与实践

非计算机专业《Python程序设计基础》教学参考大纲

计算机相关专业“Python程序设计”教学大纲(参考)

报告PPT(123页):Python编程基础精要

《Python程序设计》实验指导书(30个实验)


系列题库分享

1000道Python题库系列分享一(17道)

1000道Python题库系列分享二(48道)

1000道Python题库系列分享三(30道)

1000道Python题库系列分享四(40道)

1000道Python题库系列分享五(40道)

1000道Python题库系列分享六(40道)

1000道Python题库系列分享七(30道)

1000道Python题库系列分享八(29道)

1000道Python题库系列分享九(31道)

1000道Python题库系列分享十(37道)

1000道Python题库系列分享十一(9道)


相关阅读

奇怪,Python有的函数调用需要两对括号?(2)

奇怪,有的Python函数或方法调用需要两对括号?

Python编程一定要注意的那些“坑”(八):赋值运算符=

Python编程一定要注意的那些“坑”(七)

Python编程一定要注意的那些“坑”(六)

Python编程一定要注意的那些“坑”(五)

Python编程一定要注意的那些“坑”(四)

Python中一定要注意的那些“坑”(三)

Python编程中一定要注意的那些“坑”(二)

Python编程中一定要注意的那些“坑”(一)

Python函数默认值参数的2个坑


猜你喜欢

转载自blog.csdn.net/oh5W6HinUg43JvRhhB/article/details/80851391