Python中的null是什么?

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

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

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

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

Python 复制代码
>>> NoneType
NameError: name 'NoneType' is not defined
>>> type(None)
NoneType

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

python 复制代码
>>>type('')
<class ''str'>

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

在Python中返回None:

python 复制代码
>>> def has_no_return():
...     pass
>>> has_no_return()
>>> print(has_no_return())
None

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

Python 复制代码
>>> 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的用处有很多,比如作为变量初始值、作为函数默认参数、作为空值等等。

变量初始值

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

函数默认参数

python 复制代码
def bad_function(new_elem, starter_list=[]):
    starter_list.append(new_elem)
    return starter_list

空值

python 复制代码
>>> 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。

相关推荐
程序猿编码13 分钟前
两张 3090 扛 27B:Qwen3.8-27B 大模型 DFlash2 加速版生产级落地
开发语言·gpt·深度学习·神经网络·大模型·qwen
welfare96222 分钟前
新号别搞:内存管理+模板初阶+STL简介
开发语言·c++
隐擎fox34 分钟前
解构无感人机验证底层机制:行为生物轨迹采样、环境评分模型与自动化对抗实战
自动化测试·python·网络协议·tcp/ip·网络爬虫
敲代码的瓦龙36 分钟前
Jetpack?ViewModel!!!
android·开发语言·kotlin·android-studio
白远山39 分钟前
智慧场馆解决方案软件开发实战:从架构设计到落地部署指南
java·开发语言·架构·需求分析
haidao0311 小时前
氙灯光源技术特性及其在光催化实验中的标准化应用研究
人工智能·python·能源
IT笔记1 小时前
Rust 迭代器多级链式调用执行顺序笔记
开发语言·笔记·rust
用户0332126663671 小时前
使用 Python 设置 Excel 行列自适应 【代码示例】
python·excel
Ticnix1 小时前
RAG 的坑不在检索,在"对齐":pgvector 实战手记
python·agent·全栈
kyrie_sakura1 小时前
python学习笔记14 -- FastAPI
笔记·python·学习·fastapi