Python中的Null是什么?

开发
在计算机中null是一种类型,代表空字符,没有与任何一个值绑定并且存储空间也没有存储值。

在知乎上遇到一个问题,说:计算机中的「null」怎么读?

图片

null正确的发音是/n^l/,有点类似四声‘纳儿’,在计算机中null是一种类型,代表空字符,没有与任何一个值绑定并且存储空间也没有存储值。

Python中其实没有null这个词,取而代之的是None对象,即特殊类型NoneType,代表空、没有。

None不能理解为0,因为0是有意义的,而None是一个特殊的空值:

>>> NoneType
NameError: name 'NoneType' is not defined
>>> type(None)
NoneType

None也不能理解为空字符'',因为空字符的类型是字符串:

>>>type('')
<class ''str'>

虽然表示空,但None是一个具体的Python对象,这和null含义不一样。

在Python中返回None:

>>> def has_no_return():
... pass
>>> has_no_return()
>>> print(has_no_return())
None

你可以使用 Python 的标识函数id()检查 None 的唯一性,它返回某一对象的唯一标识符,如果两个变量的 id 相同,那么它们实际上指向的是同一个对象:

>>> NoneType = type(None)
>>> id(None)
10748000
>>> my_none = NoneType()
>>> id(my_none)
10748000
>>> another_none = NoneType()
>>> id(another_none)
10748000
>>> def function_that_does_nothing(): pass
>>> return_value = function_that_does_nothing()
>>> id(return_value)
10748000

在Python中,None的用处有很多,比如作为变量初始值、作为函数默认参数、作为空值等等。

变量初始值:

>>> print(bar)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'bar' is not defined
>>> bar = None
>>> print(bar)
None

函数默认参数:

def bad_function(new_elem, starter_list=[]):
starter_list.append(new_elem)
return starter_list

空值:

>>> class DontAppend: pass
...
>>> def good_function(new_elem=DontAppend, starter_list=None):
... if starter_list is None:
... starter_list = []
... if new_elem is not DontAppend:
... starter_list.append(new_elem)
... return starter_list
...
>>> good_function(starter_list=my_list)
['a', 'b', 'c', 'd', 'e']
>>> good_function(None, my_list)
['a', 'b', 'c', 'd', 'e', None]

总得来说,None是一个对象,而null是一个类型。

Python中沒有null,只有None,None有自己的特殊类型NoneType。

None不等于0、任何空字符串、False等。

在Python中,None、False、0、””(空字符串)、、()(空元組)、{}(空字典)都相当于False。

责任编辑:赵宁宁 来源: Python大数据分析
相关推荐

2023-05-26 16:38:38

2022-03-17 05:42:05

__init__Python

2021-10-27 08:54:11

Pythonencodeencoding

2021-04-26 07:51:00

JavaScript方法函数

2023-03-02 08:48:43

Linuxsubshell

2010-06-29 13:58:17

SNMPMIB

2022-09-26 12:46:02

Pythonelf

2023-03-28 07:03:15

gRPCMetadata

2021-12-03 18:29:31

GoAny 泛型

2022-06-29 08:37:03

事件循环JS 语言

2019-05-20 10:58:40

物联网IOT技术

2022-07-28 08:34:59

事件委托JS

2022-05-17 07:36:38

CSSBFC前端

2023-03-01 09:49:23

2021-01-07 07:18:32

PythonEAFPLBYL

2020-08-02 19:55:46

Python编程语言技术

2010-09-17 10:24:47

SQL中IS NULL

2023-10-11 08:29:54

volatileJava原子性

2021-06-11 10:33:14

MySQLPidSocket

2009-06-09 22:11:44

JavaScriptObject
点赞
收藏

51CTO技术栈公众号