Python中的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

微信公众号:小鑫的代码日常

转载于:https://juejin.im/post/5c92436cf265da611459b57f

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值