当前位置 : 主页 > 编程语言 > python >

python观察日志(part5)--判断对象是否为空

来源:互联网 收集:自由互联 发布时间:2022-06-15
python之判断对象是否为空 判断对象是否为None 要研究这个问题,首先我们要弄清楚,啥是None. ①None表示空值,它是一个特殊 Python 对象, None的类型是NoneType. ②在一个解释器进程中只有一

python之判断对象是否为空

判断对象是否为None

  • 要研究这个问题,首先我们要弄清楚,啥是None.

①None表示空值,它是一个特殊 Python 对象, None的类型是NoneType.

②在一个解释器进程中只有一个 None 对象存在。

我们用下面这两段代码,验证一下这些说法:

In [68]: type(None)
Out[68]: NoneTypeIn [67]: None is None
Out[67]: True
In [69]: None == None
Out[69]: True

看到上面这段代码,我突然就像扯到另一个问题。即:​​is​​​和​​==​​的区别

  • ​​is​​​和​​==​​的区别

​​==​​是比较操作符,用来比较判断两个对象的value(值)是否相等。

​​is​​是同一性运算符,这个运算符比较两个对象的是id是否相同,可以检查两个变量是否引用了同一个对象。

举个例子,验证一下以上的说法:

In [80]: a = [1, 2]
In [81]: b = [1, 2]

In [82]: a == b
Out[82]: True

In [83]: a is b
Out[83]: False

In [84]: id(a)
Out[84]: 743791852360

In [85]: id(b)
Out[85]: 743759644488
  • 好了,我们回到刚才的话题,如何判断一个变量所关联的对象是否为None

我们已经知道了,is可以判断两个变量是否关联同一个对象(即变量id是否相同),也知道了在一个解释器进程中只有一个 None 对象,则我们可以推断出一个变量x只有关联None对象,才能实现​​x is None​​​为​​True​​

我们敲一段代码验证一下,以上言论:

list01 = [None, False, '', {}, [], 0, ()]

for item in list01:
print('第1种:', item is None,
'第2种:', not (item is None))

控制台输出:

第1种: True 第2种: False
第1种: False 第2种: True
第1种: False 第2种: True
第1种: False 第2种: True
第1种: False 第2种: True
第1种: False 第2种: True
第1种: False 第2种: True

判断对象是否为空

啥叫空?反正我的理解是空字典​​{}​​​空列表 ​​[]​​​空字符串 ​​''​​​空元祖 ​​()​​ 都叫空。

现在我有一个python逻辑运算符​​not​​​,它相当于数学中的非运算,也就是说​​not False​​​得到的结果应该是True,那么如果我们​​not {}​​​或 ​​not []​​会发生什么情况呢?

list01 = [None, False, '', {}, [], 0, ()]

for item in list01:
print(not item)

控制台输出:

True
True
True
True
True
True
True

我们看到以上结果都为Ture.

我们再向各个列表元祖字典字符串中加入数据:

list01 = ['e', {"w":1}, [3], 1, (5)]

for item in list01:
print(not item)

控制台输出:

False
False
False
False
False

嗯,结果都变成False了。

难道说…空字符串、空列表、空字典、空元祖可以代表False???

做一个实验:

list01 = ['', {}, [], ()]

for item in list01:
if item:
print('{} is OK!!'.format(item))
else:
print('{} is not good'.format(item))

控制台输出:

is not good
{} is not good
[] is not good
() is not good

好吧,在if之后的确代起到了False的作用。但具体为啥可以代表False, 没搞清楚.


现在熬夜脑子有点不好使。问题留下,以后再继续研究!!!

上一篇:python之csv模块(part1)--写入csv文件
下一篇:没有了
网友评论