关于Python中的None

注意到None这个类型是在做一道Python题目时,要求说如果传进函数的字符串是“None”则返回False,糟糕的是我并不知道如何判断是否是“None”。


None翻译成汉语的意思是“没有”,在Python中它表示空,但和空字符串、空列表不一样,做这样一个小实验:

 >>> a = []
 >>> type(a)
 <class 'list'>
 >>> b = ''
 >>> type(b)
 <class 'str'>
 >>> c = None
 >>> type(c)
 <class 'NoneType'>

可以看到,空列表与空字符串都是有类型的,分别为 ‘list’ 与 ‘str’ ,None也是有类型的,为 ‘NoneType’,就是没有类型。我们知道,在Python中一切皆对象,每个对象由:标识(identity)、类型(type)、值(value)组成。

1.标识用于唯一标识对象,通常对应于对象在计算机内存中的地址。使用内置函数id(obj)可返回对象obj的标识。

2.类型用于表示对象存储的“数据”的类型。类型可以限制对象的取值范围以及可执行的操作。可以使用type(obj)获得对象的所属类型。

3.值表示对象所存储的数据的信息。使用print(obj)可以直接打印出值。


对象的本质就是:一个内存块,拥有特定的值,支持特定类型的相关操作。


上述代码中c的类型为NoneType,对象“c”没有值。输出上述代码中的a、b、c的值,如下所示。

 >>> print(a)
 []
 >>> print(b)
 
 >>> print(c)
 None

回到原点,如何判断一个对象是否为None呢?可以通过布尔值来判断,空列表、空字符串、None的布尔值均为False,非空列表、字符串的布尔值则为True。

 >>> a = []
 >>> b = ''
 >>> c = None
 >>> bool(a)
 False
 >>> bool(b)
 False
 >>> bool(c)
 False
 >>> a.append(1)
 >>> a
 [1]
 >>> bool(a)
 True
 >>> b = b + '2'
 >>> b
 '2'
 >>>bool(b)
 True

在实际写代码时,可以通过if…else…来判断。

 a = None
 
 if a:
     print("hiahiahia~")
 else:
     print("wuwuwu~")
     

 

posted on 2020-07-10 12:26  超级无敌星墨瞳  阅读(1695)  评论(0编辑  收藏  举报