pythonnone判断_python 中 None,is 和==

None

None是python中的一个常量,它有自己的数据类型NoneType,表示一个空的对象。

None和任何对象比较返回值都是False,除了None本身

数据为空,比如""、{}、()等并不代表空对象。

False

python中判断数据为空的对象时,结果都为False,包括 "" 、[]、 {} 、()、None、 0、False

所以尽可能使用隐式的false, 例如: 使用 if obj: 而不是 if obj != []

if obj: # 判断obj不为空

print('if 执行')

else:

print('else 执行')

⚠️:

(1)不要用==或者!=来比较单例, 比如None. 使用is或者is not.

(2)当你写下 if x: 时, 你其实表示的是 if x is not None . 例如: 当你要测试一个默认值是None的变量或参数是否被设为其它值. 这个值在布尔语义下可能是false!

(3)不要用==将一个布尔量与false相比较. 使用 if not x: 代替

如果需要区分false和None, 应该用 if not x and x is not None

(4)对于序列(字符串, 列表, 元组), 要注意空序列是false. 因此 if not seq: 或者 if seq: 比 if len(seq): 或 if not len(seq): 要更好

is和==

is比较的是两个对象在内存中的地址是否一致,可以比较单例对象

==表示两个对象的值是否相等,相当于调用eq()

和None比较时为什么用is

python中的None是单例对象,一个变量如果是None,它一定和None指向同一个内存地址。

>>>a=None

>>>b=None

>>>id(a)==id(b)

True

is None是判断两个对象在内存中的地址是否一致,== None背后调用的是eq,而eq可以被重载,下面是一个 is not None但 == None的例子

>>>class test():

... def __eq__(self,other):

... return True

...

>>> t=test()

>>> t is None

False

>>> t == None # ==相当于调用__eq__(),eq的返回值始终为True

True

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值