python判断是否为空_python 判断对象是否为空

python判断是否为空_python 判断对象是否为空在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:ifaisNone:dosomething.else:dotheotherthing.python学习网,大量的免费python视频教程,欢迎在线学习!这样写看起来不错,但实际上会有问题。一般来讲,Python中会把下面几种情况当做空值来处理:NoneFalse0,0.0,0L”,(),[],{}其中Non…

大家好,又见面了,我是你们的朋友全栈君。

python判断是否为空_python 判断对象是否为空

在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:if a is None:

do something.

else:

do the other thing.

python学习网,大量的免费python视频教程,欢迎在线学习!

这样写看起来不错,但实际上会有问题。一般来讲,Python中会把下面几种情况当做空值来处理:None

False

0,0.0,0L

”,(),[],{}

其中None的特殊之处在于,它既不是数值0,也不是某个数据结构的空值,它本身就是一个空值对象。它的类型是NoneType,它遵循单例模式,也就是说,在同一命名空间下的所有None其实质上都是同一个空值对象。>>> id(None)

1795884240

>>> None == 0

False

>>> None == ”

False

>>> a = None

>>> id(a)

1795884240

>>> a == None

True

上面的判断显然不符合我们的期望:只有当a被显示赋值为None的情况下,a==None才为True。

那么,对于Python中更为广义的None值判断,我们应该怎么做呢?>>> a = ”    #这里仅以空字符串为例,其他空值同样适用

>>> if a:

…        print ‘a is not empty’

…    else:

…        print ‘a is a empty string’

‘a is a empty string.’

可以看出,if a的判断方式得出了我们想要的结果,那么if a的判断方式究竟是一个怎样的过程呢?

if a会首先去调用a的__nonzero__()去判断a是否为空,并返回True/False,若一个对象没有定义__nonzero__(),就去调用它的__len__()来进行判断(这里返回值为0代表空),若某一对象没有定义以上两种方法,则if a的结果永远为True

接下来验证一下上面的说法:>>>class A(object):

…        def __nonzero__(self):

…            print ‘running on the __nonzero__’

…            return True

>>>class B(object):

…        def __len__(self):

…            print ‘running on the __len__’

…            return False

>>> a, b = A(), B()

>>>if a:

…        print ‘Yep’

…    else:

…        print ‘Nop’

running on the __nonzero__

Yep

>>>if b:

…        print ‘Yep’

…    else:

…        print ‘Nop’

running on the __len__

Nop

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/131245.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Linux 网络配置和管理

    Linux 网络配置和管理

    2022年3月8日
    46
  • linux ll命令时间,Linux ll命令显示年月日 时分秒

    linux ll命令时间,Linux ll命令显示年月日 时分秒[root@linuxboot]#ls-lh–time-style=+”%Y-%m-%d%H:%M:%S”total13M-rw-r–r–1rootroot69K2011-01-1406:40:04config-2.6.18-238.el5PAE-rw-r–r–1rootroot69K2016-09-0606:26:21config-2.6….

    2025年12月5日
    5
  • CLion 2021.10.1激活码-激活码分享

    (CLion 2021.10.1激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    47
  • leetcode 792_单词编码

    leetcode 792_单词编码给定一个 m x n 二维字符网格 board 和一个字符串单词 word 。如果 word 存在于网格中,返回 true ;否则,返回 false 。单词必须按照字母顺序,通过相邻的单元格内的字母构成,其中“相邻”单元格是那些水平相邻或垂直相邻的单元格。同一个单元格内的字母不允许被重复使用。示例 1:输入:board = [[“A”,“B”,“C”,“E”],[“S”,“F”,“C”,“S”],[“A”,“D”,“E”,“E”]], word = “ABCCED”输出:true示例 2:输

    2022年8月8日
    7
  • JAVA中action_java string contains方法

    JAVA中action_java string contains方法该楼层疑似违规已被系统折叠隐藏此楼查看此楼ActionContext.getContext()返回的是一个ActionContext对象,get(Stringkey)也是ActionContext里面的一个方法。xwork源码贴出来了:publicclassActionContextimplementsSerializable{staticThreadLocalactionCon…

    2025年10月12日
    2
  • 向量的内、外积及其几何含义

    向量的内、外积及其几何含义一、向量的内积(点乘)定义概括地说,向量的内积(点乘/数量积)。对两个向量执行点乘运算,就是对这两个向量对应位一一相乘之后求和的操作,如下所示,对于向量a和向量b:a和b的点积公式为:这里要求一维向量a和向量b的行列数相同。注意:点乘的结果是一个标量(数量而不是向量)定义:两个向量a与b的内积为a·b=|a||b|cos∠(a,b),特别地,0·a=a·0…

    2025年6月14日
    2

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号