python中经常会有判断一个变量是否为None的情况,这里列举三种方式:

if not x

if x is None

if not x is None 

 

***********************************************************************************

遇到要判断一个变量为None的情况,当时便考虑是用 is 还是 == 

那么 x is None 和 x == None有什么区别呢???

 

is比较的是id值是否相同,即是否为同一内存地址;== 仅比较值是否相等 。

 

None 表示的是一个对象,定义为 Nonetype 的对象。

x is None 表示的是x 的内存地址 与 None 一致,换言之:如果x是一个对象但是对象属性定义为None的话,依然返回False。因为有对象,即有对应的地址空间。

如果 x是一个对象的属性(变量),x 的值为None,则 is None返回True。(python中None是一个特殊的常量,“不同的”None的id是一样的。)

x==None 表示 对象x等于None,相当于调用了__eq()__方法。当x为None时,自然返回True。

 

所以当判断数据结构中的某一值是否为None时,is None会更好一些。

 

做一棵小草,谁也撼动不了………

posted on 2020-05-13 17:31  小草小草随风飘摇  阅读(5619)  评论(0编辑  收藏  举报