python空值赋0_Python中的空值判断
本文中所有代码均运行在Python 2.7上
在实际的工作当中,我们难免要与空值打交道,相信不少初学者都会写出下面的代码:
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空值赋0_Python中的空值判断相关推荐
- python 空值_数据库中的空值与NULL的区别以及python中的NaN和None
展开全部 数据库里面的"32313133353236313431303231363533e59b9ee7ad9431333363393632空值"有两种:空字符("&qu ...
- 【Python】过滤数组中的空值(空字符串''和None)
使用场景 计算最大值或最小值时使用. 如果不进行空值过滤的话,python自带的min()函数会将空值作为最小值. 过滤数组中的空值:示例 def get_real_arr(arr):"&q ...
- Python的return语句中使用条件判断
if end1 <= val <= end2 or end2 <= val <= end1:return True else:return False 等于 return en ...
- c# mysql datetime 判断为空 dbnull_转:SqlServer中的datetime类型的空值和c#中的DateTime的空值的...
SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究 在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00 :00,C# ...
- c# mysql datetime 判断为空 dbnull_转:SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究...
SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究 在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00 :00,C# ...
- python处理csv文件里的空值_如何处理csv中的空值
展开全部 数据库里面的"空2113值"有两种:空字符(""5261).空值(NULL). 两种存储方式在4102数据库中1653都很常见,实际中根据业务或者个人 ...
- Python处理数据中的空值(缺失值)时用到的dropna()函数和fillna()函数总结,通过示例弄懂这两个函数的用法。
引言:在用python处理数据时,我们通常会遇到数据不完整的情况,比如有空值的时候,我们想要删除控制所在的行或列,或者是我们给空值设置为某一个值.这时候就可以用dropna和fillna两个函数来实现 ...
- python 列表表达式 if_python中if else如何判断表达式成立?
我们都知道,if是判断语句.那么在电脑程序中,我们就要输入自己想要的条件,然后得出一个结论.顺便要说的是if后面跟的条件没有限制,所以小伙伴们在使用的时候不用怕出错啦.那么,小编今天来讲讲python ...
- 解决asp.net(C#)中 DataTime 空值 null为0001-01-01
SqlServer中的datetime类型的空值和c#中的DateTime的空值的研究 在SqlServer 2000中datetime 的空值即默认值为1900-01-01 00:00:00,C#中 ...
最新文章
- 谷歌医疗AI再遭重挫!自宫头牌App,副总裁也已离职
- 事件响应政策制定常见雷区,都踩了我就只能祝福你了……
- C语言复习:内存模型2
- Dreamweaver的HTML语言标记,Dreamweaver
- 记录node内存瓶颈分析
- Python之函数的参数
- Hbuilder开发app实战-识岁06-face++的js实现【完结】
- Visual Studio 2012 Update 4 RC 启动调试失败解决方案
- python加载模型_解决python 无法加载downsample模型的问题
- python中set index_Python set_index和reset_index详解
- Java面向对象之成员变量的初始值、object类与对象
- QT最常用的字符串操作
- CSS 控制滚动条样式
- Linux学习----文件的使者-Rsync(马哥教育原创)
- html5回到顶部代码,返回顶部完整代码
- wps出现安装installer_我安装WPS2002时显示,该计算机缺少installscript引擎,请运行i
- 2021-08-01 武大账号访问知网
- android wear 制作时钟界面,android wear开发之绘制表盘.doc
- 用Python做的整蛊小程序——整点阴间的东西
- 用Python和OpenCV实现照片马赛克拼图(蒙太奇照片)
热门文章
- wxWidgets:exec 示例演示 wxExecute 和相关函数
- wxWidgets:wxPen类用法
- boost::metaparse::v1::impl::empty_string相关用法的测试程序
- boost::isomorphism用法的测试程序
- GDCM:gdcm::Series的测试程序
- Boost:自定义小矢量的测试程序
- boost::callable_traits的qualified_class_of_t的测试程序
- ITK:重视Valued图像的区域最小值
- ITK:高斯的一阶导数进行卷积来计算图像的梯度
- DCMTK:Telnet发起程序(ti)主程序