python 判断空对象_python判断是空的实例分享

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

if a is None:

do something.else:

do the other thing.

这样写看起来不错,但实际上会有问题。一般来讲,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

内容扩展:

如何判断python函数返回的是否是空

我不知道你这里的空是什bai么意思 是None还是‘'

我都都给你du讲讲:

None是一zhi个空dao的对象,代表什么都没有。

而'',是一个字符串对象,代表一个空的字符串

如果返回值是None,你就用 if None:判断

如果返回‘',你就用if len(‘') == 0:判断

网友分享:

可以直接bai把函数放到if后面当du作条件,如果为空的话zhi判断结果dao是false,例如:

def test():

return None

if test():

print True

else:

print False

到此这篇关于python判断是空的实例分享的文章就介绍到这了,更多相关python怎么判断是空的内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值