Python札记2:None

在Python中,关键字None代表空值,也就是“什么都没有”的意思。None和数字 0、False、空字符串都不同,None是NoneType类型的单例对象,而且只有None能够是NoneType类型。使用内置函数type可以查看标识符的类型:

>>> type(None)
<class 'NoneType'>

在Python中,None是一个单例对象,即有且仅有一个None对象:

>>> a = None
>>> b = None
>>> a is b
True

你想过为什么判断一个对象是否为None要用is而不是==吗?

在Python中,表达式a == b其实等价于a.__eq__(b)。也就是说,==运算符背后调用的是左边操作数对象的__eq__()方法,而此方法是可以被重载的:

class Foo(object):
    def __eq__(self, other):
        return True

a = Foo()
print(a == None)  # True
print(a is None)  # False

所以说,使用is才能真正判断一个变量名是否指向内存中唯一的None对象。而等号只用于判断值是否相同,并不判断他们的对象标识符是否相同(使用内置函数id可以获取对象的对象标识符)。

如果把None转换为布尔值,是真还是假呢:

if None:
    print("None is True.")
else:
    print("None is False.")

上面这段程序的结果是False。所以None在显式或者隐式被转换为布尔值时,其值为False

None的用处:

  1. 表示空值,例如:a = None使变量a指向None对象,表示这个变量是空的,类似C和C++中null
  2. Python中的函数如果没有返回语句,默认返回None,表示没有返回值,当然也可以显式地返回Nonereturn None

我的知乎:奔三的鑫鑫

欢迎关注微信公众号:小鑫的代码日常

欢迎加入Python学习交流群:532232743,这里有各路高手等着你~

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页