python 判断变量是否是 None 的三种写法

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

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

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

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

  当然在学习Python的道路上肯定会困难,没有好的学习资料,怎么去学习呢?

  私信小编01即可获取大量Python学习资料

  >>> x=1>>> not xFalse>>> x=[1]>>> not xFalse>>> x=0>>> not xTrue>>> x=[0] >>> not xFalse复制代码

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

  not None==not False==not ''==not 0==not []==not {}==not ()复制代码

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

  #Python学习交流群:531509025>>> x=[]>>> y=None>>> >>> x is NoneFalse>>> y is NoneTrue>>> >>> >>> not xTrue>>> not yTrue>>> >>> >>> not x is None>>> True>>> not y is NoneFalse>>>复制代码

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

目录
相关文章
|
17天前
|
人工智能 Python
[oeasy]python039_for循环_循环遍历_循环变量
本文回顾了上一次的内容,介绍了小写和大写字母的序号范围,并通过 `range` 函数生成了 `for` 循环。重点讲解了 `range(start, stop)` 的使用方法,解释了为什么不会输出 `stop` 值,并通过示例展示了如何遍历小写和大写字母的序号。最后总结了 `range` 函数的结构和 `for` 循环的使用技巧。
29 4
|
1月前
|
Python
【10月更文挑战第5天】「Mac上学Python 8」基础篇2 - 变量深入详解
本篇将详细介绍Python中变量的使用方式和进阶操作,涵盖变量的输入与输出、变量的多重赋值、变量的内存地址管理以及变量的传递和交换等操作。通过本篇的学习,用户将对变量的使用有更深入的理解,并能灵活运用变量进行各种编程操作。
51 1
【10月更文挑战第5天】「Mac上学Python 8」基础篇2 - 变量深入详解
|
2月前
|
机器学习/深度学习 算法 数据可视化
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
特征工程是机器学习流程中的关键步骤,通过将原始数据转换为更具意义的特征,增强模型对数据关系的理解能力。本文重点介绍处理数值变量的高级特征工程技术,包括归一化、多项式特征、FunctionTransformer、KBinsDiscretizer、对数变换、PowerTransformer、QuantileTransformer和PCA,旨在提升模型性能。这些技术能够揭示数据中的潜在模式、优化变量表示,并应对数据分布和内在特性带来的挑战,从而提高模型的稳健性和泛化能力。每种技术都有其独特优势,适用于不同类型的数据和问题。通过实验和验证选择最适合的变换方法至关重要。
45 5
8种数值变量的特征工程技术:利用Sklearn、Numpy和Python将数值转化为预测模型的有效特征
|
1月前
|
存储 编译器 Python
Python--变量、输出与输入
【10月更文挑战第5天】
|
1月前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
|
1月前
|
存储 Java 编译器
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
这篇文章是关于Python编程语言中变量命名规则、基本数据类型、算数运算符、比较运算符、逻辑运算符、赋值运算符以及格式化输出与输入的详细教程。
18 0
Python学习三:学习python的 变量命名规则,算数、比较、逻辑、赋值运算符,输入与输出。
|
1月前
|
存储 C语言 Python
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
解密 Python 的变量和对象,它们之间有什么区别和联系呢?
21 2
|
2月前
|
测试技术 Python
Python MagicMock: Mock 变量的强大工具
Python MagicMock: Mock 变量的强大工具
|
2月前
|
存储 C语言 Python
通过 Cython 带你认清 Python 变量的本质
通过 Cython 带你认清 Python 变量的本质
50 8
|
1月前
|
存储 程序员 Python
Python编程入门:探索变量和数据类型
【10月更文挑战第8天】本文是针对初学者的Python编程入门指南,重点介绍Python中变量的定义和使用以及不同的数据类型。我们将通过实例来理解基本概念,并展示如何在Python程序中应用这些知识。文章旨在帮助初学者建立扎实的基础,使他们能够更自信地编写Python代码。