在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, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。

最新文章

  1. sql 函数 汉字转拼音
  2. PHP二维数组排序(list_order)
  3. POJ 3311 Hie with the Pie (状压DP)
  4. js中this的理解
  5. mysql忘记密码修改方法
  6. java制作证书的工具keytool用法
  7. LoadRunner调用Java程序—性能测试
  8. R文件丢失异常原因汇总
  9. Nginx配置文件nginx.conf详细说明
  10. 【C语言探索之旅】 第二部分第三课:数组
  11. SOA的企业系统架构
  12. PHP面向对象摘要
  13. 第四章 JavaScript操作DOM对象
  14. spring boot 中active的profile会和标准配置合并吗
  15. ●Splay的一些题
  16. android 实现淘宝收益图的折线
  17. python 数据结构之二叉树
  18. 郑晔谈 Java 开发:新工具、新框架、新思维【转载】【整理】
  19. C#重点内容之:委托(delegate)
  20. jqPlot图表插件学习之数据节点高亮和光标提示

热门文章

  1. Java 使用控制台操作实现数据库的增删改查
  2. .NET CORE 获取微信支付回调
  3. GBDT入门
  4. libcurl在windows下的使用
  5. Cookie的作用范围、设置、创建、获取的方法
  6. cafe-ssd數據集訓練
  7. mysql数据库大规模数据读写并行时导致的锁表问题
  8. setAttribute 添加属性js_jq
  9. phpExcel查询数据库导出excel表
  10. $_SESSION $_COOKIE