Python判断变量是否是None写法代码实例

作者:lincappu 时间:2021-08-24 12:21:09 

代码中经常会有变量是否为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==[]和x==None两种情况的话, 此时`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, 空列表[], 空字典{}, 空元组()时对你的判断没有影响才行。

来源:https://www.cnblogs.com/lincappu/p/8305763.html

标签:Python,判断,变量,None
0
投稿

猜你喜欢

  • 简单介绍MySQL中的事务机制

    2024-01-14 15:18:31
  • ASP转化ip地址为长整型数字

    2008-04-06 14:23:00
  • 使用python svm实现直接可用的手写数字识别

    2023-06-09 13:57:19
  • Python ORM数据库框架Sqlalchemy的使用教程详解

    2024-01-13 20:02:53
  • pandas删除指定行详解

    2021-09-21 10:08:37
  • 支持python的分布式计算框架Ray详解

    2023-06-20 11:34:30
  • Django1.7+python 2.78+pycharm配置mysql数据库教程

    2023-11-04 14:43:28
  • 如何将一个CSV格式的文件分割成两个CSV文件

    2022-02-17 01:24:29
  • Python flask-script 模块详解

    2023-03-09 06:20:20
  • vue和react等项目中更简单的实现展开收起更多等效果示例

    2024-05-29 22:47:35
  • Python实现数据地址实体抽取

    2022-12-03 00:23:18
  • django配置DJANGO_SETTINGS_MODULE的实现

    2023-06-18 20:14:26
  • 自动备份Oracle数据库

    2024-01-16 01:16:55
  • python 与c++相互调用实现

    2023-01-11 13:20:19
  • Python爬虫天气预报实例详解(小白入门)

    2023-03-23 16:05:48
  • python中reload重载实例用法

    2021-05-12 07:02:09
  • Python使用RPC例子

    2021-04-11 23:26:51
  • access MDB 转换为 Execl(ASP类)

    2008-07-19 12:10:00
  • Python多线程编程之threading模块详解

    2023-12-28 07:52:59
  • 对python 通过ssh访问数据库的实例详解

    2024-01-16 07:32:12
  • asp之家 网络编程 m.aspxhome.com