None虽然跟True False一样都是布尔值。
虽然None不表示任何数据,但却具有很重要的作用。
它和False之间的区别还是很大的!
例子:
>>> t = None >>> if t: ... print("something") ... else: ... print("nothing") ... nothing
区分None和False.使用is来操作!
>>> if t is None: ... print("this is None!") ... else: ... print("this is ELSE!") ... this is None! >>>
虽然是个小小的区别!但是在Python里面是重要的。你需要将None和不含任何值的空数据结构区分开。
0值的整型/浮点型,空字符串(‘ ‘),空列表([]),空元组({}),空集合(set())都是等价于False,但是不等于None。
现在,写一个函数:
>>> def oj(t): ... if t is None: ... print("this is None") ... elif t: ... print("this is True") ... else: ... print("this is False") ...
进行数据测验:
>>> oj(None) this is None >>> oj(True) this is True >>> oj(False) this is False >>> oj(0) this is False >>> oj(0.0) this is False >>> oj([]) this is False >>> oj(()) this is False >>> oj({}) this is False
以上说明,None,False,True还是有很大不同的~
补充知识:python “0.3 == 3 * 0.1” 为False的原因
一.引入
如果你在你的解释器中输入以下第一行代码:
>>> 0.3 == 3 * 0.1
False
你会发现,输出为False。
对于CS小白而言,对此表示费解。
因此我查了相关的资料,进行了一下总结。
二.浮点算法的问题和局限
1.计算机硬件对于浮点数的处理方式
首先,我们必须明白一件事情。浮点数在计算机硬件中表示为基数2(二进制)的分数。
例如:
0.125(10) == 1/10 + 2/100 + 5/1000
0.001(2) == 0/2 + 0/4 + 0/8
这两个分数具有相同的值,唯一的实际区别是,第一个分数以10为基数的分数表示,第二个分数以2为基数。当我们输入0.125时,计算机硬件会以第二种方式表示,而不是第一种。
但是不幸的是,大多数十进制分数不能完全表示为二进制分数。
结果是,通常我们输入的十进制浮点数仅由计算机中实际存储的二进制浮点数
近似。但是在十进制不能完全表示为二进制分数的情况下,无论多么近似,终究不是确切值。
2.例子:对于0.1的处理
例
本文来源gao!daima.com搞$代!码网
如0.1(10),无论我们愿意使用多少个2位数字,十进制值0.1都不能精确表示为2进制小数,即以2为底的1/10是无限重复的分数。
0.1(10) == 0.0001100110011001100110011001100110011001100110011…(2)
当我们让它停在某个有限的位数,就可以得出一个近似值。
因为Python浮点数可使用 53位精度 ,
因此输入十进制数时计算机内部存储的值0.1是