深入理解python中的None对象 || 深入理解json数据格式中的null(python中nonetype对象是啥)

网友投稿 833 2022-08-28


深入理解python中的None对象 || 深入理解json数据格式中的null(python中nonetype对象是啥)

深入理解python中的None对象

1、 None 是python中的一个特殊的常量,表示一个空的对象,空值是python中的一个特殊值。

但是数据为空并不代表是空对象,例如 [],'' 等都不是 None 。 【空值并不代表是空对象】

None 和任何对象比较返回值都是 False ,除了自己。

例如:

print([] is None) # Falseprint('' is None) # False

2、 None 对象有自己的数据类型 NontType ,你可以将 None 赋值给任意对象,但是不能创建一个 NoneType 对象。

None 是 NoneType数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined),也就是说,我们不能再创建其它 NoneType类型的变量,但是可以将 None 赋值给任何变量。

如果希望变量中存储的东西不与任何其它值混淆,就可以使用 None。

print(type(None)) # n=NoneType()# Traceback (most recent call last):# File "C:\Users\liangshu.hu\PycharmProjects\practice\geely\v.py", line 5, in # n=NoneType()# NameError: name 'NoneType' is not defined

False

python中数据为空的对象在判断时的结果都为False;

其中 None,False,0,[],"",{},() 都相当于 False ,即 not None == not False == not '' == not 0 == not [] == not {} == not () 。

is 和 ==

①is表示的是对象标识符,用来检查对象的标识符是否一致,即两个对象在内存中的地址是否一致。在使用 a is b 语法的时候,相当于 id(a)==id(b) 。

②==表示两个对象值是否相等,相当于调用 __eq__() 方法,即 a==b ==>a.__eq__(b) 。

Python里和None比较时,为什么是 is None 而不是 == None

因为 None 在Python里是个单例对象,一个变量如果是 None ,它一定和None指向同一个内存地址。【None对象在内存中永远都只有一个内存地址】

例如:

a = Noneb = Noneprint(id(a) == id(b)) # True

is None 是判断两个对象在内存中的地址是否一致, == None 背后调用的是 __eq__ 方法,但是__eq__  方法可以被重载;

举例:

class test: def __eq__(self, other): return Truet = test()print(t)print(t is None) # t是一个存在于内存中的对象,而不是None对象print(t == None) # 重写了__eq__方法,返回True

运行结果:

<__main__.test object at 0x0000026A01E131F0>FalseTrue

对于所有没有  return  语句的函数定义,Python 都会自动在末尾加上  return None ;

使用不带值的  return  语句(也就是只有 return 关键字本身),那么函数也会自动返回 None 。

深入理解json数据格式中的null

示例1

服务器上的资源对象有一个键为“myCount”且没有值的整形数据,则对应JSON格式数据:

{}

{ "myCount": null}

{ "myCount": 0}

示例二

服务器上的资源对象有一个键为“myString”的没有值的空字符串,则对应JSON格式数据:

{}

{ "myString": null}

{ "myString": ""}

示例三

服务器上的资源对象有一个键为“myArray”的没有值的空列表,则对应JSON格式数据:

{ "myArray": []}

去期待陌生,去拥抱惊喜。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:python之关键字return和yield的区别以及详细介绍 || python之生成器及其优点(python return和yield)
下一篇:学好Java MyBatis拦截器,提高工作效率
相关文章

 发表评论

暂时没有评论,来抢沙发吧~