python中的if not
在python中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False ,即:
not None == not False == not '' == not 0 == not [] == not {} == not ()
if条件语句后面需要跟随bool类型的数据,即True或者False。然而,如果不是bool类型的数据,可以将其转换成bool类型的数据,转换的过程是隐式的。
在Python中,None、空列表[]、空字典{}、空元组()、0等一系列代表空和无的对象会被转换成False。除此之外的其它对象都会被转化成True。
在命令if not 1中,1便会转换为bool类型的True。not是逻辑运算符非,not 1则恒为False。因此if语句if not 1之下的语句,永远不会执行。
也许你是想判断x是否为None,但是却把`x==[]`的情况也判断进来了,此种情况下将无法区分。
对于习惯于使用if not x这种写法的pythoner,必须清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。
而对于`if x is not None`和`if not x is None`写法,很明显前者更清晰,而后者有可能使读者误解为`if (not x) is None`,因此推荐前者,同时这也是谷歌推荐的风格
结论:
`if x is not None`是最好的写法,清晰,不会出现错误,以后坚持使用这种写法。
使用if not x这种写法的前提是:必须清楚x等于None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。
最新文章
- sql 函数 汉字转拼音
- PHP二维数组排序(list_order)
- POJ 3311 Hie with the Pie (状压DP)
- js中this的理解
- mysql忘记密码修改方法
- java制作证书的工具keytool用法
- LoadRunner调用Java程序—性能测试
- R文件丢失异常原因汇总
- Nginx配置文件nginx.conf详细说明
- 【C语言探索之旅】 第二部分第三课:数组
- SOA的企业系统架构
- PHP面向对象摘要
- 第四章	JavaScript操作DOM对象
- spring boot 中active的profile会和标准配置合并吗
- ●Splay的一些题
- android 实现淘宝收益图的折线
- python 数据结构之二叉树
- 郑晔谈 Java 开发:新工具、新框架、新思维【转载】【整理】
- C#重点内容之:委托(delegate)
- jqPlot图表插件学习之数据节点高亮和光标提示