代码中经常会有变量是否为None的判断,有三种主要的写法:

第一种是if x is None;

第二种是 if not x:;

第三种是if not x is None(这句这样理解更清晰if not (x is None)) 。

如果你觉得这样写没啥区别,那么你可就要小心了,这里面有一个坑。先来看一下代码:

>>> x = 1

>>> not x

False

>>> x = [1]

>>> not x

False

>>> x = 0

>>> not x

True

>>> x = [0] # You don't want to fall in this one.

>>> not x

False

在python中 None, False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()都相当于False ,即:

代码如下:

not None == not False == not '' == not 0 == not [] == not {} == not ()

因此在使用列表的时候,如果你想区分x[]和xNone两种情况的话, 此时if not x:将会出现问题:

>>> x = []

>>> y = None

>>>

>>> x is None

False

>>> y is None

True

>>>

>>>

>>> not x

True

>>> not y

True

>>>

>>>

>>> not x is None

>>> True

>>> not y is None

False

>>>

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

python中none算变量吗_python 判断变量是否是 None 的三种写法相关推荐

  1. python中if语句求最大值_python 判断三个数字中的最大值实例代码

    python 判断三个数字中的最大值,具体代码如下所示: #判断三个数中最大值 n1= int(input('please enter the firest number:')) n2 = int(i ...

  2. python中uppercase是什么意思_python判断大小写并转换_python中string模块相关方法(大小写转换,字符串条件判断)....

    string模块主要包含关于字符串的处理函数,在这里列举经常会使用的一些函数. 在例如获取随机密码等之类的题时可能会用到这类函数 1.string.ascii_letters 获取所有ascii码中字 ...

  3. python中mean算函数吗_Python numpy.mean函数方法的使用

    numpy.mean numpy.mean(a, axis=None, dtype=None, out=None, keepdims= 沿指定轴计算算术平均值. 返回数组元素的平均值.默认情况下,平均 ...

  4. python中isdigit函数什么意思_python判断字符串,str函数isdigit、isdecimal、isnumeric的区别...

    s为字符串 s.isalnum() 所有字符都是数字或者字母 s.isalpha() 所有字符都是字母 s.isdigit() 所有字符都是数字 s.islower() 所有字符都是小写 s.isup ...

  5. Python:计算欧氏距离的三种写法

    使用列表List作为样本点表示的欧氏距离计算方法: import math # 计算两点之间的距离 def eucliDist(A,B):return math.sqrt(sum([(a - b)** ...

  6. python中none算变量吗_在python中对变量判断是否为None的三种方法总结

    三种主要的写法有: 第一种:if X is None; 第二种:if not X: 当X为None,  False, 空字符串"", 0, 空列表[], 空字典{}, 空元组()这 ...

  7. [转载] python中for语句用法_详解Python中for循环的使用_python

    参考链接: 在Python中将else条件语句与for循环一起使用 这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 &q ...

  8. python一个函数调用另一个函数中的变量_在Python 中同一个类两个函数间变量的调用方法...

    在Python 中同一个类两个函数间变量的调用方法 更新时间:2019年01月31日 15:44:54 作者:wxy_summer 今天小编就为大家分享一篇在Python 中同一个类两个函数间变量的调 ...

  9. python中for语句用法_详解Python中for循环的使用_python

    这篇文章主要介绍了Python中for循环的使用,来自于IBM官方网站技术文档,需要的朋友可以参考下 for 循环 本系列前面 "探索 Python,第 5 部分:用 Python 编程&q ...

最新文章

  1. Kewail-邮件短信接口的基础教程
  2. .Net Core控制台amp;EFCore连接Mysql
  3. 如何用手机打开dcm格式图片_实现原始Dicom自动转换BIDS格式 ——Heudiconv
  4. API3 创始人更新 3 月开发进展:Airnode 的 pre-alpha 版已通过审计
  5. SAP License:SAP顾问如何写运维报告
  6. Android导航栏高斯模糊,iOS 顶部高斯模糊导航栏 + 页面内容穿越底部导航栏效果...
  7. C 标准库中输出到字符串、到文件的相关函数
  8. 数据分析——RFM模型
  9. 苹果Mac电脑缓存如何清理?
  10. Feign整合Sentinel 开启 feign.sentinel.enabled=true 启动报错
  11. matlab运行很多columns,columns函数的使用方法
  12. 2022年驾驶员考试装载车司机考试模拟试题卷及答案
  13. 转义字符 \r \v \f
  14. vmware虚拟机linux重置密码
  15. web性能压力测试工具:WebBench详解
  16. 微信小程序显示html内容
  17. 转自周金涛:一辈子有三次暴富机会,最近的一次在2019年?2018年你要怎么做? (2018-02-21 17:49:17)...
  18. 【转】互操作性的区块链系统设计理念
  19. Python+WebKit+HTML开发桌面应用程序
  20. 经典励志名言100余句

热门文章

  1. easypoi 导入错误返回流_C++ I/O 流
  2. Windchill 客户端
  3. 目录 -- Vue.js 3.0 企业级管理后台开发实战 基于Element Plus
  4. Vmware安装openfiler
  5. 基于ESlint在项目中扩展自己的ESlint规则
  6. 为k8s集群部署界面图形化- dashboard
  7. flex 画流程图_分享一款简单流程图制作软件,教你快速绘制流程图
  8. 做软件学c易语言可以吗,怎么样做一个易语言程序:
  9. 乐高收割机器人_乐高并联机器人 Delta Robot with LEGO
  10. 计算机网络应用试卷,计算机网络应用基础试卷.doc