news 2026/10/7 10:06:29

None与空字符串的本质区别解析

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
None与空字符串的本质区别解析

该内容的参考来源是发表在CSDN博客平台上的文章, 这篇文章的主题是关于None与空字符(即NULL)之间的区别。

第一步, 我们需要把对象的概念搞清楚。

在这个当中, 万物都是对象, 所有的操作都是对着对象进行的。那么, 什么叫做对象呢? 数字 5 是一个 int 类型的对象, 空的字符串 '' 是一个 str 类型的对象, 异常本身也是一个对象。如果说得比较抽象一点, 人来说是一个对象, 猫来说是一个对象, 狗来说也是一个对象。

关于某个具体对象, 从实际角度来看, 它自身是具备两个主要方面的特征的:

属性:去描述它的特征

这个方法是这样的, 也就是它拥有着的那些具体的行动方式。

因此, 一个对象是由它的属性和它的方法来构成。其实, 方法也属于一种属性, 只是这种属性与用于存储数据的数据属性有着明显的不同, 它是一种可以被调用执行操作的特性。

所谓的类, 就是把具有相同属性和方法的对象进行归类, 也就是所谓的那个class这个东西。通过使用一个类, 我们可以去创建出多个对象实例, 比如像人、猫、狗这些, 他们其实都可以归属于哺乳动物这个类里面。

类实际上是对象的一种抽象化的表达模式, 而对象则是类的具体实例化表现。类它并不用来代表那些非常具体的事物, 而对象是用来表示那些具体的事物的。

类这个概念, 它本身是存在有属性和方法这两个成分的。

数据类型这个东西, 它本身也是一个对象。

实际上,是在进行面向对象程序设计的时候, 才会有对象这种概念存在的, 而在进行面向过程型程序设计的时候, 我们讨论得最多的内容, 其实是关于数据类型的。

它所提供的最基本的这些个数据类型, 大致上呢, 就是包括那一个布尔型, 还有那个整型, 再有一个就是浮点型, 紧接着又是字符串这一类, 此外呢还有列表, 然后还有元组, 随后呢又牵扯到集合这个概念, 最后再加上字典等等这样的东西。

从某种角度去观察的话, 整个数据类型这一块内容, 也可以被大家看作是相当于编程概念中的一个类。与此同时, 这其中的哪一种具体数据类型, 都会体现为一个个具体的对象存在, 并且, 这些对象各自还具备着属于自己的那些属性还有方法。

只要弄明白前面提到的那些概念, 那么接下来想要搞清楚None还有Null之间的不同点, 这就不是一件困难的事情了。

1)是不同的数据类型

这句话是在讲, 那个值它是一个空的对象,空的值它是里面一个比较特殊的值, 大家是用None来表示的, 注意, None它不能给大家理解为是0, 为啥?

因为0这东西它是有意义的东西, 而None它是一种特殊的空值, 咱们是可以将None赋值给任何变量的, 同时, 咱们也可以给那些等于None值的变量去重新赋值。

In[4]: type('')

Out[4]: str

字符型

2)在进行判断操作的过程中, 所有的情况全部都是False, 因此并没有进行打印的操作。

a =None

ifa:

print(1)

b =''

ifb:

print(1)

3)属性不同

这个

函数会把参数所属的属性还有方法的列表给返回出来, 如果这个参数里头是包含了名为

的方法的, 那么这个被提到的这一方法就是会被调用处理的, 要是说参数内并不含有那个叫

的方法存在的话, 这个时候该过程将会尽可能地最大程度上将关于参数的各项信息全都收集一遍。

dir(None) ['__bool__', '__class__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__gt__', '__hash__', '__init__', '__le__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__'] dir('') ['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/10/7 10:06:28

万能代码行数统计脚本,3秒搞定期末作业

一到大学学期课程快要结束的那段时间的时候, 你几乎可以肯定说, 绝大多数那些计算机专业同学、软件工程专业同学还有电子信息相关专业的那些学生朋友们, 基本上肯定会碰到一个同样的特别让人头痛的大麻烦, 这个麻烦就是关于课程里面那个大型作业任务的字数啊什么的, 还有他们写…

作者头像 李华
网站建设 2026/10/7 10:05:39

ponytail技术解析:从基础概念到工程应用

我无法根据当前输入生成符合要求的博文。原因如下:项目标题仅为“ponytail”,这是一个英文单词,直译为“马尾辫”,属于常见发型术语;项目正文为空;关键词为空;摘要描述为空;所谓“相…

作者头像 李华
网站建设 2026/10/7 10:03:44

C#实验室自动化控制系统实战:串口通信深度封装+有限状态机 实现实验全流程无人值守

在高校实验室、药企研发部门做过实验自动化的同行应该都有体会:离心机、移液器、恒温摇床这些设备大多还是单机人工操作,批量重复实验不仅耗人耗时,还很容易因为人为操作时差、参数偏差导致实验结果波动。尤其是离心、孵育这种动辄几十分钟的步骤,人得守在旁边卡点切换工序…

作者头像 李华
网站建设 2026/10/7 10:02:57

典型死锁问题:从复现、定位到预防的完整实践指南

简介:针对操作系统与并发编程学习者,压缩包收录了三个经典死锁案例:哲学家问题、生产者-消费者问题以及管道通信问题。每个案例均提供一份可运行的C源码,通过模拟并发执行场景,直观展示资源竞争、循环等待等死锁产生条…

作者头像 李华
网站建设 2026/10/7 10:02:51

Okbiye 开题报告模块深度测评|搞定论文开题不再头疼

前言 开题报告是毕业论文的第一道关卡,也是很多应届生最先遇到的难题。开题不是简单写一段文字,需要确定研究选题、梳理国内外研究现状、明确研究目的与意义、设计研究内容、规划技术路线,还要拟定参考文献。开题一旦逻辑不通、选题过大或没…

作者头像 李华