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

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

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

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

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

下面这样写还是不行:

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

那么,应该怎么写呢?

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

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

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

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

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

出版社官方链接(亚马逊、京东、当当均有销售):https://detail.tmall.com/item.htm?spm=a1z10.3-b-s.w4011-

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

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

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

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

你可能也喜欢

解密金贝minidoge III三模算力及能效 – 挖矿网
足球365官网正规吗

解密金贝minidoge III三模算力及能效 – 挖矿网

📅 06-30 👀 3299
如何详细搭建一个属于自己的网站(适合小白)(超详细)
电视投屏没声音怎么办?这三步弄完绝对能搞定
beat365投注网站

电视投屏没声音怎么办?这三步弄完绝对能搞定

📅 06-28 👀 2220
海康威视监控摄像头连接电脑教程
365bet开户娱乐

海康威视监控摄像头连接电脑教程

📅 06-30 👀 6710
12月02日 世界杯第3轮 韩国vs葡萄牙 全场录像及集锦【优直播】
LSP们的福利!因为“太涩”而被评19禁的韩国产游戏盘点
球王有哪些?历届世界杯金球奖、银球奖、铜球奖得主是谁?
美的集团股价逆势回暖!成交额破20亿,主力资金持续流入!
天刀松木和砂岩的獲取高價效比造船
365bet开户娱乐

天刀松木和砂岩的獲取高價效比造船

📅 06-30 👀 1423